有没有办法在查询中表示位置值?
Is there a way to represent location values in a query?
对于 where 子句中的简单过滤和比较之类的东西,有没有什么方法可以表示位置值?例如,类似于:
https://data.seattle.gov/rescource/82su-5fxf.json?location='LOCATION (Seattle, 47.612237, -122.290868)'
文档中提到其他地理数据可以表示为 Well-Known Text (WKT),您可以将其用于简单的过滤和比较等操作,但据我所知,似乎没有是位置值的 WKT 表示。
它可能是为了让用户使用 within_circle
之类的东西,而不是直接比较值,我在文档页面上看到了 location 是遗留数据类型的注释,所以如果有不是办法。
我个人会在应用程序中使用类似 within_circle
的东西,但我正在编写一个 haskell SODA 绑定库,所以我只想让它可用(尽管不鼓励)如果有可能的。我不希望绑定阻止进行有效调用。
我的示例将使用 2.1 版端点,而不是您 link 以上的旧 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 中格式化 lat/longs,您需要将它们格式化为 POINT
我没有意识到,但我们的 Point
datatype 并没有实际记录,所以我会把它添加到我的队列中!
更新:StevenW 发现如果语法正确,您可以进行精确过滤:
GET https://data.cityofchicago.org/resource/6zsd-86xi.json?location='POINT (-87.631046 41.694312)'
请注意,这要求您具有与点完全相同的 lat/lon,因此不会有太多误差。
对于 where 子句中的简单过滤和比较之类的东西,有没有什么方法可以表示位置值?例如,类似于:
https://data.seattle.gov/rescource/82su-5fxf.json?location='LOCATION (Seattle, 47.612237, -122.290868)'
文档中提到其他地理数据可以表示为 Well-Known Text (WKT),您可以将其用于简单的过滤和比较等操作,但据我所知,似乎没有是位置值的 WKT 表示。
它可能是为了让用户使用 within_circle
之类的东西,而不是直接比较值,我在文档页面上看到了 location 是遗留数据类型的注释,所以如果有不是办法。
我个人会在应用程序中使用类似 within_circle
的东西,但我正在编写一个 haskell SODA 绑定库,所以我只想让它可用(尽管不鼓励)如果有可能的。我不希望绑定阻止进行有效调用。
我的示例将使用 2.1 版端点,而不是您 link 以上的旧 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 中格式化 lat/longs,您需要将它们格式化为 POINT
我没有意识到,但我们的 Point
datatype 并没有实际记录,所以我会把它添加到我的队列中!
更新:StevenW 发现如果语法正确,您可以进行精确过滤:
GET https://data.cityofchicago.org/resource/6zsd-86xi.json?location='POINT (-87.631046 41.694312)'
请注意,这要求您具有与点完全相同的 lat/lon,因此不会有太多误差。