SQL による ST_Geometry タイプと ST_Raster タイプ使用の概要
データベース管理システム(DBMS)の SQL(Structured Query Language)を使用してジオデータベースに格納された情報を処理できます。SQL は、データ定義コマンドとデータ操作コマンドをサポートするデータベース言語です。
SQL 経由でジオデータベースの情報にアクセスすれば、ジオデータベースによって管理される表形式データを外部アプリケーションから処理できます。この外部アプリケーションは、非空間データベース アプリケーションであっても、ArcObjects 以外の環境で開発されたカスタムの空間アプリケーションであっても構いません。
ジオデータベースでサポートされている種類の DBMS に加えて、ファイルベースのデータ ソースに対しても SELECT ステートメントを発行することができます。「SQL 式の構築について」および「SQL リファレンス」では、さまざまなデータ ソースに対する SELECT ステートメントの構築法について説明されています。
SQL を使用してジオデータベースにアクセスしている場合は、バージョニング、トポロジ、ネットワーク、テレイン、フィーチャリンク アノテーション、その他のクラスまたはワークスペースのエクステンションなどのジオデータベースの機能は無視されることに注意してください。一部のジオデータベース機能に必要なテーブル間の関係を維持するために、トリガやストアド プロシージャなどの DBMS 機能が使用されている場合があります。これらの機能を考慮せずにデータベースに対して SQL コマンドを実行すると(たとえば、INSERT ステートメントを実行してビジネス テーブルにレコードを追加したり、既存のフィーチャクラスに列を追加したりする)、ジオデータベース機能を無視してジオデータベース内のデータ間の関係を破壊してしまう可能性があります。
一般に、SQL を使用してジオデータベース内の情報を変更する場合は、以下の指針に従ってください。
- マルチバージョン対応ビューと組み合わせて SQL を使用しない限り、データをバージョン対応にした後は、SQL を使用してレコードを更新しないでください。
- SQL を使用してバージョン非対応データを更新するときは、リレーションシップ クラスやフィーチャリンク アノテーション、トポロジなど、ジオデータベースの振舞いを通じてデータベース内の他のオブジェクトに影響を与える属性は変更しないでください。
- SQL ステートメントの実行後は、COMMIT または ROLLBACK ステートメントを発行して、変更内容を確実にデータベースにコミットするか取り消してください。
上記の指針は、空間属性にも非空間属性にも当てはまります。このヘルプ ファイルでは、SQL を使用して行う ST_Geometry および ST_Raster データ格納タイプに格納されたデータの空間選択、データの変更、データのプロパティの変更を中心として説明しています。
ST_Geometry 格納タイプ
ST_Geometry SQL データ タイプは、DB2、Informix、Oracle、および PostgreSQL のジオデータベースで使用されます。このデータ タイプはジオデータベース内部で使用でき、このデータ タイプを使用することで、サードパーティ製アプリケーションからシンプル フィーチャクラス ジオメトリに SQL でアクセスできるようになります。
ST_Geometry は、OGC および ISO SQL Multimedia Specification for Spatial を実装します。OGC については、『OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 2: SQL option』をご参照ください。ISO については、『ISO/IEC 13249-3 SQL multimedia and application packages - Part 3: Spatial』をご参照ください。
DB2 または Informix の SQL で ST_Geomery タイプを使用する方法については、IBM DB2 および Informix のマニュアルをご参照ください。Oracle および PostgreSQL の SQL で ST_Geometry タイプを使用する方法については、以下のセクションをご参照ください。
このヘルプで「SQL での空間タイプの使用」について説明しているセクションには、DB2 と Informix の例が記載されています。ただし、これらのデータベースにおける ST_Geometry 使用の詳細については、IBM のマニュアルをご参照ください。
Oracle および PostgreSQL における ST_Geometry と SQL 関数の使用
SQL を使用してデータにアクセスし分析や操作を行うには、ArcSDE とともにインストールされた関数を利用する必要があります。
これらの関数は用途に基づいてグループ分けできます。
-
空間リレーションシップをテストする関数
ジオメトリを入力として、ジオメトリ間に特定のリレーションシップが存在するかどうかを判定します。空間リレーションシップの条件が満たされている場合、関数は 1 または t(TRUE)を返します。空間リレーションシップの条件が満たされていない(リレーションシップが存在しない)場合、関数は 0 または f(FALSE)を返します。各関数の詳細については、「空間リレーションシップ」をご参照ください。
-
空間処理を実行する関数
空間データを入力として、それを分析して、新しい空間データを返します。関数の説明については、「空間処理」をご参照ください。
-
ジオメトリのプロパティを返す関数
ジオメトリを入力として、それに関する特定の情報を返す関数がいくつかあります。これについては、「ジオメトリのプロパティ」で説明されています。一部の関数は、実際にはフィーチャが特定の条件を満たすかどうかをチェックします。ジオメトリが条件を満たす場合、関数は 1 または t(TRUE)を返します。ジオメトリが条件を満たさない場合、関数は 0 または f(FALSE)を返します。このような関数としては、ST_EqualSRS(PostgreSQL のみ)、ST_Is3d(Oracle のみ)、ST_IsClosed、ST_IsEmpty、ST_IsMeasured(Oracle のみ)、ST_IsRing、ST_IsSimple、および ST_OrderingEquals があります。
-
空間データの作成または空間の変換を実行する関数
あるタイプのジオメトリを入力として、異なるタイプのジオメトリを返します。または、ジオメトリの記述を入力として、作成したジオメトリを返します。その一例が ST_Transform です。この関数は実際には、ジオメトリの空間参照を、測地基準系のある空間参照から同じ測地基準系の別の空間参照に変更します。別のタイプのジオメトリまたはテキスト記述からジオメトリを作成する関数を、以下の表に挙げます。
ST_LineFromShape(PostgreSQL のみ)
ST_MPolyFromShape(PostgreSQL のみ)
ST_PointFromText(Oracle のみ)
ST_LineFromText(Oracle のみ)
ST_MPolyFromText(Oracle のみ)
ST_Curve(Oracle のみ)
ST_PolyFromShape(PostgreSQL のみ)
ST_MultiCurve(Oracle のみ)
ST_PolyFromText(Oracle のみ)
ST_GeomCollFromShape(PostgreSQL のみ)
ST_MLineFromShape(PostgreSQL のみ)
ST_GeomCollFromWKB(PostgreSQL のみ)
ST_MLineFromText(Oracle のみ)
ST_Surface(Oracle のみ)
ST_GeomFromShape(PostgreSQL のみ)
ST_MPointFromShape(PostgreSQL のみ)
ST_MultiSurface(Oracle のみ)
ST_GeomFromText(Oracle のみ)
ST_MPointFromText(Oracle のみ)
ST_PointFromShape(PostgreSQL のみ)
ST_Raster 格納タイプ
ArcSDE ジオデータベースでは、ST_Raster データ タイプを使用できます。このデータ タイプはジオデータベース内部で使用でき、このデータ タイプを使用することで、サードパーティ製アプリケーションからラスタ データに SQL でアクセスできるようになります。
ST_Raster タイプは、Oracle、PostgreSQL、および Microsoft SQL Server の ArcSDE ジオデータベースで使用できます。
SQL を使用して ST_Raster タイプにアクセスする ST_Raster 関数には、2 つの種類があります。
- ST_Raster と ST_PixelData のメソッド
- ST_RasterUtil のストアド プロシージャ
ST_Raster と ST_PixelData の関数
これは ST_Raster オブジェクトを初期化し操作するメソッドです。
ST_RasterUtil のストアド プロシージャ ユーティリティ
ST_RasterUtil のストアド プロシージャは ST_Raster タイプの作成と保守をサポートします。使用可能な関数は次のとおりです。
ST_RasterUtil.checkLibraryVersion