PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menambahkan 2 poin dengan jarak di antara mereka (SRID =32636)?

Anda dapat mentransmisikan geometry ke geography dan ST_Project itu (dalam azimuth yang Anda inginkan). Dengan melakukannya, Anda dapat dengan mudah memberikan jarak dalam 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)

Anda dapat memeriksa jarak menggunakan 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

CATATAN :Saya menggunakan ST_Transform untuk mendapatkan dari SRS yang diproyeksikan ke SRS lon/lat, sehingga kami dapat mentransmisikannya ke geography , jika tidak, kita akan mendapatkan kesalahan:

SELECT geo::geography FROM test_table;

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

Bacaan lebih lanjut:Caculate point 50 mil jauhnya (Utara, 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. PHP tidak dapat terhubung ke PostgreSQL di CentOS 7

  2. Deteksi item duplikat dalam CTE rekursif

  3. Bagaimana cara mengindeks tabel postgres dengan nama, ketika namanya bisa dalam bahasa apa pun?

  4. Membuat tes ekstensi di postgresql

  5. Mengapa saya mendapatkan data migrasi kesalahan ini dari SQL Lite ke Posgres DB? duplikat nilai kunci melanggar batasan unik