如何使用osm-postgis查询某个经度/纬度周围的所有商店?

时间:2015-08-12 14:51:12

标签: postgresql openstreetmap postgis

我使用工具osm2pgsql -s modus将慕尼黑城市地图(从openstreetMap)加载到postgis

现在我怎样才能以最有效的方式让所有商店在100米范围内(a,b)说明某一点?

我知道它就像是

select name, shop
from planet_osm_point
where ST_DWithin(? ,ST_Point(a,b):geometry, 100)

非常感谢

1 个答案:

答案 0 :(得分:0)

您的查询已经是查询所需数据的正确有效方法。

您只需要进行一次调整:函数St_Point返回没有SRID的几何体(顺便说一下,不需要转换为几何体),但必须设置SRID,以避免错误:

  

错误:在具有不同SRID的两个GEOMETRIES上操作

使用postgis函数St_SetSrid设置srid:

ST_SetSrid(ST_Point(a, b), srid)

另见St_SetSrid

如果使用默认选项运行osm2pgsql,则srid应为900913:

SELECT name, shop
FROM planet_osm_point
WHERE ST_DWithin(way ,ST_SetSrid(ST_Point(a, b), 900913), 100);

有关srid和空间参考的更多信息,请参阅https://en.wikipedia.org/wiki/SRIDhttp://spatialreference.org

关于SRID 900913:https://en.wikipedia.org/wiki/Web_Mercator