使用ST_Distance_Sphere和ST_GeomFromText获取距离

时间:2018-07-19 20:07:51

标签: postgresql distance postgis

我正在尝试使用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

我想做的就是获取距离,看起来其他人使用了类似的方法,并且对他们有用。

有什么线索吗?

1 个答案:

答案 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