EDIT: Si potrebbe utilizzare EnvelopeAggregate al posto del UnionAggregate e STEnvelope naturalmente ...
È possibile eseguire una UnionAggregate su tutti i poligoni, porre STEnvelope intorno a loro e selezionare visivamente i valori XMin, YMin, XMax, YMax. Ovviamente è possibile eseguire alcune manipolazioni TSQL dello STAsText
del riquadro di delimitazione, ma lo lascerò come esercizio manuale.
Fornisce una casella che copre i poligoni esistenti, ma è necessario considerare la quantità di padding necessaria o i limiti necessari per i dati futuri.
Esempio:
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));
iterare su tutti i vertici, tenendo traccia del più a sinistra, più lontano a destra, più lontano e più lontano verso il basso xs e ys come si fa. (O fallo quando crei prima, se è troppo lento) – Patashu