![](/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.