我正在构建一个Rails应用程序,该应用程序需要能够在2D平面上指定点的特定距离内从数据库中选择记录。目前,该表存储了两个点(x
和y
,均为整数),简单的数学运算可以为a
、b
(两个点)和r
(半径或距离)-WHERE ((x - :a)^2 + (y - :b)^2) < :r^2
的输入提供所有"匹配"。
PostGIS提供了处理距离(ST_Distance
)的功能,但似乎是为更高级的用例而设计的使用PostGIS库进行如上所述的简单距离计算有什么重要好处吗
PostGIS通常只对处理真实世界GIS数据的人有用,这些数据可能具有复杂的几何图形、投影等。如果您不需要这些,那么只需使用内置的几何图形功能。
使用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);
其将使用名为CCD_ 9的几何列从CCD_。