OpenStreeMap 有 Overpass API 来获取这些数据。它们提供了由节点、方式和关系组成的特定数据模型,您可以将其转换为点和其他几何图形,以及您习惯于操作的首选数据结构。
如果你想在 python 库的帮助下做到这一点,我最近实现了geohunter,它是这个数据模型到 geopandas 的GeoDataFrame(当今 python 中最常用的空间数据结构)的解析器。然后,您可以为 GeoJSON 或 shapefile 导出 GeoDataFrame 并通过简单调用将 gdf 导入到您的 java 应用程序中,to_file('points.geojson', driver='GeoJSON')
或者将 gdf 转储到 geojson 字符串中to_json()
。
您还可以将结果放入一个 mongodb,它有一个非常漂亮的 geojson 接口。
这是一个如何使用 geohunter 在 GeoDataFrame 中获取 OSM 数据的示例。
import geohunter
api = geohunter.osm.Eagle()
# Get the city df you want to analyze
city = api.get(bbox='(-8.02, -41.01, -3.0, -33.0)',
largest_geom=True,
name='Natal')
# Get some points from the map features available on OSM
poi = api.get(city,
amenity=['school', 'hospital'],
highway='primary',
natural='*')
要了解 OSM 可用的地图功能(数据类型),请参阅他们的文档。
geohunter 可能有一些错误来解析一些几何图形。如果它发生在您身上,请打开一个问题并让我们讨论它。