2016-12-15 52 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

相关问题