2016-06-27 3 views
1

Я использую mongo для хранения геолокализованных данных с целью их восстановления с помощью $ geointersect. В частности, у меня есть этот документ, хранящийся в моем db:MongoDB geointersect не удается найти большие полигоны

{ 
    "loc": { 
     "geometry": { 
     "type": "Polygon", 
     "coordinates": [ 
      [ 
      [ 
       -179.875, 
       -89.875 
      ], 
      [ 
       179.875, 
       -89.875 
      ], 
      [ 
       179.875, 
       89.875 
      ], 
      [ 
       -179.875, 
       89.875 
      ], 
      [ 
       -179.875, 
       -89.875 
      ] 
      ] 
     ] 
     }, 
     "crs": { 
     "type": "name", 
     "properties": { 
      "name": "urn:x-mongodb:crs:strictwinding:EPSG:4326" 
     } 
     }, 
     "type": "Feature", 
     "properties": {} 
    }, 
    "_id": "576af8e31d41c87fa1f1d04f" 
    } 

Который, как вы можете заметить, охватывает почти весь мир. Теперь не имеет значения, какие координаты я вводил для моего запроса $ geointersect, он никогда не будет возвращен ... Кто-нибудь знает, почему?

Пример запроса я использую может быть:

[ 
    { 
    "loc.geometry": { 
     "$geoIntersects": { 
     "$geometry": { 
      "type": "Polygon", 
      "coordinates": [ 
      [ 
       [ 
       13.4307861328125, 
       41.599013054830216 
       ], 
       [ 
       13.9801025390625, 
       41.599013054830216 
       ], 
       [ 
       13.9801025390625, 
       41.80407814427234 
       ], 
       [ 
       13.4307861328125, 
       41.80407814427234 
       ], 
       [ 
       13.4307861328125, 
       41.599013054830216 
       ] 
      ] 
      ] 
     } 
     } 
    } 
    }, 
    { 
    "loc": 1 
    } 
] 

Конечно координаты запроса содержатся внутри многоугольника в сохраненном документе (я имею в виду ... Это как большой, как мир, дух!), но по какой-то причине он не находит никакого совпадения ... Я немного потерян.

+0

Тот же самый проблемный человек, вы нашли решение? –

+0

К сожалению, я этого не сделал. Но кажется, что если вы выберете в своем запросе область, достаточно большую, она покажет. – darkpirate

ответ

0

Просто изучите это сейчас. Если многоугольник твердый и больше, чем земное полушарие, монго возвращает все за пределы области. проверить их большие поли и crs в документации geoWithin

+0

Я знал об этом, проблема в том, что ... вы можете использовать свои crs только на входном полигоне, а не на тех, которые сохраняются в db. если у меня есть многоугольник размером больше en emisphere в моей базе данных ... ну, его сложно получить. – darkpirate

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