چطور برش (intersection) و همپوشانی دو لایه را حساب کنم؟
پاسخ کوتاه
با ST_Intersects (آیا تلاقی دارند؟) فیلتر کنید و با ST_Intersection شکل بخش مشترک را بسازید. اگر TopologyException گرفتید، هندسه نامعتبر است و باید اصلاح شود.
کدام عارضهها تلاقی دارند؟
SELECT p.gid, z.name
FROM parcels p JOIN zones z ON ST_Intersects(p.geom, z.geom);
برش واقعی و مساحت بخش مشترک
CREATE TABLE parcels_in_zone AS
SELECT p.gid, z.name AS zone,
ST_Multi(ST_Intersection(p.geom, z.geom))::geometry(MultiPolygon, 4326) AS geom
FROM parcels p JOIN zones z ON ST_Intersects(p.geom, z.geom)
WHERE GeometryType(ST_Intersection(p.geom, z.geom)) LIKE '%POLYGON';
نکتهها
- هر دو لایه باید SRID یکسان داشته باشند؛ در غیر این صورت خطا میدهد (تبدیل).
TopologyExceptionیعنی هندسه نامعتبر: اصلاح.- برای سرعت، هر دو جدول نمایه مکانی لازم دارند.
آیا این مقاله به شما کمک کرد؟
هنوز جواب نگرفتید؟ به پشتیبانی بگویید.