PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да добавя 2 точки с разстояние между тях (SRID =32636)?

Можете да прехвърлите своята geometry към geography и ST_Project то (в азимута, който искате). По този начин можете лесно да предоставите разстоянието в метри:

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)

Можете да проверите разстоянието с помощта на 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

ЗАБЕЛЕЖКА :Използвам ST_Transform за да получите от вашия проектиран SRS до SRS за дължина/ширина, така че да можем да го прехвърлим към geography , в противен случай ще получим грешка:

SELECT geo::geography FROM test_table;

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

Допълнителна информация:Изчислете точка на 50 мили (север, 45% NE, 45% SW)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да мигрирам PostgreSQL база данни в SQLServer?

  2. Буквено-цифрово сортиране с PostgreSQL

  3. Как да определите какъв тип индекс да използвате в Postgres?

  4. Настройка на PostgreSQL:Ключови неща за повишаване на производителността

  5. Декларирайте променлива от съставен тип в PostgreSQL с помощта на %TYPE