gpt4 book ai didi

MySQL:为每个点找到最近的多边形

转载 作者:行者123 更新时间:2023-11-30 22:06:19 26 4
gpt4 key购买 nike

我有两个表:1 张积分表,以及1 个带有多边形的表格。

我正在寻找连接每个点的最近多边形的查询。

points 表如下所示:

|-id-|-name-|-location---|
|====|======|============|
|-1--|-A----|-POINT(1 0)-|
|-2--|-B----|-POINT(3 4)-|
|-3--|-C----|-POINT(2 9)-|
|-4--|-D----|-POINT(6 2)-|

多边形 表如下所示:

|-id-|-name-|-area---------------------|
|====|======|==========================|
|-1--|-A----|-POLYGON(1 0,3 4,2 9,1 0)-|
|-2--|-B----|-POLYGON(3 4,2 9,6 2,3 4)-|
|-3--|-C----|-POLYGON(2 9,6 2,1 0,2 9)-|
|-4--|-D----|-POLYGON(6 2,1 0,3 4,6 2)-|

这个查询的首选输出是这样的:(虚拟数据)

|-id-|-name-|-location---|-id-|-name-|-area---------------------|
|====|======|============|====|======|==========================|
|-1--|-A----|-POINT(1 0)-|-2--|-B----|-POLYGON(3 4,2 9,6 2,3 4)-|
|-2--|-B----|-POINT(3 4)-|-3--|-C----|-POLYGON(2 9,6 2,1 0,2 9)-|
|-3--|-C----|-POINT(2 9)-|-2--|-B----|-POLYGON(3 4,2 9,6 2,3 4)-|
|-4--|-D----|-POINT(6 2)-|-1--|-A----|-POLYGON(1 0,3 4,2 9,1 0)-|

(编辑:只需执行以下 .sql 即可创建此模式:https://gist.github.com/badeend/dfdf826a1afbeeac5866be286a9bd30e)

我尝试了以下查询:

SELECT *, ST_DISTANCE(points.point, polygons.polygon) FROM points INNER JOIN polygons

但这会返回所有多边形的距离,而不仅仅是最近的多边形。

最佳答案

一个简单的方法是使用 ordere by 和 limit

SELECT *, ST_DISTANCE(points.point, polygons.polygon) 
FROM points INNER JOIN polygons
order by ST_DISTANCE(points.point, polygons.polygon) asc limit 1

但你也可以使用像 min() 这样的聚合函数

您还应该为连接分配明确的条件,例如:on points.col = polygons.col

关于MySQL:为每个点找到最近的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com