我想从 OpenStreetMap 获取旧金山的轮廓。与 SF有关系,但它包含大量的水,这会使城市居民无法识别:
OSM 中是否有更好的旧金山多边形?有没有办法找到海岸线?如果有的话,我如何找到它们并将其从行政边界中减去?
我能够使用osmtogeojson和ogr2ogr来做到这一点。首先,我获取了旧金山关系的完整 OSM XML 并将其转换为 GeoJSON:
$ curl 'http://www.openstreetmap.org/api/0.6/relation/111968/full' > sf.osm
$ osmtogeojson sf.osm > sf.json
Run Code Online (Sandbox Code Playgroud)
然后我使用此脚本删除了非多边形特征:
$ only_polygons.py sf.json > sf.polygons.json
Run Code Online (Sandbox Code Playgroud)
然后我下载了Tordanik 引用的土地多边形文件并运行:
$ 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
Run Code Online (Sandbox Code Playgroud)
sf-land.json
这会生成一个包含旧金山陆地边界的GeoJSON 文件 ( ):
我不确定法拉隆群岛去了哪里,但这似乎基本上有效!
除了第一个命令之外,每个步骤都很快ogr2ogr
,该命令将土地多边形剪辑到包含旧金山的边界框。在我的 MacBook Pro 上这大约需要 2 分钟。-clipsrc
这种方式比直接将 sf.polygons.json 作为参数传递给第一个命令要快得多。
归档时间: |
|
查看次数: |
1612 次 |
最近记录: |