有没有办法在查询中表示位置值?

时间:2016-12-15 21:48:09

标签: socrata soda

对于像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 个答案:

答案 0 :(得分:1)

我的示例将使用版本2.1端点,而不是您上面链接的旧版2.0,因此请确保您使用此版本: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)

如果您正在寻找如何格式化WKT中的纬度/经度,您需要将它们格式化为POINT

我没有意识到这一点,但实际上我们的Point datatype没有记录,所以我会把它添加到我的队列中!

更新:如果你的语法正确,StevenW发现你可以做一个精确的过滤器:

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

请注意,这要求您具有与该点完全相同的纬度/经度,因此它没有太大的误差余量。