我正在构建一个Rails应用程序,它需要能够在2D平面上指定点的特定距离内从数据库中选择记录。目前,该表存储了两个点(x
和y
,两个整数),简单的数学运算为我提供了a
,b
输入的所有“匹配”(两点)和r
(半径或距离) - WHERE ((x - :a)^2 + (y - :b)^2) < :r^2
。
PostGIS提供了处理距离(ST_Distance
)的功能,但似乎是为更高级的用例而设计的。 如上所述,使用PostGIS库进行简单的距离计算有什么重要的好处吗?
答案 0 :(得分:1)
PostGIS通常仅对使用真实GIS数据的人有用,可能有复杂的几何图形,投影等。如果您不需要这些,请使用built-in geometry capabilities。
专门为您提问使用PostGIS,请使用ST_DWithin。查询将如下所示:
SELECT *
FROM my_table,
(SELECT ST_SetSRID(ST_MakePoint(388279.5, 4959511.8), 26912) AS poi) AS f
WHERE ST_DWithin(geom, poi, 1000);
将使用名为my_table
的几何列,使用NAD83 / UTM zone 12N从投影坐标的1000米范围内获取geom
的所有内容。