2013-05-29 3 views
1

Я играю с гео особенности MongoDB в Java и я столкнулся со следующей проблемой запуска команды «geoNear»:geoNear возвращает неправильное расстояние

Дано:

  • Коллекция под названием «GEOENTITIES 'с объектами GeoJSON
  • Эта коллекция индексируется с кодом Java (с использованием Джонго):

    collection.ensureIndex("{ coordinates : '2dsphere' }"); 
    
  • документа (названный 'A' для примера) существует с координатами равно [48,0, 9,0]

При выполнении:

{geoNear: 'GEOENTITIES', near: [48.0,9.1], spherical: true, num: 5, distanceMultiplier: 6371} 

Тогда:

У меня есть результат команды :

{ "dis" : 11.11949328574724 , "obj" : { "coordinates" : [ 48.0 , 9.0] , "_id" : { "$oid" : "51a62a5485878b1ceca38ab3"} , "name" : "Toto"}} 

Почему расстояние 11,11 (км), тогда как рассчитанное один из http://williams.best.vwh.net/gccalc.htm - например, - 7,46? Я думаю, что я сделал что-то не так, но не понимаю, может быть, кто-то более экспериментирует, может помочь?

ответ

3

Обмен вашими координатами. Вам необходимо (long, lat):

Значение по умолчанию для земной сферы в MongoDB 2.4 - WGS84. Порядок оси ординат - долгота, широта.

http://docs.mongodb.org/manual/core/2dsphere/

+0

Разница обусловлена ​​тем, что я добавил параметр расстояния к команде с радиусом земли в километрах. Но удаление этого аргумента дает мне следующий результат: 0.0017453293495129868. Так что не то же самое, что и вы, это перепробовано, я буду расследовать больше завтра об этом. Спасибо за ваш ответ. – kij

+0

Oups извините, не видел параметр расстояния в вашем коде. Ваш результат странный, он должен быть добавлен в километры, а не в радиус, верно? – kij

+0

Ha, просто измените вторую координату в вставке для правильного значения <9.0> вместо <9.1> – kij

0

Позор мне, я нашел свою ошибку ... я отменил широту/долготу на веб-сайте при проверке результата.

Правильное расстояние - это значение, заданное MongoDB, поэтому все в порядке.

Извините еще раз, и благодаря А. Джесси Jiryu Дэвис за помощь :)

Edit: просто увидеть отредактированный ответ, я буду Валида, спасибо еще раз.

Смежные вопросы