【问题标题】:Postgis ST_Distance_Sphere giving about 1.7 too high resultPostgis ST_Distance_Sphere 给出大约 1.7 太高的结果
【发布时间】:2019-06-26 13:24:46
【问题描述】:

我是 Postgis 和空间方面的新手,我正在为非常简单的查询而苦恼。

我在places 中有两条记录用于测试,其中addressLocation 列是具有以下值的 POINT:

(51.122711,17.031819)
(51.122805,17.035522)

我正在尝试查询:

SELECT *
FROM places
WHERE ST_Distance_Sphere("addressLocation"::geometry, ST_MakePoint(51.122711, 17.033686)) <= 255;

51.122711, 17.033686 大约位于这两个点之间的中心,在谷歌地图上测量的距离约为 125 米和 128 米。

问题是(51.122805,17.035522)205 作为限制进入结果,而另一个以210 进入结果。

我正在查看 PostGIS 文档,但找不到任何关于这种不准确的解释。

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:

    PostGIS 中的坐标必须表示为经度/纬度,而在 Google 地图中则表示为纬度/经度。

    您的查询是计算也门的距离:

    Select ST_DistanceSphere(st_geomFromText('POINT(51.122711 17.031819)'),
    st_geomFromText('POINT(51.122711 17.033686)'));
     st_distancesphere
    -------------------
          207.60121386
    

    通过交换坐标,点在波兰,距离为:

    Select ST_DistanceSphere(st_geomFromText('POINT(17.031819 51.122711)'),
     st_geomFromText('POINT(17.033686 51.122711)'));
     st_distancesphere
    -------------------
          130.30184168
    

    【讨论】:

    • 傻我!谢谢你。我不确定我是否应该害怕你很快发现我来自波兰......
    • :-) 它在您的个人资料中,并且那里的坐标有意义
    • ;) 我知道。只是在开玩笑。感谢您的帮助
    • 请注意,st_distancespheroid 有点慢,需要一个球体作为参数,但更准确。
    猜你喜欢
    • 2018-12-11
    • 2013-06-17
    • 1970-01-01
    • 2012-04-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多