1

对于 where 子句中的简单过滤器和比较之类的事情,有什么方法可以表示位置值吗?例如,类似:

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

该文档提到其他地理数据可以表示为众所周知的文本(WKT),您可以在简单的过滤器和比较等事情中使用它,但是据我所知,似乎没有 WKT 表示位置值。

它可能是为了让用户使用诸​​如within_circle而不是直接比较值之类的东西,我已经在文档页面上看到了 location 是遗留数据类型的注释,所以如果没有办法,这将是有意义的。

我个人会在应用程序中使用类似的东西within_circle,但我正在编写一个 haskell SODA 绑定库,所以我只想在可能的情况下使其可用(尽管不鼓励)。我不希望绑定阻止进行有效调用。

4

1 回答 1

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

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

更新: StevenW 发现如果语法正确,您可以进行精确过滤:

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

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

于 2016-12-16T00:52:24.547 回答