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).