使用SQL Server,当我得到表达式@multipolygon.STIntersects(@points)
的结果为1时,表示该点位于包含多边形的多边形之一
有没有办法找出多边形内多个实际上包含点的多边形?
答案 0 :(得分:2)
我之前使用过这样的东西:
select *
from dbo.Numbers as n
where @point.STIntersects(@multipolygon.STGeometryN(n.Number)) = 1
and n.Number <= @multipolygon.STNumGeometries();
dbo.Numbers
是一个计数表。此查询将返回基于1的索引,该索引匹配哪个多边形。如果您也想要多边形,请将STGeometry(n.Number)
添加到选择列表中。
答案 1 :(得分:0)
尝试将单个多边形行拆分为查询中的多个单面多边形行,然后执行交叉,这将只返回匹配的行。
我自己没有做过这样的事情,但这个链接可能有助于https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d99cef8e-d345-44ee-87e1-f9d4df851c35/multipolygon-results-split-into-polygons?forum=sqlspatial