sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo sumar 2 puntos con distancia entre ellos (SRID =32636)?

Podrías moldear tu geometry a geography y ST_Project (en el acimut que desee). Al hacerlo, puede proporcionar fácilmente la distancia en metros:

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)

Puede verificar la distancia usando 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 :estoy usando ST_Transform para pasar de su SRS proyectado a un SRS lon/lat, para que podamos convertirlo en geography , de lo contrario obtendríamos un error:

SELECT geo::geography FROM test_table;

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

Lecturas adicionales:Calcula el punto a 50 millas de distancia (Norte, 45 % NE, 45 % SO)