EDIT: Można użyć EnvelopeAggregate w miejsce UnionAggregate i STEnvelope oczywiście ...
Można wykonać UnionAggregate na wszystkich wielokątów, położyć STEnvelope wokół nich i wizualnie wybierz wartości XMin, YMin, XMax, YMax. Oczywiście możesz zrobić manipulację TSQL na STAsText
ograniczającej ramce, ale zostawię to jako ćwiczenie ręczne.
To daje pole, które obejmuje istniejące wielokąty, ale należy wziąć pod uwagę, ile potrzebne jest wypełnienie lub jakie ograniczenia są konieczne dla przyszłych danych.
Próbka:
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));
iteracyjne nad wszystkimi wierzchołkami, śledzenie najdalszej lewej, najdalej w prawo, najdalej w górę iw dół najdalej XS i YS jak ty. (Lub rób to, kiedy po raz pierwszy tworzysz, jeśli jest zbyt wolny) – Patashu