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

Mengapa st_intersection mengembalikan non-poligon?

ST_intersect mengembalikan beberapa jenis geometri, tergantung pada topologi relatif.

Misalnya, menjalankan ST_intersect pada dua poligon yang berdekatan mengembalikan bagian umum dari batas bersama.

Sementara itu menghasilkan satu tabel (seperti yang dapat Anda verifikasi di pgadmin, misalnya), di carikan Browser QGIS itu akan ditampilkan sebagai beberapa tabel dari jenis geometri yang berbeda (misalnya:POLYGON, MULTIPOLY, LINE, dan POINT) tetapi ( agak membingungkan) dengan nama yang sama.

Secara visual, Anda dapat membedakannya dengan mengamati ikon pengiring di sebelah kiri:

Namun Anda dapat memilih jenis geometri yang Anda inginkan, misalnya dengan menambahkan filter WHERE dengan ST_Dimension :

SELECT      a.*,
            b.*,
            st_intersection(a.geom, b.geom) as geom
FROM        a,b
WHERE       st_intersects(a.geom, b.geom) 
            AND ST_Dimension(st_intersects(a.geom, b.geom)) = 2;

atau, demi performa, tulis ulang dengan cara yang mirip dengan:

SELECT clipped.* 
FROM (
         SELECT a.id, b."fieldName",
             (ST_Dump(ST_Intersection(a.geom, b.geom))).geom AS geom
         FROM "public"."table_A_name" AS a INNER JOIN "public"."table_B_name" AS b   
         ON ST_Intersects(a.geom, b.geom)
     ) AS clipped
WHERE ST_Dimension("clipped"."geom") = 2;

Solusi terakhir membuat tabel sementara anonim, yang memungkinkan ST_Intersection untuk dijalankan hanya sekali.

Anda mungkin telah memperhatikan bahwa triknya ada di ST_Dimension("clipped"."geom") = 2 .

ST_Dimensions yang memfilter output dari ST_Intersection sehingga hanya menyimpan poligon (yang memiliki dimensi topologi 2).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. perhitungan persentil ke-n di postgresql

  2. rake db:buat kesalahan penyandian dengan postgresql

  3. Tidak ada driver yang cocok ditemukan saat menyertakan driver yang dibutuhkan dengan maven-assembly-plugin

  4. 30 tabel dengan beberapa baris - TRUNCATE cara tercepat untuk mengosongkannya dan mengatur ulang urutan terlampir?

  5. instal permata pg tidak dapat mengikat ke libpq