السياج الجغرافي: ابحث عن عدد من الميزات (النقاط/الخطوط/المضلعات) داخل مضلع باستخدام Oracle Spatial

StackOverflow https://stackoverflow.com/questions/4611944

  •  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' 

التحيات ، كريس

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top