多边形的边界框

时间:2013-05-07 03:30:54

标签: sql-server sql-server-2008 geospatial spatial

我的表格中有大约40,000个多边形存储为几何体。现在我想在该几何列上创建空间索引。创建空间索引时,它会询问我的边界框值。你能帮我找到我的方向吗?为了获得我的边界框,我需要找到我的xmin,ymin,xmax,ymax。

由于

1 个答案:

答案 0 :(得分:7)

编辑:您当然可以使用EnvelopeAggregate代替UnionAggregate和STEnvelope ......


您可以对所有多边形执行UnionAggregate,在它们周围放置STEnvelope并直观地选择XMin,YMin,XMax,YMax值。当然你可以对边界框的STAsText进行一些TSQL操作,但我会将其作为手动练习。

它为您提供了一个覆盖现有多边形的框,但您应该考虑需要多少填充或未来数据需要的边界。

样品:

use tempdb;
create table GeometryTest( id int identity primary key, geom Geometry );
insert GeometryTest values ( 'POLYGON((-130 54, -130 23, -60 23, -60 54, -130 54))' );
insert GeometryTest values ( 'POLYGON((1 0, 0 0, 0 1, 1 1, 3 5, 1 0))' );
insert GeometryTest values ( 'POLYGON((0 0, -100 5, 0 60, 70 70, 3 5, 0 0))' );

select geometry::UnionAggregate ( geom ).STEnvelope().STAsText()
from GeometryTest;

---------------------------------------------------------------
POLYGON ((-130 0, 70 0, 70 70, -130 70, -130 0))
---------------------------------------------------------------

create spatial index six_GeometryTest_geom on GeometryTest(geom)
    WITH (BOUNDING_BOX = (-130, 0, 70, 70));