簡體   English   中英

ArangoDB 地理空間查詢無法按預期工作

[英]ArangoDB geo-spatial queries do not work as expected

我有一個具有 12 行 csv 格式的玩具數據集,如下所示:

Cricketers.csv:數據集中具有“lng”和“lat”屬性的所有行

我正在嘗試在 arangodb 中加載這些數據,對其進行空間索引,然后使用 arangodb 空間查詢獲取數據。 我在數據庫中加載數據並對其進行索引的步驟如下:

arangoimport --file "cricketers.csv" --type csv --create-collection --create-collection-type document --translate "id=_key" --collection "players"

db.players.ensureIndex({type: 'geo', fields: ['lng', 'lat'], geoJson: false})

在此之后,我嘗試通過向數據庫發送空間查詢來獲取一些數據,如下所示:

db._query({'query': 'FOR node IN players FILTER GEO_CONTAINS(GEO_POLYGON([[[-70,-40],[-70,60],[180,60],[180,-40],[-70,-40]]]), [node.lng, node.lat]) RETURN node', "options" : {fullCount:true}}).getExtra();

上面的示例查詢應該理想地獲取所有數據點,因為它指定了一個跨越所有數據點的 geo_polygon。 但是,查詢不返回任何數據點。 這是查詢返回的內容(請參閱完整計數):

{   "warnings" : [ ],   "stats" : {     "writesExecuted" : 0,     "writesIgnored" : ,     scannedFull" : 12,     "scannedIndex" : 0,     "filtered" : 12,     "httpRequests" : 0,     "fullCount" : 0,      "executionTime" : 0.0015139159995669615,     "peakMemoryUsage" :     }

如果我在不使用空間查詢的情況下執行相同的查詢,即使用這樣的簡單過濾器:

db._query({'query': 'for node in players filter -40 <= node.lat <= 60 and -70 <= node.lng <= 180 return node', 'options': {fullCount: true}}).getExtra();

這就是我得到的,正如預期的那樣:

{   "warnings" : [ ],   "stats" : { "writesExecuted" : 0,     "writesIgnored" : 0,     scannedFull" : 12,     "scannedIndex" : 0,     "filtered" : 0,     "httpRequests" : 0,     fullCount" : 12,     "executionTime" : 0.0005607399998552864,     "peakMemoryUsage" : 0    }

請幫助我了解我做錯了什么? 為什么空間查詢不起作用? 我嘗試過將“lat”和“lng”發送到空間數據獲取和索引查詢的順序,但沒有效果。

ArangoDB 文檔只討論了 JSON 中的一個示例,即使這樣也不是很有幫助。 它談到了一些我認為我需要使用的分析器,但不清楚如何為 csv 數據執行此操作。

謝謝!

有兩個不同的問題。 Non-GeoJSON 地理空間索引的文檔指出:

第一個字段始終定義為緯度,第二個字段定義為經度。

因此,您應該將索引創建為db.players.ensureIndex({type: 'geo', fields: ['lat', 'lng'], geoJson: false})

第二個更重要的問題是您使用的多邊形。 [Polygon 文檔}(https://www.arangodb.com/docs/stable/indexing-geo.html#polygon) 提到了以下限制:

線性環在球體上定義了兩個區域。 ArangoDB 將始終將較小區域的區域解釋為環的內部。 這引入了一個實際限制,即任何多邊形都不能有一個包圍地球表面一半以上的外環

不幸的是,這對於您選擇的多邊形是正確的,因此這就是它沒有覆蓋預期區域的原因。 但請注意,web UI 中的多邊形可視化實際上按照您的意圖顯示了多邊形。 這是一個已知問題,我們目前正在努力解決它。

“分析器”僅在您使用 ArangoSearch 時才相關,它也支持從 v3.8 開始的地理空間索引

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM