更新在两个或多个多边形中有交集的多边形

问题描述 投票:0回答:1

我有 2 个表,表 #1 包含方形多边形/网格,表 #2 包含行政区域的多边形。我使用 ST_Intersects() 函数使用表 #2 中的数据更新了表 #1。这是我的查询的示例:

update table_grid 
set data1 = table_administrative.data1 
from table_administrative 
where ST_Intersects(table_grid.geom, table_administrative.geom)

查询将如何运行?那么在两个或多个行政区域有交叉点的网格又如何呢?是随机选择,还是最大的区域,还是基于质心?

案例示例如图所示

sql postgresql postgis polygon intersect
1个回答
0
投票

在两个或多个行政区域有交叉点的网格怎么办?是随机选择,还是最大的区域,还是基于质心?

随机,由于

update..from
的工作原理:

使用

FROM
时,您应该确保连接为要修改的每一行最多生成一个输出行。换句话说,目标行不应连接到其他表中的多个行。如果是这样,那么只有一个连接行将用于更新目标行,但将使用哪一个是不容易预测的。

即使您看到最终使用的内容具有一定的重复性,它也是不可靠的。话虽这么说,您可以根据您自己的标准(例如质心的接近度、重叠区域)更正您的查询以显式选择您想要的特定查询,或者仅按字母顺序选择 具有较低/较早 id 的查询。

使用

distinct on

order by..limit 1
row_number()over()
 等添加子查询

© www.soinside.com 2019 - 2024. All rights reserved.