在 PostgreSQL 中存储和查询位置(坐标)

Storing and querying location (coords) in PostgreSQL

在我的用户模式中,我有一个位置列,它将保存用户最后更新的坐标。有没有我可以使用的 PostgreSQL 数据类型来允许我 运行 SQL 查询来搜索,例如:SELECT username FROM Users WHERE currentLocation="20 Miles Away From "

如果您的 "location" 列包含 GPS 坐标,那么基本上您唯一的选择就是使用 PostGIS 扩展。使用 PostGIS,您可以将您的位置存储在具有 geometrygeography 数据类型的列中,然后您可以在其上应用一组丰富的函数。您的查询将变成:

SELECT username
FROM users
WHERE ST_Distance(currentlocation, ) = 20; -- careful with units

这是假设 </code> 与 <code>currentlocation 的数据类型相同。您可能必须将英里转换为公里,具体取决于您的坐标参考系统和数据类型(geography 将产生公里,geometry 产生数据所用的任何单位)。