ArcGIS と Microsoft 空間タイプ

ジオデータベースは、Microsoft の geometry 空間データ タイプおよび geography 空間データ タイプを使用したベクタ データの格納をサポートしています。これらのタイプは SQL Server で利用可能であり、個別のインストールは不要です。SQL を使用して空間データにアクセスする場合には、これらのデータ タイプを使用します。

Microsoft の geometry タイプは既存の GIS 空間データ タイプと同様に、定義済みの投影系などの任意の平面の座標系を使用します。

Microsoft の geography タイプは、緯度経度の座標系とともに格納される楕円体上のデータに使用されます。

2 つのタイプは、空間の計算方法が異なります。Microsoft 空間タイプの詳細については、SQL Server のマニュアルをご参照ください。

Microsoft 空間タイプを指定するコンフィグレーション キーワードの使用

デフォルトでは、SQL Server のジオデータベースは、Microsoft geometry タイプを使用します。Microsoft geography タイプを使用して運用している SQL Server データベースのジオデータベースに格納する場合、(1)SDE_dbtune テーブルの DEFAULTS コンフィグレーション キーワードの GEOMETRY_STORAGE パラメータを GEOGRAPHY に変更するか、(2)フィーチャクラスの作成時に、GEOMETRY_STORAGE パラメータが GEOGRAPHY に設定されているコンフィグレーション キーワードを指定します。

DEFAULTS キーワードのGEOMETRY_STORAGE パラメータを変更するのは、ほとんどのユーザが geography タイプをデータに使用するケースが大半を占める場合のみにしてください。一部のデータだけを geography タイプで格納する場合は、フィーチャクラスの作成時に別のキーワードを指定します。GEOGRAPHY というキーワードが用意されています。ユーザが固有のカスタム キーワードを作成することもできます。

既存のジオデータベースへの空間テーブルの登録

Microsoft の geometry 列または geography 列が含まれるテーブルを、サードパーティ アプリケーションや SQL を使用して作成した場合は、このテーブルをジオデータベースに登録して、リレーションシップ クラス、トポロジ、ジオメトリック ネットワーク、Cadastral Fabric、テレイン、スキーマなどのジオデータベース機能を利用し、サブタイプ、デフォルト値、ドメイン、または整合性ルールを持たせることができます。これを実行するには、テーブルが次の前提条件を満たしている必要があります。

テーブルを ArcGIS for Desktop からジオデータベースに登録する方法については、「ジオデータベースへのテーブルの登録」をご参照ください。

空間インデックスの作成

SQL Server では、空間インデックスを作成できるようにするために、テーブルに主キーを作成する必要があります。

ArcGIS の場合

ArcGIS を使用して geometry 列または geography 列を持つフィーチャクラスを作成すると、デフォルトで、ArcGIS はビジネス テーブルの RowID(ObjectID)列にクラスタ化された主キーを作成してから、フィーチャクラスの作成時に使用された、SDE_dbtune テーブルのコンフィグレーション キーワードの B_MS_SPINDEX パラメータに設定されている値に基づいて空間インデックスを構築します。フィーチャクラスがバージョン対応登録されていると、クラスタリングされた主キーは ADD テーブルの RowID 列とステート ID 列に作成され、フィーチャクラスの作成時に使用されたコンフィグレーション キーワードの A_MS_SPINDEX に設定されている値に基づいて空間インデックスが構築されます。この両方のパラメータのデフォルト値は次のとおりです。

GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM), CELLS_PER_OBJECT = 16

SDE_dbtune テーブルの値の設定については、「DBTUNE テーブルの内容の変更」をご参照ください。

また、geometry または geography 空間列を持つフィーチャクラスを ArcGIS で作成すると、フィーチャクラスのバウンディング ボックスが、インデックス付けされるデータの範囲として計算されます。この範囲外にあるフィーチャはインデックス付けされませんが、空間検索では検索の対象となります。フィーチャクラスの範囲が設定されていない場合は、フィーチャクラスの空間参照系に対する最大の座標範囲がバウンディング ボックスで使用されます。レイヤが LOAD_ONLY_IO モードから NORMAL_IO モードに切り替わるときは常に、バウンディング ボックスが最新の範囲で調整されます。あるいは、フィーチャクラスの範囲を、[フィーチャクラス プロパティ] ダイアログ ボックスの [フィーチャの範囲] タブから設定または再計算することもできます。

ArcGIS 以外

ArcGIS 以外のアプリケーションで作成された空間テーブル、たとえば SQL を使用して作成されたテーブルの場合は、テーブルに主キーを作成してから SQL を使用して空間インデックスを作成します。次に、geometry または geography タイプの列が含まれるテーブルに空間インデックスを作成するための SQL 構文を示します。

CREATE SPATIAL INDEX <index_name>
ON <table> (<spatial column>)
USING GEOMETRY_GRID
WITH (
BOUNDING_BOX = minx,miny,maxx,maxy),
GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high), 
CELLS_PER_OBJECT = n,
<other regular btree index options like filegroups, fill factors, etc>
)

エンタープライズ ジオデータベースにおける SQL Server Geography データ タイプの使用に関する既知の制約

SQL Server geography データタイプのデータをエンタープライズ ジオデータベースに格納する場合に、注意が必要な制約を次に挙げます。

9/14/2013