【问题标题】:What unit does Spatialite's Distance() function return?Spatialite 的 Distance() 函数返回什么单位?
【发布时间】:2011-11-27 18:11:20
【问题描述】:

Spatialite 能够使用Distance() 函数计算两个几何图形之间的距离。还有其他 functions 可以处理 LINESTRING。但是我不知道它返回的单位是什么。是米吗?如果我有 2 个点,如何在空间查询中计算它们之间的距离?

(作为记录,我使用的是 SRID 4326,即 WSG 86,即旧的传统纬度和经度)。

【问题讨论】:

    标签: sqlite gis distance spatialite


    【解决方案1】:

    ST_Distance()、ST_Length() 和 ST_Area() 返回的单位 正是由相应的 SRID 定义的那个。

    因此,如果您使用纬度和经度 (SRID=4326, WGS 84),任何长度都以度为单位,任何面积以 平方度数。

    如果您有兴趣提供更传统的 单位(米,平方米),你只需要投影 将您的几何图形转换为一些适当的“平面”CRS(例如 UTM) 使用 ST_Transform()

    【讨论】:

    • 您能否举例说明如何在函数/表达式中进行这种转换?
    • @Rory 每个纬度都相距 60 海里。那是 111,120 米或 364,567 英尺。只需将 Distance() 中的值乘以 111,120 即可得到以米为单位的距离。
    • @Phil 我希望每个度数的纬度(以米、英里等为单位)取决于地理经度和纬度(因为地球不是一个完美的球体)。
    • @Lefteris 各度经度之间的距离取决于您的地理位置,但各度纬度之间的距离remains a constant 60 nautical miles。重要的是纬度和米之间的转换比。一旦知道这一点,就可以将其应用于 Distance() 的输出。
    【解决方案2】:

    在 2.4.4 及更高版本中,有一个函数 PtDistWithin() 返回米以进行距离查询。见文档。 “距离关系的 SQL 函数”部分: http://www.gaia-gis.it/spatialite-2.4.0-4/spatialite-sql-2.4-4.html#p13

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2019-12-11
      • 2021-03-21
      相关资源
      最近更新 更多