السياج الجغرافي: ابحث عن عدد من الميزات (النقاط/الخطوط/المضلعات) داخل مضلع باستخدام Oracle Spatial
-
26-09-2019 - |
سؤال
كيف يمكنني كتابة استعلام SQL (باستخدام Oracle Spatial) للعثور على عدد الميزات المتوفرة داخل مضلع (Geofence) ؛
يمكن أن تكون الميزات إما نقاط أو خطوط أو مضلع نفسه.
شكرًا.
المحلول
جرب هذا البيان:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
من المعدل أن المعلمة الأولى من SDO_RELATE
هو عمود الهندسة مع فهرس مكاني.
نصائح أخرى
تحديث: تجاهل هذا الاقتراح تمامًا ، قال ألبرت جودفريند إنه يكرر ما يجري بالفعل داخليًا. لذلك فهو غير فعال وبطيء:
للإضافة إلى إجابة Tims ، من الممارسات الجيدة الجمع بين SDO_Filter و SDO_RELATE لأسباب الأداء. SDO_FILTER سريع ولكن يعيد الكثير من الأشكال الهندسية ، وسوف يمنحك جميع الأشكال الهندسية التي يتقاطع الحد الأدنى للمستطيل (MBR) مع هندسة السياج. SDO_RELATE دقيق ولكنه بطيء. لذا اجمع بين كليهما:
select count(*)
from geometry_table t
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
التحيات ، كريس
لا تنتمي إلى StackOverflow