2

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

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

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

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

但是查询需要很长时间(到目前为止,60 分钟还在计数;还没有答案)。我想知道其他人可以想到哪些其他技术更有效。此查询不需要是实时查询,但 60 多分钟也不行。

4

1 回答 1

3

理想情况下,您应该使用 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;
于 2014-01-16T22:26:46.873 回答