【发布时间】:2021-12-30 05:28:12
【问题描述】:
我正在尝试将查询范围限定为选择纬度/经度边界框内的位置。一般来说,如果边界框不跨越国际日期变更线,这可以正常工作。
SELECT *
FROM locations
WHERE latitude BETWEEN ? AND ?
AND longitude BETWEEN ? AND ?
但是 - 如果我的边界框要跨越国际日期变更线 - 比如说从 179.00 到 -179.00 的纵向边界,那么查询不会返回任何结果。我不能只是翻转订单并将其更改为 -179.00 和 179.00 之间,因为那样会返回我的边界框之外的东西。
什么是最好地确定所需的适当 SQL 的最明智的方法(作为有助于派生最佳 SQL 的 SQL 或伪代码)。
【问题讨论】:
-
您使用的是什么关系型数据库?您的位置是否以某种地理数据类型存储?
-
+1 到 RDBMS 问题。一些数据库具有本机空间支持,您可以使用。例如。 BigQuery 有
ST_IntersectsBox,它可以在国际日期变更线上正常工作,例如ST_IntersectsBox(p, 179, -10, -179, 10). -
我正在使用 MySQL,但纬度/经度存储为单独的双列。
标签: sql geolocation gis latitude-longitude bounding-box