shp文件转SUMO可读的xml格式

您所在的位置:网站首页 shp文件转kml方式_dangga的博客 shp文件转SUMO可读的xml格式

shp文件转SUMO可读的xml格式

2024-01-16 20:53| 来源: 网络整理| 查看: 265

这周末需要实现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文件



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3