2011-11-19 18 views
2

當我添加:ElasticSearch腳本場返回不正確的經度值

fields: [ "doc['Location'].lon" ] 

到我的查詢,經度值不同的是什麼在源文件中的顯示。

在這裏你能看到我拿來了DOC [「緯度」] lon和.lat和_source.Latitude比較查詢結果:

https://gist.github.com/d9533170f1f50fd27e87(注意 - 這些都已經穿過json_decode in PHP,但數據在使用json_decode之前是相同的。)

當我使用「doc ['field_name']。distance(lat,lon)」來嘗試添加距離作爲字段到我的查詢。我嘗試了「script_fields」和「fields」鍵,每個鍵都有相同的結果。

更新:我注意到, 「DOC [ '位置'] LON。」 正在恢復了我認爲應該是DOC [ '位置'] LAT(lat和LON切換。)

回答

5

的。問題是,當使用GeoJSON格式(或使用lat/long作爲數組)時,您必須使用switch the order of lat/lng to lng/lat

我重建我索引,但是,爲了解決這個我已經使用這個查詢現在:

doc['Location'].distance(lon + 180, lat) // Temporary bandaid 

一旦我重建正確的值的指數,我會切換回:

doc['field_name'].distance(lat, lon) // The correct method 
+0

David,不幸的是,這是使用Spatial數據時常見的問題。 x,y!= y,x和美國許多人經常把x與緯度聯繫起來。 – aeupinhere