PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come aggiungere 2 punti con distanza tra loro (SRID =32636)?

Potresti lanciare la tua geometry a geography e ST_Project it (nell'azimut desiderato). In questo modo puoi facilmente fornire la distanza in metri:

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)

Puoi controllare la distanza utilizzando 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

NOTA :Sto usando ST_Transform per passare dal tuo SRS proiettato a un SRS lon/lat, in modo che possiamo trasmetterlo a geography , altrimenti riceveremmo un errore:

SELECT geo::geography FROM test_table;

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

Ulteriori letture:Punto di Caculate a 50 miglia di distanza (Nord, 45% NE, 45% SO)