我想从OpenStreetMap获取旧金山的大纲。有一个relation for SF,但它包含了大量的水,这使得这个城市的居民无法识别:
OSM中旧金山有更好的多边形吗?是否有海岸线的方法,如果有,我怎么能找到它们并从行政边界中减去它们?
答案 0 :(得分:3)
我可以使用osmtogeojson和ogr2ogr执行此操作。首先,我抓住旧金山关系的完整OSM XML并将其转换为GeoJSON:
$ curl 'http://www.openstreetmap.org/api/0.6/relation/111968/full' > sf.osm
$ osmtogeojson sf.osm > sf.json
然后我使用this script删除了非面要素:
$ only_polygons.py sf.json > sf.polygons.json
然后我下载了Tordanik引用并运行的land polygons file:
$ ogr2ogr land_polygons.sfbbox.shp -clipsrc -122.56 37.68 -122.27 37.939 land-polygons-complete-4326/land_polygons.shp
$ ogr2ogr -f GeoJSON sf-land.json -clipsrc sf.polygons.json land_polygons.sfbbox.shp
这会产生一个带有旧金山陆地边界的GeoJSON文件(sf-land.json
):
我不确定Farallon群岛的去向,但这基本上似乎有效!
除了第一个ogr2ogr
命令之外,其中的每一步都很快,该命令将地面多边形剪辑到包含旧金山的边界框。我的MacBook Pro上花了大约2分钟。这种方式比直接将sf.polygons.json作为-clipsrc
参数传递给第一个命令快得多。
答案 1 :(得分:1)