繁体   English   中英

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

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

我正在使用python 3.6postgres数据库

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

geo 字段的srid32636

我想写一个 python function 得到点 X (wkt) 并返回点 Y,点之间的距离为 10 米。 IE:

X 和 Y 为WKT格式

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

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

那我该怎么做呢?

您可以将geometry转换为geography图形并对其进行ST_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从您预计的 SRS 到经/纬度 SRS,以便我们可以将其转换为geography ,否则我们会收到错误消息:

SELECT geo::geography FROM test_table;

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

进一步阅读: 50 英里外的计算点(北,45% NE,45% SW)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM