2016-03-03 5 views
0

У меня есть геономный запрос, основанный на 2dsphere (сферический), который возвращает расстояния. Я не совсем уверен в возврате единицы измерения. Это метры или радианы? Какой «множитель» следует использовать для получения расстояний в милях? Ответы, которые я нашел на этот вопрос, все различаются.MongoDB geonear and distance conversion

ответ

0

Результат возвращается в обычно в радианах

запрос:

db.runCommand({ 
    geoNear: "restaurants" , 
    near: [ -73.93414657, 40.82302903 ], 
    spherical: true, 

}) 

даст результат вроде этого:

{ 
"dis" : 0.0001360968348384049, 
"obj" : { 
     "_id" : ObjectId("55cba2476c522cafdb054fee"), 
     "location" : { 
       "coordinates" : [ 
         -73.94387689999999, 
         40.8255961 
       ], 
       "type" : "Point" 
     }, 
     "name" : "Texas Star Snack Bar" 
} 
} 

так что в этом случае расстояние в радиусе, и мы необходимо:

1. multiply it by 3963.2 to get distance in miles (in example we have 0.539 M) 

2. multiply it by 6371 to get distance in kilometers (in example we have 0.867 km) 

если вы используете 3.2 и есть запрос с minDistance и maxDistance (по определению в метрах) - при условии, расстояние в метрах

db.runCommand(
    { 
    geoNear: "restaurants", 
    near: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, 
    spherical: true, 

    minDistance: 3000, 
    maxDistance: 7000 
    } 
) 

и пример результата:

{ 
"dis" : 338.44550608396395, 
"obj" : { 
     "_id" : ObjectId("55cba2476c522cafdb0561eb"), 
     "location" : { 
       "coordinates" : [ 
         -73.9653551, 
         40.7828647 
       ], 
       "type" : "Point" 
     }, 
     "name" : "(Public Fare) 81St Street And Central Park West (Delacorte Theatre)" 
}} 

есть хороший учебник о что here с наборами данных, которые вы не можете использовать для тестов.

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