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

时间:2015-07-27 14:02:33

标签: sql postgresql location

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

1 个答案:

答案 0 :(得分:0)

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

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

这假设$1currentlocation具有相同的数据类型。您可能必须将里程转换为公里,具体取决于您的坐标参考系统和数据类型(geography将产生公里数,geometry产生数据所在的任何单位。)

相关问题