如何添加两个点之间的距离(SRID=32636)?

2024-05-29 02:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python 3.6postgresDB

我有一个表名:test_table,其中包含以下字段: 姓名(text),地理位置(geometry

地质场的srid32636

我想写一个python函数,它得到点X(wkt)和返回点Y,点之间的距离为10米。i、 e:

X和Y是WKT格式

如何计算以X为输入的点Y

似乎我不能使用欧几里德距离,因为srid是32636

那我怎么做呢


Tags: 函数texttest距离格式table地理位置wkt
1条回答
网友
1楼 · 发布于 2024-05-29 02:24:36

您可以将geometry投射到geography^{}上(以您想要的方位角)。这样,您可以轻松提供以米为单位的距离:

CREATE TEMPORARY TABLE test_table (name text, geo geometry(point,(32636)));
INSERT INTO test_table VALUES ('foo','SRID=32636;POINT(2076155.32235105 4828109.18280588)');

SELECT 
 ST_AsText(
  ST_Transform(
   ST_Project(
     ST_Transform(geo,4326)::geography,10,radians(45.0))::geometry,
   32636)
 )
FROM test_table;

                st_astext                 
                     
 POINT(2076150.11319696 4828116.26815917)
(1 Zeile)

可以使用^{}检查距离:

SELECT 
  ST_Distance(
    ST_Transform(geo,4326)::geography,
    ST_Project(ST_Transform(geo,4326)::geography,10,radians(45.0))::geometry )
FROM test_table;

st_distance 
      -
          10

注意:我正在使用ST_Transform从您的投影SRS获取lon/lat SRS,以便我们可以将其强制转换为geography,否则我们将得到一个错误:

SELECT geo::geography FROM test_table;

ERROR:  Only lon/lat coordinate systems are supported in geography.

进一步阅读:Caculate point 50 miles away (North, 45% NE, 45% SW)

相关问题 更多 >

    热门问题