MongoDB GEO المسافة/نصف القطر إلى وحدات مفيدة
-
28-09-2019 - |
سؤال
أنا أستخدم الاستعلامات الجغرافية المكانية MongoDB - $near
, geoNear
, ، وما إلى ذلك - وأود أن أعرف كيفية قلب dis
نتيجة geoNear
القيادة وكذلك radius
حجة ل $within
الاستعلامات إلى/من وحدات قابلة للقراءة مثل الأميال أو الكيلومترات.
المحلول
إذا كانت بياناتك في إحداثيات جغرافية (أي 30.47921 ن -121.45724 واط) ، فأنت بحاجة إلى تحويل الإسقاط الأساسي الخاص بك بالوحدات التي تريدها (اختر إسقاطًا يحافظ على المسافة) أو تحتاج إلى تحويل المسافة في إحداثيات إلى ما يشبه الأميال.
استخدم صيغة هافرين للحساباتhttp://www.movable-type.co.uk/scripts/latlong.html
نصائح أخرى
باستخدام الأمر geonear للحصول على قيمة dis بالكيلومترات ، أضف المعلمة:
distanceMultiplier: (6371 * Math::PI / 180.0)
لاحظ إذا كنت تستخدم MongoDB الإصدار 2.6.0 ، فهناك خطأ يمكّن دائمًا السلوك الجديد لأنظمة الإحداثيات الكروية من العودة إلى المسافة بالأمتار (استنادًا إلى إحداثيات WGS84).
تنص الوثائق على إعطاء $near
المعلمة في الإحداثيات القديمة بدلا من الجيوجسون يجب أن لا تزال إعادة الراديان. تم إصلاح هذا في إصدارات أحدث.
تقرير الأخطاء: علة #13540