【问题标题】:Get list of all city/place names in a country using Nominatim/OpenStreetMap使用 Nominatim/OpenStreetMap 获取一个国家/地区所有城市/地名的列表
【发布时间】:2014-04-27 02:00:11
【问题描述】:

我已经设置了自己的 OpenStreetMap 服务器(数据库是 PostGis),并且我正在使用 Nominatim 进行地理编码以及从地址到坐标或坐标到地址的转换。我需要从一个国家/地区获取所有地名(城市、城镇、村庄等)的列表,但我仍然无法理解数据库结构。任何想法如何做到这一点?

我知道还有其他解决方案(GeoNames 或其他可用数据库),请理解我不想使用它们,我只需要使用 OSM 数据库和/或 Nominatim 数据库即可。

【问题讨论】:

    标签: openstreetmap postgis nominatim


    【解决方案1】:

    您需要下载您感兴趣的 OSM 数据并使用 osm2pgsql 将其加载到 PostGIS。 (不确定你是否已经这样做了)

    然后你只需运行查询:

      select name from planet_osm_point where place in ('city','town','village');
    

    不能保证数据在偏离过程中是完整的,因为标记是以众包方式完成的。

    【讨论】:

    • 是的,我已经使用过 osm2pgsql。如何将结果限制在一个国家/地区?
    • 您可以从download.geofabrik.de下载单个国家的OSM数据
    • 另外,您可以找到您想要为其查找城市的国家或地区的 shapefile(OSM 肯定有),在 Postgis 中将它们作为几何类型加载,然后执行 ST_Intersects(region,way) (方式是planet_osm_point中的几何)。
    • 这不是我希望它存在的简单方法。我会检查 Nominatim 数据库,也许我可以从中得到一些东西。如果不是,加载边界和 ST_Intersects(region,way) 是最好的解决方案。
    • 因为我已经安装了 osm2pgsql 和 Nominatim,我不想为了获取城市列表而再次下载和安装整个 OSM 数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2011-04-28
    • 2017-06-30
    • 2015-06-12
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多