计算多边形地理联合的有效技术

时间:2014-01-16 04:57:31

标签: sql sql-server geography sqlgeography

我有包含许多(70,000+)GEOGRAPHY个多边形的数据库表。 (多边形是属性包。)我们需要对聚合形状(MULTIPOLYGON)执行大量计算,其中包含所有这些包裹的地理联合,例如“凸包的百分比是多少”被这些多边形覆盖“? (注意:这并不像听起来那么简单。重叠的地块确实发生了,我们不想重复计算它们,所以我们不能简单地加上地块的面积。)

为了执行这些计算,我们想要生成一个新形状,它代表所有多边形的地理联合。根据{{​​3}}的答案,我尝试了以下查询:

DECLARE @Shape GEOGRAPHY
SET @Shape = GEOGRAPHY::STGeomFromText('MULTIPOLYGON EMPTY', 4326)

SELECT @Shape = @Shape.STUnion(Shape)
FROM Parcel

但是查询永远 (60分钟并计算,到目前为止;还没有回答)。我想知道其他人可以想到哪些更高效的技术。此查询不需要是实时查询,但60分钟也不会有效。

1 个答案:

答案 0 :(得分:2)

理想情况下,您应该使用UnionAggregate函数,尽管它仅在SQL Server 2012之后才存在。

http://technet.microsoft.com/en-us/library/ff929095.aspx

上一个链接的示例:

SELECT City,
geography::UnionAggregate(SpatialLocation) AS SpatialLocation
FROM Person.Address
WHERE PostalCode LIKE('981%')
GROUP BY City;