البحث في قاعدة بيانات للبيانات المرتبطة بالإحداثيات لمنطقة متعددة الأضلاع عشوائيًا

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

  •  05-07-2019
  •  | 
  •  

سؤال

لدي قاعدة بيانات علائقية حيث يتم وضع علامة على كل إدخال كنقطة بإحداثيات خط العرض/خط الطول.أعطي المستخدم القدرة على وضع علامة على مضلع عشوائي على الخريطة، وأريد إرجاع جميع الإدخالات الموجودة داخل الشكل المضلع.

ما هي أفضل طريقة لتحقيق ذلك؟

أيضًا، قد يكون من المفيد الإشارة إلى أن الأخطاء الصغيرة لا بأس بها (على سبيل المثال.إذا كانت هناك طريقة فعالة لتحويل المضلع إلى مجموعة من المستطيلات، فلا بأس).

هل كانت مفيدة؟

المحلول

استخدم ملحقات المكانية، معظم قواعد البيانات لديها هذا. في الخلية يمكنك استخدامها فقط مع الجداول MYISAM التي ليست المعاملات.

http://dev.mysql.com/doc /refman/5.0/en/spatial-extensions.html

نصائح أخرى

وطريقة واحدة لقطع سرعان ما انهارت على عدد من النقاط للنظر هو لحساب المستطيل إحاطة للمضلع (أي مجرد مين-س، مين ذ، ماكس-س، ماكس-ي من النقاط في المضلع) ، ثم حدد للحصول على نقاط داخل المستطيل المحيط (أي حيث x هو بين مين x و ماكس-x و الشيء نفسه بالنسبة لص).

وبالطبع ليس كل هذه النقاط هي بالضرورة داخل المضلع، ولكن الآن يمكنك شحذ مع التعليمات البرمجية.

اختراق قديم:

حساب عدد مرات اتصال الخط <point far away> ل <point in question> يعبر أيًا من الأجزاء المحيطة بالمضلع.

  • الأرقام الزوجية تعني أن النقطة تقع خارج المضلع
  • الأرقام الفردية تعني أنه داخل المضلع
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top