sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan tilføjer man 2 punkter med afstand mellem dem (SRID =32636)?

Du kan caste din geometry til geography og ST_Project det (i den azimut du ønsker). På den måde kan du nemt angive afstanden 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 tjekke afstanden ved hjælp af 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

BEMÆRK :Jeg bruger ST_Transform at komme fra din projicerede SRS til en lon/lat SRS, så vi kan caste den til geography , ellers får vi en fejlmeddelelse:

SELECT geo::geography FROM test_table;

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

Yderligere læsning:Beregn punkt 50 miles væk (nord, 45 % NE, 45 % SW)




  1. Behov for at konvertere Oracle Merge til forespørgsel til PostgreSQL

  2. Importerer MaxMinds GeoLite2 til MySQL

  3. Advarsel:mysql_result() [function.mysql-result]:Kan ikke hoppe til række 0 på MySQL resultatindeks 5 i profile.php på linje 11

  4. PHP script (mysqli) ikke ekko er noget?