PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como adicionar 2 pontos com distância entre eles (SRID =32636)?


Você pode converter sua geometry para geography e ST_Project (no azimute que você deseja). Fazendo isso, você pode facilmente fornecer a distância em 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)

Você pode verificar a distância 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

OBSERVAÇÃO :estou usando ST_Transform para ir do seu SRS projetado para um SRS lon/lat, para que possamos convertê-lo em geography , caso contrário, receberíamos um erro:
SELECT geo::geography FROM test_table;

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

Leitura adicional:Calcule o ponto a 50 milhas de distância (Norte, 45% NE, 45% SW)