如何基于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));
  }
相关推荐
Lost of 程序猿8 分钟前
建造者模式实战:告别“十参数构造函数“的数据导出任务
后端·设计模式·c#·asp.net
蓝速科技8 分钟前
政务自助终端信创选型与无人值守落地方案
android·大数据·数据库·人工智能·科技·技术分享·政务
粤鼎恒业24 分钟前
惠州工厂电子料回收厂家推荐:从交接单反推筛选标准
大数据·数据库·算法·硬件架构·硬件工程·pcb工艺·材料工程
ShineWinsu34 分钟前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
SelectDB44 分钟前
ELK 做不了的分析,我用 Doris 物化视图补上了:配置、开关与四个排错现场
大数据·数据库·数据分析
SelectDB1 小时前
Agent 日志检索慢、存储还贵?search() + VARIANT 的落地命令和几个当场踩出来的问题
大数据·数据库·数据分析
SelectDB1 小时前
ClickHouse 存日志踩过的并发坑:压测脚本、检索写法与排错命令
大数据·数据库·数据分析
龙腾AI白云1 小时前
AI微调技术:让通用大模型精准适配垂直行业
数据库·人工智能·机器学习·flask·scikit-learn
SelectDB1 小时前
NESTED 怎么搜 VARIANT 里的嵌套数组:一份可直接复制的统一引擎实战笔记
大数据·数据库·数据分析
hasty1 小时前
返回一个文件,为何越过整个目录?Khoj 静态资源路由的安全边界
数据库·安全