使用纬度和经度地理位置的数据库中的一个常见要求是查询在某个半径范围内的位置或与另一个位置的距离。有多种方法可以轻松管理此类查询。您可以将 Postgres earthdistance 模块与点或立方体一起使用,也可以使用第三方 PostGIS 扩展。在这一集中,我们将重点关注将 earthdistance 模块与点数据类型一起使用。
earthdistance 模块是官方支持的 Postgres 扩展,必须手动启用。它依赖于 Postgres 多维数据集扩展,因此我将快速安装两者。
create extension if not exists cube;
create extension if not exists earthdistance;
对于此示例,我们将使用地址表,该表具有 float8 或双精度类型的纬度和经度列,以及一些条目
\d addresses
select * from addresses;
我们将看两个示例,了解如何在 earthdistance 模块中使用基于立方体的计算。首先是确定位置之间的距离。第二个是在另一个位置的某个半径范围内寻找位置。
让我们从计算两个位置之间的距离开始。我将使用 "\e" 元命令来使用 vim 作为我的查