如何添加 2 个点和它们之间的距离 (SRID = 32636)?

How to add 2 points with distance between them (SRID = 32636)?

我正在使用 python 3.6postgres 数据库

我有一个 table 名称:test_table 包含以下字段: 名称 (text)、地理位置 (geometry)

地理字段的srid32636

我想编写一个 python 函数来获取点 X (wkt) 和 return 点 Y,两点之间的距离为 10 米。即:

X 和 Y 的格式为 WKT

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

好像不能用欧式距离,因为srid是32636

那我该怎么做呢?

您可以将 geometry 投射到 geographyST_Project 它(以您想要的方位角)。这样做您可以轻松地提供以米为单位的距离:

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)

您可以使用ST_Distance查看距离:

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 将您预计的 S​​RS 转换为 lon/lat SRS,以便我们可以将其转换为 geography,否则我们会得到一个错误:

SELECT geo::geography FROM test_table;

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

进一步阅读: