ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

ST_Geometry 格納タイプ

  • サブクラス
  • ST_Geometry 関数呼び出し
  • ST_Geometry の実装方法

ST_Geometry データ タイプはユーザー定義データ タイプ (UDT) の SQL 3 Specification を実装しているため、ランドマークの場所、道路、土地区画といった空間データを格納できる列を作成することができます。これは、ジオデータベースおよびデータベースに対して、 ISO/OGC 準拠の SQL アクセスを提供します。このジオメトリ格納は、地理フィーチャを表すオブジェクト (ポイント、ライン、ポリゴン) の格納を提供することで、データベースの機能を拡張します。このジオメトリ格納は、データベースのリソースを効率よく使用し、レプリケーションやパーティションといったデータベースの機能との互換性を維持し、空間データへのすばやいアクセスを可能にします。

Esri は、ST_Geometry タイプを Oracle、PostgreSQL、SQLite で実装しました。この ST_Geometry データ タイプ は、ArcGIS ヘルプで説明されています。

ST_Geometry 自体は、インスタンス化されない抽象スーパークラスです。ただし、そのサブクラスはインスタンス化することができます。インスタンス化されたデータ タイプはテーブルの列として定義することができ、その他の値を挿入することができます。

列を ST_Geometry タイプとして定義することはできますが、インスタンス化することができないため ST_Geometry の値は挿入しません。代わりに、サブクラスの値を挿入します。

次の図は、ST_Geometry データ タイプとそのサブクラスの階層を示しています。

ST_Geometry
ST_Geometry スーパークラスとそのサブクラス

サブクラス

ST_Geometry のサブクラスは、ベース ジオメトリ サブクラスと同種コレクション サブクラスの 2 つのカテゴリに分類されます。ベース ジオメトリには、ST_Point、ST_LineString、ST_Polygon が含まれ、同種コレクションには、ST_MultiPoint、ST_MultiLineString、ST_MultiPolygon が含まれます。名前が示しているように、同種コレクションはベース ジオメトリのコレクションです。同種コレクションでは、ベース ジオメトリのプロパティを共有することに加えて、独自のプロパティを持つこともできます。

各サブクラスは、その名前が示唆するジオメトリ タイプを格納します。たとえば、ST_MultiPoint はマルチポイントを格納します。以下の表に、サブクラスの一覧とそれらについての説明を示します。

サブタイプ説明

ST_Point

  • 座標空間で場所を 1 つ占有する 0 次元のジオメトリ。
  • X,Y 座標値が 1 つあり、常にシンプルであり、境界は NULL です。

ST_LineString

  • 線形に補間されたパスを定義するポイント列として格納される 1 次元オブジェクト。
  • ST_LineString には長さがあります。
  • ST_LineString はその内部と交わっていなければシンプルです。
  • 閉じた ST_LineString の端点 (境界) は、空間内の同じポイントを占めます。
  • ST_LineString は閉じていてシンプルである場合はリングです。
  • 端点は、ST_LineString が閉じていなければ、通常は ST_LineString の境界を形成します。ST_LineString が閉じていれば、境界は NULL です。
  • ST_LineString の内部は、閉じていなければ端点間を結ぶパスであり、閉じている場合は内部が連続しています。

ST_Polygon

  • 一連のポイントとして格納される 2D サーフェスであり、外部の境界リングと 0 個以上の内部リングを定義します。
  • ST_Polygon には面積があり、常にシンプルです。
  • 外部リングと内部リングは ST_Polygon の境界を定義し、リング間で囲まれた空間は ST_Polygon の内部を定義します。
  • ST_Polygon のリングは接点で交わる場合がありますが、決して交差しません。

ST_MultiPoint

  • ST_Point のコレクション。
  • ディメンションは 0 です。
  • ST_MultiPoint は、同じ座標空間を占めるエレメントが 1 つもなければ、シンプルです。
  • ST_MultiPoint の境界は NULL です。

ST_MultiLineString

  • ST_LineString のコレクション。
  • ST_MultiLineString には長さがあります。
  • ST_MultiLineString は、ST_LineString エレメントの端点でのみ交わる場合はシンプルです。
  • ST_LineString エレメントの内部が交差している場合、ST_MultiLineString はシンプルではありません。
  • ST_MultiLineString の境界は、ST_LineString エレメントの交差していない端点です。
  • ST_MultiLineString が閉じているのは、すべての ST_LineString エレメントが閉じている場合です。
  • ST_MultiLineString のすべてのエレメントのすべての端点が交差している場合、ST_MultiLineString の境界は NULL です。

ST_MultiPolygon

  • ポリゴンのコレクション。
  • ST_MultiPolygon には面積があります。
  • ST_MultiPolygon の境界は、そのエレメントの外部リングと内部リングの長さを累積したものです。
  • ST_MultiPolygon の内部は、そのエレメントである ST_Polygon の内部を累積したものとして定義されます。
  • ST_MultiPolygon のエレメントの境界は接点でのみ交わる場合があります。

ST_Geometry サブタイプ

各サブクラスは ST_Geometry スーパークラスのプロパティを継承しますが、サブタイプ固有のプロパティもあります。ST_Geometry データ タイプで使用できる関数は、サブクラス エンティティ タイプでも使用できます。ただし、一部の関数はサブクラス レベルで定義されており、特定のサブクラスにしか対応しません。たとえば、ST_GeometryN 関数には、引数として ST_MultiLinestring、ST_MultiPoint、ST_MultiPolygon サブタイプのみを渡すことができます。

ST_Geometry のサブクラスを検出するには、ST_GeometryType 関数を使用できます。ST_GeometryType 関数は、ST_Geometry を受け取り、インスタンス化されたサブクラスを文字列形式で返します。同種コレクションに含まれているベース ジオメトリ エレメントの数を取得するには、ST_NumGeometries 関数を使用できます。この関数は、同種コレクションを受け取り、コレクションに含まれているベース ジオメトリ エレメントの数を返します。

ST_Geometry 関数呼び出し

Oracle と PostgreSQL の ST_Geometry 関数は、SQL で実装されます。これはデータベース レベルの言語です。Oracle の場合は、PL/SQL (Procedural Language Structured Query Language) です。PostgreSQL の場合は PL/pgSQL です。

SQL 関数で Oracle または PostgreSQL の ST_Geometry 列にアクセスする際には、データベースに直接アクセスすることになります。したがって、データベースが ST_Geometry ライブラリにアクセスできる必要があります。Oracle の場合、データベースは extproc プロセスも使用します。

SQLite の場合、ST_Geometry 関数は C の ST_Geometry ライブラリで実装されています。ST_Geometry 関数を使用するには、ST_Geometry ライブラリにアクセスする必要があります。

Oracle

関数は PL/SQL で実装されており、これによって、C プログラミング言語で記述された外部共有ライブラリ ファイルの関数が呼び出されます。関数は、ライブラリ名 (Oracle の ST_Geometry の場合は st_shapelib) をライブラリ ファイル名にマップするエイリアス名で PL/SQL から呼び出されます。(詳細については、Oracle の CREATE LIBRARY コマンドに関するドキュメントをご参照ください。) st_shapelib を必要とする空間タイプ関数が初めて呼び出されたときには、SQL セッションに対する extproc プロセスの生成がデータベースからリスナーにリクエストされます。extproc には、st_shapelib の場所、呼び出す関数の名前、およびそのパラメーターが渡されます。extproc によって st_shapelib が読み込まれ、関数が呼び出されます。外部関数が完了すると、extproc は結果を返し、アクティブ状態のままこのセッションで追加の関数呼び出しを待ちます。extproc プロセスは、SQL セッションが切断されると終了します。

これには、以下の構成が必要になります。

  • データベースが、リスナー プロセスおよび extproc に情報を渡せるように、st_shapelib が含まれたファイルの場所を認識できる必要があります。
  • ST_Geometry の演算子と関数は、user_libraries テーブルにある st_shapelib 用の file_spec がサーバー上の st_shapelib の物理的なファイルの場所に一致しなければ機能しません。このため、Oracle ユーザー ライブラリでライブラリの定義を更新して、CREATE LIBRARY コマンドで st_shapelib が含まれたファイルへの正しいライブラリ パスを含めるようにします。
    メモ:

    このライブラリ パスの定義を変更すると、このパスを参照しているパッケージ本体が無効になります。したがって、ジオデータベース ストアド プロシージャの中には、Oracle でのパッケージ本体の再コンパイルが必要なものもあります。

  • データベースが、extproc へのリクエストを処理するサービスを認識できる必要があります。これは tnsnames.ora ファイルで設定します。
  • extproc には、st_shapelib を含むファイルの読み込み権限が必要です。この権限は、extproc.ora ファイルで環境変数 EXTPROC_DLLS を定義して設定します。
  • (通常は ORACLE_HOME を所有するユーザーで実行される) extproc には、ライブラリ ファイルの場所に対する読み取り権限と、ファイルの実行権限が必要です。

PostgreSQL

st_geometry ライブラリは、PostgreSQL が ST_Geometry 関数にアクセスできるよう、PostgreSQL インストール ディレクトリに格納する必要があります。Windows の st_geometry.dll ファイルを、PostgreSQL インストール ディレクトリの lib フォルダーにコピーする必要があります。Linux サーバーの場合は、Linux の st_geometry.so ファイルを、PostgreSQL サーバーの /usr/lib/pgsql ディレクトリにコピーします。これらのファイルは、両方とも、ArcMap または ArcGIS Server のインストール場所の DatabaseSupport フォルダーにあります。または、My Esri からダウンロードすることもできます。

SQLite

SQLite クライアントが SQL 関数にアクセスできるようにするには、ST_Geometry ライブラリの場所を指定して、ライブラリを読み込む必要があります。ライブラリの場所は、クライアントの PATH (Windows) または LIBPATH (Linux) システム環境変数で設定したり、ST_Geometry ライブラリを読み込むときにパスで指定したりできます。手順については、「SQLite の ST_Geometry ライブラリの読み込み」をご参照ください。

ST_Geometry の実装方法

ST_Geometry は、ユーザー定義タイプとして実装されており、IBM Db2、IBM Informix、Oracle、PostgreSQL、および SAP HANA 内のデータベースおよびジオデータベースで使用できます。SQLite、Dameng、および IBM Netezza データベースでも、ST_Geometry を使用できます。

それぞれのデータベース管理システムは ST_Geometry を次のようにサポートしています。

データベース別の ST_Geometry

データベース管理システム説明

Dameng

ST_Geometry タイプは Dameng データベースに付属していますが、初期化する必要があります。

IBM Db2

Db2 製品の一部として IBM によってデフォルトで含められる Db2 Spatial Extender は、ST_Geometry をサポートします。ST_Geometry タイプは Esri と IBM によって共同開発されました。

Db2 for z/OS と Db2 とでは SQL 構文にいくつか違いがあることに注意してください。使用している Db2 に応じた適切な構文については、Db2 のマニュアルをご参照ください。

IBM Informix

Informix 製品の一部として IBM によって提供される Informix Spatial DataBlade は、ST_Geometry タイプをデータベースおよびジオデータベースにインストールします。ST_Geometry は、フィーチャ ジオメトリを Informix 内のジオデータベースに格納するために使用される唯一のオプションです。これは Esri と IBM によって共同開発されたもので、空間データに対する ISO/OGC 準拠の SQL アクセスを可能にする高性能な格納タイプです。

IBM Netezza

Netezza の ST_Geometry タイプは、IBM Netezza Analytics ソフトウェア パッケージの一部である Netezza Spatial Esri ライブラリ (nzSpatial_Esri) を通じて実装されています。

Oracle

ST_Geometry データ タイプは、Oracle にジオデータベースを作成したときにインストールされ、Oracle 内のジオデータベースのデフォルトのジオデータベース格納タイプです。ジオデータベース機能が不要な場合、[空間タイプの作成 (Create Spatial Type)] ジオプロセシング ツールを使用して、Oracle データベースに ST_Geometry タイプをインストールできます。

PostgreSQL

ST_Geometry データ タイプは、PostgreSQL にジオデータベースを作成したときにインストールされ、フィーチャ ジオメトリを PostgreSQL 内のジオデータベースに格納するためのデフォルトのタイプです。ジオデータベース機能が不要な場合、[空間タイプの作成 (Create Spatial Type)] ジオプロセシング ツールを使用して、PostgreSQL データベースに ST_Geometry タイプをインストールできます。

SAP HANA

SAP HANA データ ウェアハウスのインストールには、デフォルトで ST_Geometry タイプが含まれています。

SQLite

SQLite の ST_Geometry データ タイプは、st_geometry ライブラリおよび geometryblob 列を使用して実装されます。ST_Geometry SQL 関数は、データベースではなく st_geometry ライブラリに保存されます。

[SQLite データベースの作成 (Create SQLite Database)] ジオプロセシング ツールを使用して、ST_Geometry タイプを格納する SQLite データベースを作成できます。また、CreateOGCTables SQL 関数を使用して、既存の SQLite データベースに ST_Geometry データ タイプを作成することもできます。

関連トピック

  • Oracle の ST_Geometry にアクセスするための extproc の構成
  • ST_Geometry タイプにおける SQL 実装の違い

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • Esri ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2021 Esri. | プライバシー | リーガル