我已经设置了自己的OpenStreetMap服务器(数据库是PostGis),并且我使用Nominatim进行地理编码和从地址到坐标或坐标到地址的转换。我需要从一个国家获得所有地名(城市,城镇,村庄等)的列表,但我仍然无法理解数据库结构。任何想法如何做到这一点?
我知道还有其他解决方案(GeoNames或其他可用的数据库),请理解我不想使用它们,我需要通过使用OSM数据库和/或Nominatim数据库来实现这一点。
答案 0 :(得分:4)
您需要下载您感兴趣的OSM数据并使用osm2pgsql将其加载到PostGIS。 (不确定你是否已经这样做了)
然后你只需运行查询:
select name from planet_osm_point where place in ('city','town','village');
不保证数据不会完整,因为标签是以众包方式完成的。