ここで説明されている地理的に配置されたクエリをテストしています。LatLng の正の値 (インド洋の中部、中国、オーストラリア、カナダ西部など) を使用すると、Context Broker は内部サーバー エラーを返します。次に例を示します。
このクエリ: 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 }"
}
}
正の値が原因であると確信しています。緯度または経度の値に正の値があると、Context Broker からこのエラーが発生するためです。
"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 } } - 例外: カウントに失敗しました:{ errmsg: "例外: 不適切な地理クエリ",コード: 2、OK: 0.0 }"
- オリオン バージョン: 0.14.0
- MongoDB バージョン: 2.6.3
- CentOS 6.5