我使用http://www.openstreetmap.org/导出实用程序生成一个区域的。osm (xml地图文件),稍后用它生成一个。map文件
"您请求的节点数过多(限制为50000)。要么请求较小的区域,或使用planet.osm"
如何生成超过50,000个节点的地图?如何使用planet.osm吗?S
如消息所示,如果需要处理大量数据,通常有两种选择:
- 生成较小的请求,然后在处理之前合并它们(通常这可能不是理想的方法)。
- 下载星球。osm,它是OpenStreetMap 整个的数据库转储,并对其进行处理。由于它是一个巨大的文件(几个GB),处理这个文件的第一步通常是提取你感兴趣的部分,并且已经有预处理的提取可用(例如在Geofabrik上)。
我最喜欢的方法是使用Overpass API。方法如下:
在http://www.overpass-api.de/query_form.html的查询表单中输入类似的内容,将四个边界s、n、w和e更改为所需数据的南、北、西和东边缘。(使用OpenStreetMap导出选项卡拖出矩形并获取边界)
<osm-script timeout="10000" element-limit="1073741824">
<union into="_">
<bbox-query into="_" s="52" n="52.4" w="4.8" e="5"/>
<recurse from="_" into="_" type="up"/>
<recurse from="_" into="_" type="down"/>
</union>
<print from="_" limit="" order="id"/>
</osm-script>
我直接从一个很好的权威那里得到了这个方法:Overpass的开发人员之一。我成功地使用了它。一个附加条件:它递归两次,以获得与矩形重叠的关系的所有成员,然后获得这些方式中的所有点。
脚本将超时设置为10,000秒,并将元素限制设置为适当的大数值。
有几种方法可以从OpenStreetMap下载原始地图数据,从通过API下载小块(你需要更大的区域)到下载整个地球(比你需要的数据更多)。
在中间有下载国家或城市预先准备的文件的选项(这更像)。或者正如graham asher指出的那样,OverpassAPI是一个灵活的API,适用于更大的区域。
我有一个工具"XAPI查询生成器",它可以很容易地找出一个老式的XAPI/OverpassAPI URL(现在有点过时了)或一个Osmosis命令。
一旦您获得了所需的数据区域,如bremen文件。osm…
来自MapsForge文档:
"
使用XML格式写入Bremen的地图文件,并写入/tmp/Bremen文件。map,设置map起始位置为Bremen HBF:
$ bin/osmosis --rx file=../data/bremen.osm --mapfile-writer file=/tmp/bremen.map map-start-position=53.083418,8.81376
"
似乎很清楚,但也许你被卡住了。你安装了osmosis并且用地图编辑器插件安装了吗?