0

我正在构建一个 Rails 应用程序,该应用程序需要能够在 2D 平面上指定点的一定距离内从数据库中选择记录。目前,该表存储两个点(xy,两个整数),简单的数学为我提供了ab(两个点)和r(半径或距离) -的输入的所有“匹配” WHERE ((x - :a)^2 + (y - :b)^2) < :r^2

PostGIS 提供了处理距离 ( ST_Distance) 的函数,但似乎是为更高级的用例而设计的。像上面那样使用 PostGIS 库进行简单的距离计算有什么重要的好处吗?

4

1 回答 1

1

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);

这将从my_table使用名为NAD83 / UTM zone 12Ngeom的投影坐标的 1000 m 范围内的几何列中获取所有内容。

于 2013-08-21T23:57:24.690 回答