Delphi ,代码示例代码使用SQL Server Spatial获取重叠面列表

p5cysglq  于 2023-02-03  发布在  SQL Server
关注(0)|答案(1)|浏览(138)

可使用SQL Server空间.STContains函数(https://learn.microsoft.com/en-us/sql/t-sql/spatial-geometry/stcontains-geometry-data-type?view=sql-server-ver16&viewFallbackFrom=sql-server-ver18)计算面之间的重叠
我可以得到一些代码样本来获取位于给定多边形内的多边形列表(记录索引应该是查询参数),返回该多边形内的记录列表吗?

select * 
from table 
where PolygonsInside (RecordIndex = 1)

如何获取此SQL查询?

oug3syen

oug3syen1#

您的描述(“多边形之间的重叠”)不一定与您选择的函数匹配(来自您链接到的同一文档,STContains()“如果一个几何体示例完全包含另一个几何体示例,则返回1。");STIntersects()可能是更好的选择。
不管这些,下面是一个查询,您可以编写该查询来查找表中与同一表中给定的另一个多边形ID重叠的任何多边形。

select overlaps.ID, overlaps.Polygon
from PolygonTable as given
join PolygonTable as other
   on other.Polygon.STIntersects(given.Polygon) = 1
   and other.ID <> given.ID
where given.ID = 1;

也就是说,如果您提供的ID为1,该查询将在表中查找与该ID相交的任何多边形。注意,我在连接中添加了一个 predicate ,以便不返回具有所提供ID的多边形-这可能是也可能不是您想要的,但如果您 * 确实 * 想要返回该多边形,则很容易将其删除。

相关问题