如何使用osm-postgis查询某个longitude/latitude附近的所有店铺?
How to query all shops around a certain longitude/latitude using osm-postgis?
我使用工具 osm2pgsql -s modus 将慕尼黑城市地图(来自 openstreetMap)加载到 postgis 中
现在我怎样才能以最有效的方式让所有商店都围绕某个点,比如 (a,b),在 100 米以内
我知道是这样的
select name, shop
from planet_osm_point
where ST_DWithin(? ,ST_Point(a,b):geometry, 100)
非常感谢
您的查询已经是一种正确高效的方式来查询您需要的数据。
你只需要一个调整:函数St_Point
returns一个没有SRID的几何体(顺便说一下,不需要转换为几何体),但是必须设置SRID,以避免错误:
ERROR: Operation on two GEOMETRIES with different SRIDs
使用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/SRID and http://spatialreference.org
关于 SRID 900913:https://en.wikipedia.org/wiki/Web_Mercator
我使用工具 osm2pgsql -s modus 将慕尼黑城市地图(来自 openstreetMap)加载到 postgis 中
现在我怎样才能以最有效的方式让所有商店都围绕某个点,比如 (a,b),在 100 米以内
我知道是这样的
select name, shop
from planet_osm_point
where ST_DWithin(? ,ST_Point(a,b):geometry, 100)
非常感谢
您的查询已经是一种正确高效的方式来查询您需要的数据。
你只需要一个调整:函数St_Point
returns一个没有SRID的几何体(顺便说一下,不需要转换为几何体),但是必须设置SRID,以避免错误:
ERROR: Operation on two GEOMETRIES with different SRIDs
使用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/SRID and http://spatialreference.org
关于 SRID 900913:https://en.wikipedia.org/wiki/Web_Mercator