TSQL - 地理:哪个多边形?

时间:2016-11-10 11:38:54

标签: sql-server sqlgeography

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

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

2 个答案:

答案 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