EDIT: Bạn có thể sử dụng EnvelopeAggregate ở vị trí của UnionAggregate và STEnvelope tất nhiên ...
Bạn có thể thực hiện một UnionAggregate trên tất cả các đa giác, chấm STEnvelope xung quanh họ và trực quan chọn ra các giá trị XMin, YMin, XMax, YMax. Tất nhiên bạn có thể thực hiện một số thao tác TSQL của STAsText
của hộp giới hạn, nhưng tôi sẽ để nó như một bài tập thủ công.
Điều đó cung cấp cho bạn một hộp bao gồm đa giác hiện có của bạn, nhưng bạn nên xem xét số lượng đệm bạn cần hoặc giới hạn cần thiết cho dữ liệu trong tương lai.
mẫu:
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));
lặp qua tất cả các đỉnh, theo dõi các trái xa nhất, xa nhất phải, xa nhất và xa nhất xuống xs và ys như bạn làm. (Hoặc làm điều đó khi lần đầu tiên tạo ra, nếu nó quá chậm) – Patashu