【发布时间】:2016-03-21 21:59:09
【问题描述】:
我的表格有两个用于纬度和经度坐标的浮点列。
我想使用 PostGIS 的ST_DWithin 来查找距离给定点一定距离内的所有记录。
ST_DWithin 的签名期望前两个参数是几何或地理数据类型,所以我很确定解决方案是将 lat/lng 坐标转换为地理,但我无法让它工作。
以下是不起作用的:
SELECT *
FROM stops
WHERE ST_DWithin( ST_GeogFromText('SRID=4326;POINT(-77.09 38.89)'),
ST_GeogFromText('SRID=4326;POINT(' || stops.lng || ' ' || stops.lat || ')'), 10000.0)
我收到此错误:
错误:函数 st_geogfromtext(unknown) 不存在
第 1 行:SELECT * FROM 停止 WHERE ST_DWithin( ST_GeogFromText('SRID=...
我做错了什么?
【问题讨论】:
-
您需要删除浮动列并将它们替换为geography column。
-
我认为这个问题更适合 GIS SE 社区 (gis.stackexchange.com)。
-
@GilbertLeBlanc 你是说没有办法将 lat,lng 浮点数转换为 Geography 吗?
-
@MartinValgur 我的问题完全与编程有关。 GIS 的描述为
a question and answer site for cartographers, geographers and GIS professionals。看不出这怎么比 S.O. 更合适 -
是的,SO 将是正确的地方问。但事实证明,这个问题是一种误解。
标签: sql postgresql postgis