如何基于C#读取.dot图论文件并和QuickGraph联动

需求

> 💡 基于C#语言,获取dot文件内图谱所包含的节点、边等信息 >

  • 获取到的节点、边等数据可以利用QuickGraph构建图,从而进行增删改查等操作

方法过程

  1. 在Visual Studio平台(版本越新越好)新建一个C#项目,然后利用NuGet程序库中分别下载并安装以下四个依赖包。

上图中,依赖库FSharpx.Core(1.8.41)是依赖库DotParser运行所需要的,但是VS平台上没有相关版本,只能通过网上搜索下载后再一次利用NuGet安装本地库的方式安装。FSharpx.Core(1.8.41)的下载网址是:https://www.nuget.org/packages/FSharpx.Http

  1. 按照以下代码即可读取dot文件并得到相关节点和边信息
csharp 复制代码
string dotFileContent = File.ReadAllText(@"D:\MyEssay\SecondValley\FaultReconstruct\FaultStudyData\QinglongMountain\Graph\strata2.dot");
GraphData graphData = DotParser.DotParser.parse(dotFileContent);
var edges = graphData.Edges;
int ctt = edges.Count;
var nodes = graphData.Nodes;
int ctt2 = nodes.Count;

DotParser读取dot文件时,要求文本内不应出现/、<等特殊字符,如果存在则需要删除后重新读取。

  1. 利用QuickGraph重新组织图即可
csharp 复制代码
  var graph22= new AdjacencyGraph<string, Edge<string>>();
  foreach (var item in nodes)
  {
      graph22.AddVertex(item.Key);
  }

  foreach (var edge in edges)
  {
      string sourceId = edge.Key.Item1;  // 源节点
      string targetId = edge.Key.Item2;  // 目标节点

      // 确保节点存在
      if (!graph22.ContainsVertex(sourceId))
          graph22.AddVertex(sourceId);
      if (!graph22.ContainsVertex(targetId))
          graph22.AddVertex(targetId);

      Edge<string> edge2 = new Edge<string>(sourceId, targetId);
      

      // 添加边
      graph22.AddEdge(new Edge<string>(sourceId, targetId));
  }
相关推荐
qinyia19 小时前
WisdomSSH解决MySQL频繁重启问题
数据库·mysql
松涛和鸣19 小时前
DAY42 SQLite3 : Dictionary Import and Data Query Implementation with C Language
linux·c语言·数据库·单片机·网络协议·sqlite
ptc学习者20 小时前
mysql 主从配置
数据库
飞天小蜈蚣20 小时前
django的模板渲染、for循环标签、继承模板
数据库·python·django
玩泥巴的20 小时前
如何设计易维护、低学习成本的飞书.NET SDK组件
c#·二次开发·飞书·roslyn
杨云龙UP20 小时前
SQL Server 2016通过SSMS(SQL Server Management Studio)图形界面完成创建用户和授权_20251230
运维·服务器·数据库
源代码•宸20 小时前
goframe框架签到系统项目开发(每日签到添加积分和积分记录、获取当月最大连续签到天数、发放连续签到奖励积分、实现签到日历详情接口)
数据库·经验分享·redis·中间件·golang·dao·goframe
YMatrix 官方技术社区21 小时前
时序 + 分析:YMatrix “智慧工厂“数据平台双方案详解
数据库·物联网·时序数据库·智能制造·数智工厂·ymatrix
熊文豪21 小时前
电科金仓数据库KingbaseES V9R2C13元数据处理详解
数据库·金仓数据库·电科金仓·kes
小画家~21 小时前
第四十三:redis 查找所有KEY应用方法
数据库·redis·bootstrap