我正在尝试使用Postgis计算点之间的距离。我在表格中有(从纬度到经度)纬度和经度。我研究了一些代码,看起来像这样:
SELECT ST_Distance_Sphere(
(ST_GeomFromText('POINT(' || distance.sfg_long || ' ' || distance.sfg_lat || ')',4326)),
ST_GeomFromText('POINT(' || distance.plg_long || ' ' || distance.plg_lat || ')',4326))
FROM distance;
我收到此消息:
ERROR: parse error - invalid geometry
HINT: "POINT(SF" <-- parse error at position 8 within geometry
SQL state: XX000
我想做的就是获取距离,看起来其他人使用了类似的方法,并且对他们有用。
有什么线索吗?
答案 0 :(得分:0)
我怀疑您的查询中有错别字,或在经度列中有无效值。看到错误消息,难道是sfg_long中的值之一是以“ SF”开头的文本吗?
共享您的表设计和一些示例记录将帮助我们为您提供帮助。我要假设您的栏是文字。
我会尝试以下类似方法。 ST_POINT语法更清晰。
SELECT ST_Distancesphere(
st_setsrid(st_point(distance.sfg_long::numeric,distance.sfg_lat::numeric),4326),
st_setsrid(st_point(distance.plg_long::numeric,distance.plg_lat::numeric),4326)
) FROM distance
-- st_distance_sphere is deprecated since 2.2.0