空間参照
空間参照は、X、Y、Z 値の座標系を含みます。エンタープライズ ジオデータベースでは、空間参照には許容値と座標精度値も含まれます。この情報はすべて、平面の地図上の形状が地球上のどこを表すかを示すために役立ちます。
各空間参照には、識別子(well-known ID、空間参照 ID、SRID とも呼ばれます)と、座標系の WKT(Well-Known Text)定義も含まれます。EPSG(European Petroleum Survey Group)や Esri が定義するような標準 ID がありますが、空間参照の ID は必ずしも標準ではありません。このことは、データベース間で空間データを移動するときに意味を持ちます。詳細については、このトピックのセクション「ArcGIS での空間参照系の使用」をご参照ください。
ArcGIS で作成された場合、特定の SRID の空間参照系がフィーチャクラスに割り当てられます。空間参照が割り当てられてないフィーチャクラスは、不明の空間参照を持つことになります。この空間参照および SRID は、フィーチャクラスのすべての行に適用されます。
空間テーブルをデータベース内で直接(ArcGIS の外部で)作成した場合、空間テーブルの各レコードに別の SRID と空間参照を割り当てることができます。ただし、ArcGIS でこれらのデータベース テーブルを使用するときには、ArcGIS はテーブル全体で 1 つの SRID および空間参照だけを認識します。どの SRID を使用するかを指定するクエリ レイヤを定義すると、その SRID のすべての行が ArcGIS でアクセス可能になります。そうしない場合、ArcGIS はテーブル内の最初の行の SRID を読み込み、その SRID が定義された行だけが ArcGIS でアクセス可能になります。
エンタープライズ ジオデータベースの空間参照テーブル
エンタープライズ ジオデータベース(および ST_Geometry タイプがインストールされた Oracle または PostgreSQL データベース)では、すべての空間参照系がジオデータベース システム テーブルに格納されます。
データベースと格納タイプ | ジオデータベース システム テーブル |
---|---|
Oracle(ST_Geometry) | sde_spatial_references |
Oracle(SDO_Geometry または SDEBINARY) | sde.spatial_references |
PostgreSQL(ST_Geometry および PostGIS Geometry) | public.sde_spatial_references このテーブルには、空間参照を挿入できる編集可能なビューもあります(sde.st_spatial_references)。 |
Informix(ST_Geometry) | sde.spatial_references |
DB2(ST_Geometry) | db2gse.st_spatial_reference_systems(システム ビュー) |
SQL Server(Geometry、Geography、および SDEBINARY) | sde_spatial_references |
空間参照系をユーザのデータで使用するには、その空間座標系が空間参照テーブルに存在しなければなりません。
ArcGIS 10.1 以降、Oracle および PostgreSQL の ST_Geometry に使用されるジオデータベース システム テーブルには、空間参照 ID(SRID)に EPSG コードを使用する空間参照系が事前に設定されます。Oracle および PostgreSQL のアップグレードされたジオデータベースでは、sde.st_spatial_references テーブルと public.sde_spatial_references テーブルに空間参照系が追加されます。
各データベース管理システムの空間参照テーブルにあるすべての列の定義については、各システム テーブルのトピックをご参照ください。
以下は、ジオデータベースで空間参照系がどのように使用されるかを説明した技術情報です。
内部関数は、空間参照系のパラメータを使用してジオメトリの浮動小数点座標をそれぞれ 64 ビットの正の整数に変換/スケーリングしてから格納します。座標は、取得時に外部浮動小数点フォーマットに戻されます。
浮動小数点数座標は false x 値と false y 値を差し引くことによって整数に変換され、これが false の原点への変換になります。次に X、Y の単位を乗じてスケーリングし、単位の半分の値を加算してから、余りが切り捨てられます。
省略可能な Z 座標とメジャーも同様に扱われますが、これらはそれぞれ false z 値と false m 値で変換され、Z 単位と M 単位でスケーリングされます。
データベースの空間参照テーブル
Oracle または PostgreSQL データベースにインストールされた ST_Geometry タイプを除いて、SQL ジオメトリ タイプを使用するデータベースは ArcSDE システム テーブルを持ちません。DBMS はそれぞれ独自のシステム テーブルに空間参照を格納します。一般に、それらのテーブルは座標系の WKT(Well-Known Text)と ID を格納しますが、精度値や許容値は格納しません。
ほとんどのデータベースは空間参照 ID に EPSG コードを使用します。
詳細については、DBMS のマニュアルをご参照ください。
ArcGIS での空間参照系の使用
ArcGIS でフィーチャクラスを作成するときに、空間参照を選択します。ジオデータベースにデータを格納するときに、ArcGIS は選択された空間参照に基づいてデフォルトの X、Y、Z、M 単位とオフセットを計算します。
ArcGIS for Desktop でデータベースまたはエンタープライズ ジオデータベースにデータを貼り付けたり、インポートするときに、ArcGIS は入力データの座標系の WKT(Well-Known Text)説明と ID、および許容値と座標精度値が存在する場合にはそれらの値を、空間参照系テーブルの値と比較します。一致すれば、既存の空間参照が使用されます。一致しない場合は(たとえば、入力データがカスタム空間参照を持つ場合など)、ターゲットのデータベースまたはジオデータベースで作成されたテーブルの空間列に使用されている空間タイプによって対応が変わります。
次の表は、空間データをインポートするか貼り付けるときに何の SRID がターゲットの PostgreSQL、Oracle、SQL Server、または Netezza データベースで使用されるかを示しています。既知または不明という用語は、ソース データの空間参照が、ターゲット データベースの既存の空間参照にマッピングできるかどうかを示します。
ターゲット | ||||||
ソース | ST_Geometry | PostGIS Geometry | Oracle SDO_Geometry | SQL Server Geometry | SQL Server Geography | Netezza spatial |
ST_Geometry、SDEBINARY、PostGIS Geometry、SDO_Geometry、SQL Server Geometry、SQL Server Geography、または Netezza 空間列の既知の EPSG コード | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 |
ST_Geometry、SDEBINARY、または Netezza 空間列の、カスタム許容値および精度値での既知の EPSG コード | 300,000 を超える SRID は ArcSDE システム テーブルに追加されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 | EPSG コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 |
ST_Geometry、SDEBINARY または Netezza 空間列の既知の Esri 座標系 | Esri コードは ID に使用され、ジオメトリとともに格納されます。 | ID は -1 に設定されます。 | ID は NULL です。 | Esri コードは ID に使用され、ジオメトリとともに格納されます。 | Esri 座標系は、投影座標系に使用されます。投影座標系は SQL Server Geography タイプでは使用できないため、エラーが返され、データはインポートできません。 | Esri コードは空間参照 ID として使用され、ジオメトリとともに格納されます。 |
ST_Geometry、SDEBINARY、PostGIS Geometry、SDO_Geometry、SQL Server Geometry、または Netezza 空間列の不明な座標系 | 300,000 を超える SRID は ArcSDE システム テーブルに追加されます。 | ID は -1 に設定されます。 | ID は NULL です。 | ID は 0 に設定されます。 | エラーが返され、データはインポートできません。 | ID は 500000 に設定されます。 |
SDO_Geometry 列 のカスタム Oracle 座標系 | 300,000 を超える SRID は ArcSDE システム テーブルに追加されます。 | ID は -1 に設定されます。 | カスタム Oracle ID は、ソースに設定されている場合に使用されます。ソースに設定されていない場合、SRID はターゲット データベースで NULL に設定されます。 | ID は 0 に設定されます。 | エラーが返され、データはインポートできません。 | エラーが返され、データはインポートできません。 |
PostGIS Geometry 列のカスタム座標系 | 300,000 を超える SRID は ArcSDE システム テーブルに追加されます。 | カスタム PostGIS ID は、ソースに設定されている場合に使用されます。ソースに設定されていない場合、この ID はターゲット データベースで -1 に設定されます。 | ID は NULL です。 | ID は 0 に設定されます。 | エラーが返され、データはインポートできません。 | エラーが返され、データはインポートできません。 |
データを DB2 または Informix データベースに貼り付けまたはインポートする場合、ArcGIS は空間参照テーブルで一致を確認します。一致しない場合、新しい情報を持つ新しいレコードが空間参照テーブルに追加されます。使用される ID の詳細については、IBM のドキュメントをご参照ください。
不明な空間参照を持つ空間データは、ArcGIS からサービスとして公開できません。このデータを公開するには、クエリ レイヤを作成し、そのクエリ レイヤに空間参照を指定します。