PostgreSQL技术问询:筛选起始及终点位于指定边界框内的行程
没问题,我来帮你搞定这个行程筛选的需求!
筛选起点与终点均在指定边界框内的行程
首先我们先明确边界框的坐标范围逻辑:
- 纬度方向:左上角纬度(41.24895)比右下角纬度(41.11591)更高,所以有效纬度区间是 41.11591 ≤ 纬度 ≤ 41.24895
- 经度方向:左上角经度(-8.68494)更偏西(数值更小),右下角经度(-8.47569)更偏东,所以有效经度区间是 -8.68494 ≤ 经度 ≤ -8.47569
接下来我们需要同时校验行程的起点和终点坐标,确保两者都落在这个边界框内。对应的SQL查询语句如下:
SELECT * FROM trips WHERE -- 校验起点坐标在边界框内 lat_start BETWEEN 41.11591 AND 41.24895 AND lon_start BETWEEN -8.68494 AND -8.47569 -- 校验终点坐标也在边界框内 AND lat_end BETWEEN 41.11591 AND 41.24895 AND lon_end BETWEEN -8.68494 AND -8.47569;
小补充:
BETWEEN是一种简洁的区间判断写法,完全等价于lat_start >= 41.11591 AND lat_start <= 41.24895,可读性更高- 必须同时过滤起点和终点,避免出现"起点在框内但终点在框外"的行程被误筛选出来
- 如果你的数据库支持空间地理函数(比如PostGIS),也可以用更专业的空间判断方法(例如
ST_Within),但上面的基础SQL写法在绝大多数关系型数据库中都能直接运行
内容的提问来源于stack exchange,提问作者arilwan
相关产品推荐
相关产品推荐

