sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur lägger man till 2 punkter med avstånd mellan dem (SRID =32636)?

Du kan gjuta din geometry till geography och ST_Project det (i den azimut du vill ha). Genom att göra det kan du enkelt ange avståndet i meter:

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)

Du kan kontrollera avståndet med 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

OBS :Jag använder ST_Transform för att komma från din projicerade SRS till en lon/lat SRS, så att vi kan casta den till geography , annars skulle vi få ett felmeddelande:

SELECT geo::geography FROM test_table;

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

Ytterligare läsning:Beräkna punkt 50 miles away (norr, 45 % NE, 45 % SW)




  1. 4 sätt att räkna rader i SQL Server-tabell med för- och nackdelar

  2. Databasanslutningsproblem med d2rq

  3. Observera:Odefinierad variabel:db vid användning av PDO

  4. Jboss Datasource-konfiguration för MySQL - MysqlXADataSource-element