本文介绍如何从OpenStreetMap获取地图,并转换成符合The ONE仿真器使用的wkt
格式。
1. 从OpenStreetMap获取地图
打开OpenStreetMap官网,相应操作如下图:
点击Export
后,跳转到另一个页面,理论上是开始下载osm
数据,但我试了几次,一直都没反应。没关系,把网址复制下来,用wget
工具下载,如下(-O
后面是输出的文件名):
wget -O toulouse.osm "http://api.openstreetmap.org/api/0.6/map?bbox=1.3637,43.5464,1.5209,43.6366"
这样就得到osm
数据了。
2. 转换成wkt格式
osm
数据是xml
格式,已有人写了一个工具叫osm2wkt,可以将osm
转换成wkt
格式。点击这里下载jar
包,运行下面命令,即可完成转换:
java -jar ./osm2wkt.jar toulouse.osm
osm2wkt使用方法如下:
generate+cleanup from osm: >> java -jar ./osm2wkt.jar mapfile.osm cleanup from wkt : >> java -jar ./osm2wkt.jar mapfile.wkt options: -o outputfile - write output to given file -a - append to output file -t X Y - translate map by x=X and y=Y meters
PS:实际上,我没转换成功,osm2wkt
先提示缺少</img>
标记,加上去之后,还提示只处理osm
格式而不能是html
格式。
3. 讨论
OpenStreetMap相当于是地图的元数据,如果过滤出自已想要的数据,这才是难点。比如我想过滤出公共交通的行走路线,还有我如何将一个城市抽象成一个点?请指点!
博主,您好,我按您的方式做也遇到了:提示只处理osm格式而不能是html格式。请问您找到解决方案了吗?
那会我并没有深入去找解决方法,后面我用的是城市公共交通网络的调度数据(GTFS)作为数据集。
请问地图的比例尺是多少呀,打开WKT文件,发现里面都是这种东东:LINESTRING (2548604.5879469537 6676020.901250458, 2548417.518483455 6676020.901250458), 这些数字明显不是经纬度,那么是什么呢?
建议你查看WKT,比如这里:http://www.geoapi.org/2.0/javadoc/org/opengis/referencing/doc-files/WKT.html。摘抄如下:
UNIT
https://github.com/julianofischer/osm2wkt楼主给的新链接可以用。
我刚开始也无法转换,一直停在转换界面。后来把地图取得比较小,就成功了,可以正常运行了。大地图要等很久很久很久吧。
文中osm2wkt工具的链接坏了,新链接在这里:
https://github.com/julianofischer/osm2wkt
您好,我想请教您一下,我可不可以用openjump自己画一个地图,输出为wkt格式用在ONE里面?
The ONE支持wkt格式,但你得确保图是连通的。
Pingback: The ONE使用笔记:目录 | | Spark & Shine
你好,我下了openjump后 它只能用java1.8打开吗? 不能用低版本的 如1.6打开吗? 可以的话怎么修改啊
Java 1.5 + 都是可以的。话说,你安装遇到问题了?还是还没安装?
弄好了 修改了下环境变量就好了。 谢啦
哥 osm2wkt 下不到了呢 还有备份吗
我搜了下我的硬盘,没找到。不过你可以试下OpenJUMP GIS, http://www.openjump.org/,用该工具打开,再加存为wkt格式。
You can download osm2wkt from here, https://github.com/julianofischer/osm2wkt
大神,请教一下,我如何在这种A_offices.wkt文件中获取他的办公地点的坐标?我是想在办公区域设置静态节点。
你的意思是说,将A_offices.wkt每个POINT)设为一个静态的点?那么问题可以转化为:如何批量设置静态节点。请参考博文:http://sparkandshine.net/the-one-use-notes-batch-add-static-nodes/你所需要做的是写个脚本,把POINT转换成LINESTRING。