投影変換(Project) (データ管理)
サマリ
空間データをある座標系から別の座標系に変換します。
使用法
入力フィーチャクラスまたはデータセットの座標系が不明か未指定の場合、入力データセットの座標系を [入力データの座標系] パラメータで指定することができます。これによって、入力データを修正することなく(読み取り専用形式のために修正不可能な場合もあります)、データの座標系を指定することができます。[投影法の定義(Define Projection)] ツールによって、座標系を永続的にデータセットへ割り当てることもできます。
-
有効な入力は、ArcGIS アプリケーション(ArcMap、ArcScene、および ArcGlobe)に含まれる フィーチャクラス(ジオデータベース フィーチャクラス、カバレッジ フィーチャクラス、SDC フィーチャクラス、ならびにシェープファイル)、ジオデータベースのフィーチャ データセット、およびフィーチャ レイヤのすべてのタイプです。
-
カバレッジ、VPF カバレッジ、ラスタ データセット、およびラスタ カタログは、このツールの入力としてサポートされていません。カバレッジを投影変換する場合は、[カバレッジ] ツールボックスの [投影変換(Project)] ツールを使用します。ラスタ データセットを投影変換するには、[ラスタの投影変換(Project Raster)] ツールを使用します。
ツールの [地理座標系変換] パラメータはオプションです。地理座標変換や測地基準変換が不要な場合は、パラメータ上にドロップダウン リストは表示されず、空白のままになります。変換が必要な場合は、入力測地基準系および出力測地基準系に基づいてドロップダウン リストが生成され、デフォルトの変換が選択されます。
- たとえば、GCS_North_American_1983 から NAD_1983_UTM_Zone_12N への投影変換は、入力と出力の両方の座標系が NAD_1983 測地基準系であるため、地理座標変換は必要ありません。しかし、GCS_North_American_1983 から WGS_1984_UTM_Zone_12N への投影変換は、入力座標系が NAD_1983 測地基準系を使用しているのに対して、出力座標系が WGS_1984 測地基準系を使用しているため、地理座標変換が必要です。ヒント:
変換は双方向に行われます。たとえば、WGS 1984 から NAD 1927 へデータを変換する場合、NAD_1927_to_WGS_1984_3 という変換を選択するだけで、ツールが正しく変換パラメータを適用します。
- 変換の一覧とその使用範囲については、次の Knowledge Base の記事をご参照ください。21327(http://resources.arcgis.com/content/kbase?fa=articleShow&d=21327)
- たとえば、GCS_North_American_1983 から NAD_1983_UTM_Zone_12N への投影変換は、入力と出力の両方の座標系が NAD_1983 測地基準系であるため、地理座標変換は必要ありません。しかし、GCS_North_American_1983 から WGS_1984_UTM_Zone_12N への投影変換は、入力座標系が NAD_1983 測地基準系を使用しているのに対して、出力座標系が WGS_1984 測地基準系を使用しているため、地理座標変換が必要です。
-
in_memory は、出力データセットに対して無効なワークスペースです。ディスク上のフィーチャクラスへ出力しなければなりません。
-
以下に示すような複雑なデータ タイプを投影変換する場合、変換後のデータに対して特定の操作を実行する必要があります。
- ネットワーク データセットを含むフィーチャ データセット: ネットワーク データセットの再構築が必要です。
- トポロジを含むフィーチャ データセット: トポロジの範囲全体に対する整合チェックを実行します。
-
フィーチャリンク アノテーションと同様に、入力がリレーションシップ クラスに属する場合、リレーションシップ クラスが出力に変換されます。このルールの例外は、スタンドアロン テーブルに関連しています。
-
入力フィーチャの座標および出力座標系の水平線(有効範囲)によっては、マルチポイント、ライン、およびポリゴンが、投影変換の一環としてクリップされたり、複数の部分に分割される場合があります。
ジオメトリック ネットワークに関係したフィーチャクラスは独立して投影することはできません(ネットワークを含む [フィーチャ データセット] 全体が投影されなければなりません)。
多くのジオプロセシング ツールは出力座標系環境設定を参照します。また、多くのワークフローで、[投影変換(Project)] ツールを使ってこの環境設定を利用することができます。たとえば、[ユニオン(Union)] ツールは出力座標系環境設定を参照します。これによって、異なる座標系のフィーチャクラスを結合することができ、結合した出力を全く異なる座標系のフィーチャクラスに書き出すことができるのです。
このツールでは、選択やフィルタ設定によるフィーチャの絞り込みはできません。レイヤによって参照されるデータセットのすべてのフィーチャが投影されます。選択したフィーチャのみを投影したい場合は、[フィーチャのコピー(Copy Features)] ツールを使用することを検討してください。[フィーチャのコピー(Copy Features)] は選択したフィーチャのみをコピーし、出力座標系ジオプロセシング環境が適用されます。
フィーチャ データセット内のフィーチャクラスが入力として使われると、同じフィーチャ データセットでは出力することができません。これは、フィーチャ データセット内のフィーチャクラスは同じ座標系でなければならないからです。この場合、出力フィーチャクラスはフィーチャ データセットを保持するジオデータベースに書き込まれます。
構文
パラメータ | 説明 | データ タイプ |
in_dataset |
投影変換するフィーチャクラス、フィーチャ レイヤ、フィーチャ データセット。 | Feature Layer; Feature Dataset |
out_dataset |
結果が書き込まれる出力データセット。 | Geodataset |
out_coor_system | 有効な値は、空間参照オブジェクト、拡張子が「.prj」のファイル、または座標系の文字列表現です。 | Coordinate System |
transform_method (オプション) | この方法は、2 つの地理座標系または測地基準系の間のデータ変換に使用できます。入力座標系と出力座標系のデータが異なる場合は、オプションのパラメータが必要になることがあります。 ヒント: 変換は双方向です。たとえば、WGS 1984 から NAD 1927 へデータを変換する場合、NAD_1927_to_WGS_1984_3 という変換を選択するだけで、ツールが正しく変換パラメータを適用します。 | String |
in_coor_system (オプション) |
入力フィーチャクラスまたはデータセットの座標系。入力の座標系が不明または未指定の場合に、このパラメータが有効になります。これによって、入力データを修正することなく(読み取り専用形式のために修正不可能な場合もあります)、データの座標系を指定することができます。 | Coordinate System |
コードのサンプル
次の Python ウィンドウ スクリプトで、Project(投影変換)関数をイミディエイト モードで使用する方法を示します。
import arcpy
input_features = "C:/data/input/projections.gdb/wells"
output_features_class = "C:/data/output/wells_UTM11N.shp"
install_dir = arcpy.GetInstallInfo()['InstallDir']
out_coordinate_system = os.path.join(install_dir, r"Coordinate Systems/Projected Coordinate Systems/UTM/NAD 1983/NAD 1983 UTM Zone 11N.prj")
arcpy.Project_management(input_features, output_features_class, out_coordinate_system)
次のスタンドアロン スクリプトで、Project(投影変換)関数をスタンドアロン スクリプトで使用する方法を示します。
# Name: Project_Example2.py
# Description: Project all feature classes in a geodatabase
# Requirements: os module
# Import system modules
import arcpy
import os
# Set environment settings
arcpy.env.workspace = "C:/data/Redlands.gdb"
arcpy.env.overwriteOutput = True
# Set local variables
outWorkspace = "C:/data/Redlands_utm11.gdb"
try:
# Use ListFeatureClasses to generate a list of inputs
for infc in arcpy.ListFeatureClasses():
# Determine if the input has a defined coordinate system, can't project it if it does not
dsc = arcpy.Describe(infc)
if dsc.spatialReference.Name == "Unknown":
print ('skipped this fc due to undefined coordinate system: ' + infc)
else:
# Determine the new output feature class path and name
outfc = os.path.join(outWorkspace, infc)
# Set output coordinate system
outCS = arcpy.SpatialReference('NAD 1983 UTM Zone 11N')
# run project tool
arcpy.Project_management(infc, outfc, outCS)
# check messages
print(arcpy.GetMessages())
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
except Exception as ex:
print(ex.args[0])