【发布时间】:2017-04-26 13:04:27
【问题描述】:
我有一个名为locations 的表格,其中包含以下列:
latitudelongitude
现在我想查询从给定纬度/经度点到特定半径内的所有条目。
SELECT * FROM locations
WHERE ST_DWithin(
ST_MakePoint(longitude, latitude),
ST_MakePoint(-0.63098, 51.18291),
100
);
上面的查询解释了我有哪些数据作为输入以及我必须查询的数据。
有什么想法吗?
【问题讨论】:
-
您的实际问题是什么? -- 一个点被认为是在另一个点,如果它们是完全相同的点。您可以使用阈值,但恕我直言,使用
ST_Distance会更直接。 -
问题是上面的查询返回表中的所有条目,而不仅仅是输入长/纬度坐标的
100m半径内的条目。ST_Distance只返回 2 点之间的距离,我想要实现的是从一个点返回特定半径内的所有位置 -
是的,这通常是带有
WHERE ST_Distance(point_in_table, queried_point) < queried_max_distance的查询 -
用
ST_Distance和ST_DWithin都试过了,结果是一样的。尽管距离/半径设置为 1m,但有些行比这远得多。 -
请提供表格定义和示例数据以及预期输出,以便我们能够重现您的发现。
标签: postgresql postgis