gis - 如何从 OpenStreetMap 方式中去除水?

标签 gis openstreetmap

我想从 OpenStreetMap 获取旧金山的轮廓。有一个 relation for SF ,但它包含大量的水,这会使城市居民无法辨认:

Outline of SF from OSM

在 OSM 中,旧金山有更好的多边形吗?海岸线有没有办法,如果有,我如何找到它们并从行政边界中减去它们?

最佳答案

我可以使用 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

然后我下载了land polygons file 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

这将生成一个带有旧金山陆地边界的 GeoJSON 文件 ( sf-land.json ):

SF boundary, snug to the coastline

我不确定法拉隆群岛去了哪里,但这基本上似乎有效!

除了第一个 ogr2ogr 之外,每一步都很快。命令,它将陆地多边形剪辑到包含旧金山的边界框。这在我的 MacBook Pro 上花了大约 2 分钟。这种方式比将 sf.polygons.json 直接作为 -clipsrc 传递要快得多。第一个命令的参数。

关于gis - 如何从 OpenStreetMap 方式中去除水?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297811/

相关文章:

从草地 gis 导出多个栅格

javascript - map 上的 MouseClick 事件并使用 OpenLayers 2 使圆圈出现

google-maps - OpenStreetMaps - tiles - 大量使用的性能问题

iphone - iPhone 的缓存/离线 map ?

gis - Osmosis - 从 OSM 数据中删除业务以供地理编码使用

python - 尝试使用 Python 请求向 OpenStreetMap Overpass API 发送 xml 文件

python - 安装 shapefile/shapelib 未通过 conda 或 pip 找到

mysql - 无法将多边形插入 mysql 数据库

java - 如何使用 Java 开发 LBS/GIS 应用程序概述

java - 使用 osm 文件或 osm 预下载图 block 的开源 Java map 查看器