一旦我需要从原始OSM数据中获取干净的城市子集(因为它是如此方便,紧凑且美观)。 令我惊讶的是,我没有找到现成的食谱,这就是为什么我花了些力气才能完成此任务的原因。
有鉴于此,我有责任分享自己的经验。

假设我想获取基希讷乌的子集(为什么?...那里很温暖,我的房子在那儿,我的母亲在那儿)
当然,我们对
Planet.osm并不感兴趣,但是有
geofabrik ,但是那里的行星被切成相当大的shmatka-
http://download.geofabrik.de/europe/moldova.html因此,城市边界在
原始数据中 。
很容易从关系中得到一个垃圾填埋场,我们可以手工完成,也可以使用任何合适的实用程序来完成,例如
这个 。
III ...现在
渗透作用开始
发挥作用 。
我们拥有摩尔多瓦所有地区的渗透和基希讷乌的范围,这足以从原始XML(OSM)文件获取该城市的站点:
osmosis --read-xml file="moldova.osm" --bounding-polygon file="kishinev.poly" --write-xml file="kishinev.osm"
同样,您可以从PBF(协议缓冲区二进制格式)文件中挖掘数据:
osmosis --read-pbf file="moldova.osm.pbf" --bounding-polygon file="kishinev.poly" --write-xml file="kishinev.osm"
您可以
在这里阅读更多有关渗透的
信息 。
好吧,需要立即在JOSM中打开完成的子集或将其导入到个人项目中!

UPD:
正如
zverik指出的那样,使用* osmium-tool *(在
扩展坞中 ),上述所有操作都将更加容易
1.下载国家数据集
2.从中提取城市边界
osmium getid -r -t moldova-latest.osm.pbf r1691801 -o kishinev-boundary.osm
3.从数据集中提取城市
osmium extract -p kishinev-boundary-with-tags.osm moldova-latest.osm.pbf -s simple -o kishinev.osm
注意flak
-s简单这是一种提取策略,其中只有三种:
1. -s
简单 -沿边界修整道路
2. -s
complete_ways-不修剪边界道路(
默认 )
3. -s
smart-提取边境道路依存关系
输出文件的格式由命令中的扩展名决定。
OSMIUM是一种非常强大,方便且有用的工具,
易于使用。