سؤال

أنا أستخدم الاستعلامات الجغرافية المكانية 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

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