我用这个来找到最近的点
SELECT
id,
ST_Distance(
POINT(52.760667210533,-7.22646337599035),
geo_point
) as distance
from Points
order by distance limit 1
我有一个包含所有候选点的temppoints临时表,我想将它们标准化到osm节点上,但是有很多,所以我需要一个查询来在一个调用中解析它们。union不允许我使用order-by,我的db-raw查询接口也不允许我触发一系列以“;”分隔的查询。临时表有lat和lon,但也可以很容易地有一个点。我怎么走
select id,NearestTo(TempPoint.geo_point,Points) from TempPoints;
编辑:我可以在我的大型联合查询中插入每个select,这解决了我的问题。
我仍然希望能加入最近的一排。
2条答案
按热度按时间r6hnlfcb1#
我的解决方案是发出一系列查询,每行一个,并用联合将它们绑定在一起。mysql堆栈最终会崩溃,所以您需要分块执行,但默认安装1000就可以了。您必须将查询括起来,因为它们包含order by。有些点可能会失败,所以我给它们都贴上了文字行的标签,这样你就可以编辑和过滤原稿了。您还需要使用
子句,否则它将尝试对整个表进行排序,其中polygon是一个边界框,您必须使用geomfromtext()和polygon()进行处理。当然,在列上还需要一个特殊的空间索引!。这里有一些代码
zzzyeukh2#
这可能适合您: