![](/img/trans.png)
[英]How to get m pair of points among n points that have the largest distance between them
[英]How to add 2 points with distance between them (SRID = 32636)?
我正在使用python 3.6
和postgres
数据库
我有一个表名: test_table
,包含以下字段:名称( text
)、地理( geometry
)
geo 字段的srid
是32636
我想写一个 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.