我用osm2pgsql检索了europe.osm数据库。现在我尝试利用它。 有没有办法让这个州,国家,地区从城镇小村庄或城市这样的方式获得?
修改
http://wiki.openstreetmap.org/wiki/Nominatim
https://github.com/twain47/Nominatim
数据库osm格式:
http://download.geofabrik.de/osm/europe/
这是数据库架构:
http://wiki.openstreetmap.org/wiki/Osm2pgsql/schema
答案 0 :(得分:1)
好吧,我没有下载你的数据,但我已经在我的数据库中加载了几乎所有拉丁美洲的openstreetmaps数据,我相信它会这样做。
这是最近的城市状态的一个例子:
select distinct on (a.name)
a.name as city,
b.name as state,
min(St_Distance(b.way, a.way)) as d
from planet_osm_point as a,
(SELECT name, way, place from planet_osm_point WHERE place='state') as b
where a.place='city' group by 1,2 order by 1 asc;
但这不准确,假设你可以用多边形表做更好的猜测:
select a.name as city,b.name as state,b.place
from planet_osm_point as a, planet_osm_polygon as b
where St_Contains(b.way, a.way)
and a.place='city'; -- and b.place='state' -- my polys table aren't tagged properly so I ignored polys.place
希望它有效:)。
答案 1 :(得分:1)
我认为你有一个完整的Nominatim安装,如installation page所述,而不仅仅是osm2pgsql导入。
直接对数据库执行SQL查询有点牵扯。通过将反向请求直接发送到本地安装,您可以更轻松地获取管理信息。如果您拥有自己的OSM ID,请发送以下内容:
http://your.local.nominatim.server/reverse?osm_type=W&osm_id=并处理返回的XML。
如果您仍想沿着SQL路走下去,请查看placex和place_addressline表。前者包含所有OSM对象,后者包含它们之间的关系。