簡體   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