私は約40,000のポリゴンをテーブルにジオメトリとして保存しています。次に、そのジオメトリ列に空間インデックスを作成します。空間インデックスを作成している間、それは私にバウンディングボックス値を求めています。私の境界を見つける方法を教えてください。私の境界ボックスを得るために、私はxmin、ymin、xmax、ymaxを見つける必要があります。ポリゴンのバウンディングボックス
おかげ
私は約40,000のポリゴンをテーブルにジオメトリとして保存しています。次に、そのジオメトリ列に空間インデックスを作成します。空間インデックスを作成している間、それは私にバウンディングボックス値を求めています。私の境界を見つける方法を教えてください。私の境界ボックスを得るために、私はxmin、ymin、xmax、ymaxを見つける必要があります。ポリゴンのバウンディングボックス
おかげ
EDIT:あなたはもちろんのUnionAggregateとSTEnvelopeの代わりにEnvelopeAggregateを使用することができます...
あなたはすべてのポリゴンに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));
天才!ありがとうございました。私はウェリントンから来た –
SQLサーバー2008でこれを行う方法はありますか? UnionAggregateとEnvelopeAggregateはまだ存在しません。 – Philipp
@Philippこれは***です*** *** SQLサーバー2008.多分あなたは別の互換モードで2005または2008を意味する? – RichardTheKiwi
反復、遠い左の追跡、遠い右、アップ遠いとあなたがそうであるようにXSおよびYSをダウン遠いです。 (または、それが遅すぎる場合、最初の作成時に行う) – Patashu