shp文件转SUMO可读的xml格式

这周末需要实现shp自动转换为SUMO路网文件,本文浅浅记录一下过程中遇到的挫折。

1、shp文件的获取

参考了《如何获取免费的shp文件》,在国家地理基础信息中心网站注册账号、填写用途等 获得了包含南半个北京城的shp文件。

在后面尝试发现用它无法转换成xml后,又换了一些shp文件的源进行尝试,如在这里找到的bbbike,我下载了北京的文件包再次尝试,但仍然失败。

我开始怀疑是上述源有问题(可能本就不包含足以转换为SUMO可读文件的信息),迫于时间压力,决定先用osm转换为shp,再进行后续操作,实践证明该路可行。

最开始找到的转换工具需要付美刀。一番搜寻后,最终采用了在这里找到的osm转shp在线转换工具。

2、shp转osm

我本有点不信邪,看sumo的文档只是说“简单地调用netconvert想把shp转xml几乎总是失败的”,就试了下把shp直接丢给netconvert,啊哈,果然不行。。参考《将shp文件转化为osm文件,并导入到sumo中建立路网》,我毅然决然走上了shp→osm→net.xml的路线。

这个wiki百科的介绍很全:Software comparison/Import a shapefile - OpenStreetMap Wiki

首先尝试了Merkaartor(github在这里),用Import using GDAL确实可以打开shp文件(虽然啥都看不到),也确实可以导出osm文件,但在下一步转换为xml过程中总是报错(写博客时又试了几次,还是达咩)。

随后下载了JOSM,参照shp转osm安装了插件。这软件挺强大的,各种路网文件都能打开并另存为osm文件。

3、osm转xml (by netconvert)

最开始用南半北京的文件,照netconvert文档 依葫芦画瓢地在命令行中输入命令:

netconvert --osm-files net.osm --output-file trial.net.xml

就可以成功收获报错:

Warning: The referenced geometry information (ref='-5') is not known
Warning: The referenced geometry information (ref='-6') is not known
Error: No nodes loaded.
Quitting (on error).

换了个bbbike下载来的文件,结果Warning得更多了。。虽然看不懂,也搜不到原因,但我大受震撼并痛定思痛决定换个shp→osm的软件试试,结果仍一样。。当时我试过上面提到的merkaartor和JOSM之后打算试试ogr2osm。运行提示它需要git,我就装了个git;再运行提示它需要gdal库,于是我pip尝试安装,结果安装不了 说是需要MS VC++ 14.0,我安装好了 还是不行......在无语之际,我关闭了电脑并摆烂一天(干另一个活去了)

第三天放空脑子回到这个任务上,决定使用osm转出来的shp文件。一通操作之后发现还是报上述错误,俺没有气馁 再次搜了下报错信息,在这篇博客的提醒下发现netconvert需要输入绝对路径,改正之后,它成了!成了!!

netconvert --osm-files C:\Users\92147\Desktop\lines.osm -o C:\Users\92147\Desktop\a.net.xml

顺便进行一番对照实验后得出结论:只有osm→shp的lines.shp文件可以通过netconvert成功转换(points.shp则不行)

附:

shp文件介绍以备日后查看:https://en.wikipedia.org/wiki/Shapefileshp格式详解(一)_flowerspring的博客-CSDN博客_shp文件

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,作为AI语言模型,我没有实际的时间和能力来完成编程任务。但是,我可以提供一些可能有用的信息。 首先,SHP文件是GIS中的一种文件格式,而SUMO是一个用于交通仿真的软件工具,可以用于模拟道路、车辆和行人的运动。因此,将SHP文件换为SUMO可读的NET.XML文件,实际上是将地理信息换为交通仿真模型的过程。 有一些开源的工具可以用来完成这个任务,如GDAL和SUMO-TOOLS。GDAL是一个用于地理数据处理的库,可以读取和换各种GIS格式,包括SHP文件SUMO-TOOLS是一个SUMO的扩展包,提供了各种工具和脚本,可以将GIS数据换为SUMO的XML格式。 下面是一个使用GDAL和SUMO-TOOLS的示例: 1. 安装GDAL和SUMO-TOOLS 下载GDAL和SUMO-TOOLS的安装包,并按照官方文档进行安装。 2. 将SHP文件换为OSM文件 使用GDAL的ogr2osm工具将SHP文件换为OSM文件。命令如下: ``` ogr2osm.py input.shp -o output.osm ``` 其中,input.shp为输入的SHP文件,output.osm为输出的OSM文件。 3. 将OSM文件换为SUMO的NET.XML文件 使用SUMO-TOOLS中的osmNetConvert工具将OSM文件换为SUMO的NET.XML文件。命令如下: ``` osmNetConvert --osm-files input.osm -o output.net.xml ``` 其中,input.osm为输入的OSM文件,output.net.xml为输出的NET.XML文件。 以上是一个简单的示例,实际上还需要根据具体的数据格式和需求进行调整和优化。希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值