sql >> Databáze >  >> RDS >> PostgreSQL

Jak přidat 2 body se vzdáleností mezi nimi (SRID =32636)?

Můžete přenést svou geometry do geography a ST_Project to (v azimutu, který chcete). Můžete tak snadno zadat vzdálenost v metrech:

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)

Vzdálenost můžete zkontrolovat pomocí 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

POZNÁMKA :Používám ST_Transform dostat se z vašeho projektovaného SRS na lon/lat SRS, abychom ho mohli přenést do geography , jinak bychom dostali chybu:

SELECT geo::geography FROM test_table;

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

Další informace:Vypočítejte bod 50 mil daleko (sever, 45 % SV, 45 % JZ)




  1. Jak získat kumulativní celkový počet uživatelů za den v MySQL

  2. Proč můj příkaz if nefunguje tak, jak očekávám?

  3. MySQL Case s vložením a aktualizací

  4. Jak mohu v SQL vygenerovat všechny možné jedinečné kombinace 5!56?