2016-12-15 54 views
1

對於where子句中的簡單過濾器和比較之類的東西,有沒有任何方法來表示位置值?例如,像:有沒有辦法在查詢中表示位置值?

https://data.seattle.gov/rescource/82su-5fxf.json?location='LOCATION (Seattle, 47.612237, -122.290868)' 

說明文檔中提到的其他地理數據可以表示爲已知文本(WKT),你可以使用的東西一樣簡單的過濾器和比較,但據我可以發現,似乎不存在位置值的WKT表示。

它可能是爲用戶使用諸​​如within_circle之類的東西而不是直接比較值,而且我已經在文檔頁面上看到該位置是遺留數據類型的註釋,所以如果沒有辦法。

我個人會在應用程序中使用類似within_circle的東西,但我正在編寫haskell SODA綁定庫,所以我只是想讓它可用(儘管不鼓勵),如果可能的話。我不希望綁定阻止有效的調用。

回答

1

我的例子將使用2.1版的終點,而不是舊的2.0一個鏈接到上面,所以一定要確保你使用這個verison:https://dev.socrata.com/foundry/data.seattle.gov/3c4b-gdxv

事實上,你不能做一個確切的平等簡單的過濾器在Point列。我建議在最接近使用within_circle一個非常小的圈子,像這樣:

GET https://data.seattle.gov/resource/3c4b-gdxv.json?$where=within_circle(location,%2047.514821,%20-122.258635,%2010) 

如果你正在尋找如何LAT/WKT中格式化多頭,你會想要將它們格式化爲POINT

我沒有意識到這一點,但實際上並沒有記錄我們的Point datatype,所以我會將它添加到我的隊列中!

UPDATE:StevenW發現如果你的語法正確,你可以做一個確切的過濾器:

GET https://data.cityofchicago.org/resource/6zsd-86xi.json?locat‌​ion='POINT (-87.631046 41.694312)' 

請注意,這需要你有相同的緯度/經度的點,所以也沒有有很多錯誤的餘地。

+0

糟糕,我沒有意識到這是一個2.0的終點。現在,我環顧四周,實際上我找不到任何具有[數據類型] [位置](https://dev.socrata.com/docs/datatypes/location.html#,)列數據集的2.1數據集。 你也無法做到與點完全平等。我認爲我已經成功地嘗試過了,但我想我一定是用多面體這樣的東西進行了測試並且被誤解了。 無論如何,感謝您的快速和有益的答案! – StevenW

+1

其實,在測試一些查詢的時候,我發現你實際上可以用一個簡單的過濾器使用以下語法完成相等的操作:https://data.cityofchicago.org/resource/6zsd-86xi.json?location='POINT(-87.631046 41.694312)''。我不認爲你可以看到這一點,因爲我還沒有足夠的聲望。 – StevenW

+0

好的發現StevenW,我也試過,但我一定是做錯了什麼。 – chrismetcalf

相關問題