我的表中存储了大约 40,000 个多边形作为几何图形。现在我想在那个几何列上创建空间索引。在创建空间索引时,它要求我提供边界框值。你能帮我找到我的边界吗?为了得到我的边界框,我需要找到我的 xmin、ymin、xmax、ymax。
谢谢
我的表中存储了大约 40,000 个多边形作为几何图形。现在我想在那个几何列上创建空间索引。在创建空间索引时,它要求我提供边界框值。你能帮我找到我的边界吗?为了得到我的边界框,我需要找到我的 xmin、ymin、xmax、ymax。
谢谢
编辑:您当然可以使用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));