首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PostGIS中具有纬度/长度SRID的实际(大圆)距离?

PostGIS 中具有纬度/长度 SRID 的实际(大圆)距离计算公式如下:

  1. 首先引入必要的 PostGIS 函数和概念:
代码语言:sql
复制

SELECT ST_Distance(

代码语言:txt
复制
       -- 地球表面的点,包括纬度/长度
代码语言:txt
复制
       ST_Point(0, 0), -- 起始点
代码语言:txt
复制
       ST_Point(3.986022988749895, 14.62283707249677) -- 终点
代码语言:txt
复制
   )/ 1000000 AS distance;
代码语言:txt
复制
  1. 通过实际的大圆距离和转换后的纬度和长度,计算出实际的大圆距离:
代码语言:sql
复制

SELECT

代码语言:txt
复制
    3963.0 AS latitudes_degrees,
代码语言:txt
复制
    278.78100722718 AS longitudes_degrees,
代码语言:txt
复制
   SRID(ST_Transform(
代码语言:txt
复制
       ST_GeogFromText('POINT(' || latitudes_degrees || ' ' || longitudes_degrees || ')'),
代码语言:txt
复制
       '4326'
代码语言:txt
复制
   )) AS geographic_coordinates_wgs84,
代码语言:txt
复制
   ST_Distance(
代码语言:txt
复制
     ST_Point(0, 0), -- 起始点
代码语言:txt
复制
     ST_Point(3.986022988749895, 14.62283707249677) -- 终点
代码语言:txt
复制
   )/ 1000000 AS distance_wgs84

FROM

代码语言:txt
复制
  6459796267269249510 TABLE_ID;
代码语言:txt
复制

最后,使用 PostGIS 的 ST_Within() 函数,找出距离为 0 的纬度/长度值:

代码语言:sql
复制
WITH
    -- 获取范围
    spatial AS (
        SELECT
           DISTINCT ST_Point(0, 0) AS point
        FROM
           table_id
        WHERE
           ST_Within(
               ST_Extent(table_id) -- 获取完整的地理范围
           )
    )

SELECT
    NULL
FROM
    TABLE_ID
WHERE
    -- 计算距离并判断位于某个距离/纬度/点之内
    ST_Distance(spatial.point, ST_Point(0, 0)) <= distance_wgs84;

以上代码将计算 PostGIS 中的实际(大圆)距离。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券