PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie fügt man 2 Punkte mit Abstand zwischen ihnen hinzu (SRID =32636)?

Sie könnten Ihre geometry umwandeln zu geography und ST_Project es (in dem gewünschten Azimut). So können Sie ganz einfach die Entfernung in Metern angeben:

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)

Sie können die Entfernung mit ST_Distance überprüfen :

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

HINWEIS :Ich verwende ST_Transform um von Ihrem projizierten SRS zu einem lon/lat SRS zu gelangen, damit wir es in geography umwandeln können , sonst würden wir einen Fehler bekommen:

SELECT geo::geography FROM test_table;

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

Weiterführende Literatur:Punkt 50 Meilen entfernt berechnen (Norden, 45 % NO, 45 % SW)