gpt4 book ai didi

sql - 根据 SQL-SERVER 中的空间交集更新行

转载 作者:行者123 更新时间:2023-12-01 23:38:01 24 4
gpt4 key购买 nike

所以基本上我有 2 个表;

  1. BORDERS表格包括 Id(int)Geo(DbGeometry)空间列,包括多边形和多边形。
  2. OBJECTS表格包括 Id(int) , BorderId(int)Point(DbGeometry)包含点的空间列。

我要填写BorderId OBJECTS 中的列根据 Point 的交集表列中带有 Geo BORDERS 中的列表。

我想用 SQL 查询来完成。任何帮助将非常感激!谢谢!

最佳答案

您可以使用STIntersects 找到交点。您的更新查询应类似于以下查询。

UPDATE O
SET O.BorderId = B.Id
FROM BORDERS B INNER JOIN OBJECTS O ON O.Point.STIntersects(B.Geo)=1

当您有多个交叉点时,上述查询将无法正常工作,要根据Area covered 获得最佳交叉点,您可以使用.STArea() 来查找交叉点如下区域。

UPDATE O
SET O.BorderId =
(
SELECT TOP 1 B.Id FROM BORDERS B
WHERE O.Point.STIntersects(B.Geo)=1
ORDER BY O.Point.STIntersects(B.Geo).STArea() DESC
)
FROM OBJECTS O

以上查询将更新 BorderId 与具有最大交叉区域的 BorderId 列。

关于sql - 根据 SQL-SERVER 中的空间交集更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49725893/

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