Запрос Orion Geo-located возвращает внутреннюю ошибку сервера при использовании значений долготы больше 90 или меньше -90

Я тестирую геоориентированные запросы, объяснение здесь, и когда я использую положительные значения LatLng (середина Индийского океана, Китай, Австралия, запад Канады и т. д.), брокер контекста возвращает внутреннюю ошибку сервера, например:

Этот запрос: myorion.local:1026/NGSI10/queryContext?offset=0&limit=100&details=on :

{
"restriction":{
    "scopes":[
        {
            "type":"FIWARE_Location",
            "value":{   
                "polygon":{
                    "vertices":[
                        {"latitude":2.811371193331,"longitude":130.078061},
                        {"latitude":13.031027211328,"longitude":130.078061},
                        {"latitude":13.031027211328,"longitude":140.24472766667},
                        {"latitude":2.811371193331,"longitude":140.24472766667}
                        ]
                    }
            }
        }
    ]
    },
    "entities":[
        {"id":".*","type":"Arduino","isPattern":"true"}
    ],
    "attributes":[]
}

Возвращает:

{
  "errorCode" : {
    "code" : "500",
    "reasonPhrase" : "Internal Server Error",
    "details" : "collection: orion.entities - query(): { query: { $or: [ { _id.id: /.*/, _id.type: "Arduino" } ], _id.servicePath: { $exists: false }, location.coords: { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ 2.811371193331, 130.078061 ], [ 13.031027211328, 130.078061 ], [ 13.031027211328, 140.24472766667 ], [ 2.811371193331, 140.24472766667 ], [ 2.811371193331, 130.078061 ] ] ] } } } }, orderby: { creDate: 1 } } - exception: count fails:{ errmsg: "exception: bad geo query", code: 2, ok: 0.0 }"
  }
}

Та же проблема возникает для Circle:

{
"restriction":{
    "scopes":[
        {
            "type":"FIWARE_Location",
            "value":{
                "circle":{
                    "centerLatitude":0.60024334316097,
                    "centerLongitude":102.58133563829,
                    "radius":610000
                    }
            }
        }
    ]
    },
    "entities":[
        {"id":".*","type":"Arduino","isPattern":"true"}
    ],
    "attributes":[]
}

Вернется:

{
  "errorCode" : {
    "code" : "500",
    "reasonPhrase" : "Internal Server Error",
    "details" : "collection: orion.entities - query(): { query: { $or: [{ _id.id: /.*/, _id.type: "Arduino" } ], _id.servicePath: { $exists: false }, location.coords: { $geoWithin: { $centerSphere: [ [ 0.6002433431609701, 102.58133563829 ], 0.0957463506513891 ] } } }, orderby: { creDate: 1 } } - exception: count fails:{ errmsg: "exception: bad geo query", code: 2, ok: 0.0 }"
  }
}

Я почти уверен, что это из-за положительных значений, потому что всегда, когда у меня есть положительное значение в значении Lat или Lng, я получаю эту ошибку от Context Broker.

"коллекция: orion.entities - query(): { query: { $or: [{ _id.id: /.*/, _id.type: "Arduino" } ], _id.servicePath: { $exists: false }, location.coords: { $geoWithin: { $centerSphere: [[ 0.6002433431609701, 102.58133563829 ], 0.0957463506513891 ] } } }, orderby: {creDate: 1 } } - exception: count failed: { errmsg: "exception: bad geo запрос", код: 2, хорошо: 0.0}"

  • Версия Ориона: 0.14.0
  • Версия MongoDB: 2.6.3
  • ЦенОС 6.5

person LeonanCarvalho    schedule 16.07.2014    source источник
comment
Какую версию MongoDB использует Orion? Пожалуйста, отредактируйте свой вопрос, чтобы добавить эту информацию.   -  person fgalan    schedule 17.07.2014
comment
Пока у меня есть время протестировать MongoDB 2.6.3... Не могли бы вы протестировать тот же сценарий с MongoDB 2.4.9 (эталонная версия MongoDB для 0.14.0), пожалуйста? Начните с пустой базы данных, чтобы устранить любые межтестовые помехи, пожалуйста (см. forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/Orion_Context_Broker-_Installation_and_Administration_Guide#Delete_complete_database)   -  person fgalan    schedule 17.07.2014
comment
В данный момент я тестирую перегрузки и ограничения, и у меня есть масса данных, которые я не могу удалить. Как я могу сделать резервную копию безопасности (чтобы удалить) и восстановить мои данные?   -  person LeonanCarvalho    schedule 22.07.2014
comment
LeonanCarvalho: Я не знал, что на вашей стороне было сложно тестировать. Ничего страшного, я сделаю тест.   -  person fgalan    schedule 22.07.2014
comment
Проблемы, кажется, из-за ошибки. Подробнее на github.com/telefonicaid/fiware-orion/issues/461   -  person fgalan    schedule 23.07.2014


Ответы (1)


Версии Orion до 0.14.0 имеют известную ошибку, которая не позволяет использовать запросы с долгота больше 90 градусов (или меньше -90 градусов). Ошибка уже исправлена ​​в ветке разработки в репозитории кода и будет включена в выпуск Orion 0.14.1.

Спасибо Leonan Carvalho за помощь в устранении этой проблемы!

person fgalan    schedule 28.07.2014
comment
Спасибо! Я надеюсь, что эта проблема поможет некоторым другим пользователям! :D - person LeonanCarvalho; 28.07.2014