使用OpenStreetMapX结合LightGraphs.jl构建电网图网络的问题咨询
OpenStreetMapX结合LightGraphs构建电网网络的问题解答
1. 电网类OSM数据适配与roadways字段元数据混杂问题
- OpenStreetMapX的原生设计面向道路交通网络解析,默认会自动识别OSM中携带
highway标签的道路要素归类存储,但本身不会对非道路类标签的要素做强制过滤——只要是OSM文件内存在的节点、路径要素,都会被完整加载到返回的MapData结构体中。虽然没有针对电网类要素的原生解析封装,但底层数据存储完整,只要手动筛选对应标签的内容,完全可以支撑电网网络的构建,无需更换其他OSM解析工具。 - 你遇到的“仅筛选电网数据却返回道路类元数据”的问题,本质是Osmosis标签过滤规则配置遗漏:Osmosis的多标签过滤逻辑会默认保留与电力要素存在节点关联引用的道路way元数据,这类带
highway标签的要素会被OpenStreetMapX的默认解析逻辑自动识别为道路,存入roadways字段。 - 解决方法:加载OSM数据时可通过参数自定义过滤规则,调用
get_map_data时传入roadways_filter=w -> haskey(w.tags, "power"),即可强制过滤非电力类路径,避免道路元数据混杂。
2. deData.e字段说明与MetaGraph构建实现思路
deData.e不是通用邻接表结构:它是OpenStreetMapX为道路交通网络生成的边集合,仅存储roadways字段下道路要素的节点连接关系与路径ID映射,无法直接识别电力线路的拓扑连接,不能直接用于电网图构建。- 结合LightGraphs构建带属性MetaGraph的可落地步骤:
- 从MapData的
ways字典中筛选所有携带power标签的路径,这类路径就是电网拓扑的边原始数据,其内部存储的节点序列即为电网的拓扑连接顺序 - 提取所有电力路径关联的唯一节点,做从1开始的连续整数ID重映射,同步把节点属性(经纬度、是否为变电站节点、对应
power标签值等)存入节点元数据 - 遍历每一条电力路径,沿节点序列依次连接相邻节点生成图边,把边属性(电压等级、线路类型、标称容量、所属运营商等存储在路径tags中的字段)存入对应边的元数据
- 将整理完成的节点、边与对应元数据传入和LightGraphs生态兼容的MetaGraphs.jl,即可生成带完整属性的电网网络
- 从MapData的
- 补充提示:MapData结构体中的
ways字段会完整存储所有解析到的OSM路径,不会因为过滤规则丢弃电力类要素,无需重新解析OSM文件即可完成纯电网拓扑提取。
内容的提问来源于stack exchange,提问作者imantha
相关产品推荐
相关产品推荐

