如何基于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));
  }
相关推荐
阿正的梦工坊7 分钟前
【Rust】04-借用、引用与切片
java·数据库·rust
AOwhisky12 分钟前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
阿标在干嘛22 分钟前
政策平台的推送系统:消息队列、定时任务、AB测试的工程实践
服务器·数据库·ab测试
Upsy-Daisy32 分钟前
Hermes Agent 学习笔记 02:安装、配置与第一次运行
java·前端·数据库
Tongpao_SSDHDD1 小时前
希捷酷鹰ST6000VX008实测解析:中小安防监控高性价比存储方案
大数据·数据库·人工智能
深海潜水员1 小时前
【从零开始的C#游戏开发课程】- FarmStory1.0 日志系统和游戏资源的管理
游戏·c#·monogame
蓝鸟19741 小时前
Oracle超大DMP备份文件瘦身、日志精简、磁盘空间优化实战方案日志
数据库·oracle·数据库运维·生产运维实战·oracle避坑·磁盘空间优化·oracle日志清理
叶帆2 小时前
【YFIOs】用C#开发硬件之WiFi网络
开发语言·网络·c#
金融支付架构实战指南2 小时前
CQRS + 命令模式 + 事件驱动 + 数据库持久化
数据库·ddd·命令模式·领域驱动模型
sevenll072 小时前
DocKit agentic MongoDB GUI 客户端 - 用自然语言和你的数据对话
数据库·mongodb·nosql·agent·桌面客户端