TSQL - 地理:哪个多边形?

TSQL - Geography: Which polygon?

使用 SQL 服务器,当我得到表达式 @multipolygon.STIntersects(@points) 的结果 1 时,表示该点位于包含多多边形的多边形之一内

有没有办法找出多多边形中的哪个多边形实际上包含该点?

尝试在查询中将单个多边形行拆分为多个单多边形行,然后进行相交,这将return 仅匹配行。

我自己没有做过类似的事情,但是这个 link 可能会有所帮助 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d99cef8e-d345-44ee-87e1-f9d4df851c35/multipolygon-results-split-into-polygons?forum=sqlspatial

我以前用过类似的东西:

select *
from dbo.Numbers as n
where @point.STIntersects(@multipolygon.STGeometryN(n.Number)) = 1
   and n.Number <= @multipolygon.STNumGeometries();

其中 dbo.Numbers 是计数 table。此查询将 return 一个基于 1 的多边形匹配索引。如果您也想要多边形本身,请将 STGeometry(n.Number) 添加到 select 列表。