پایگاه داده مکانی اَبری
زیرساخت مکانی پروژه‌های شما، بدون دردسر راه‌اندازی سرور

چطور برش (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 یعنی هندسه نامعتبر: اصلاح.
  • برای سرعت، هر دو جدول نمایه مکانی لازم دارند.

آیا این مقاله به شما کمک کرد؟

چه چیزی کم بود؟ (اختیاری)

هنوز جواب نگرفتید؟ به پشتیبانی بگویید.