概要
空間データをある座標系から別の座標系に変換します。
使用法
入力フィーチャクラスまたはデータセットの座標系が不明か未指定の場合、入力データセットの座標系を [入力データの座標系] パラメーターで指定することができます。これによって、入力データを修正することなく (読み取り専用形式のために修正不可能な場合もあります)、データの座標系を指定することができます。[投影法の定義 (Define Projection)] ツールによって、座標系を永続的にデータセットへ割り当てることもできます。
有効な入力は、ArcGIS アプリケーション (ArcMap、ArcScene、および ArcGlobe) に含まれるフィーチャクラス (ジオデータベース フィーチャクラス、カバレッジ フィーチャクラス、SDC フィーチャクラス、およびシェープファイル)、ジオデータベースのフィーチャ データセット、およびフィーチャ レイヤーのすべてのタイプです。
カバレッジ、VPF カバレッジ、ラスター データセット、およびラスター カタログは、このツールの入力としてサポートされていません。ラスター データセットを投影変換するには、[ラスターの投影変換 (Project Raster)] ツールを使用します。
カバレッジを投影変換する場合は、[カバレッジ] ツールボックスの [投影変換 (Project)] ツールを使用します。
ツールの [地理座標系変換] パラメーターはオプションです。地理座標変換や測地基準変換が不要な場合は、パラメーター上にドロップダウン リストは表示されず、空白のままになります。変換が必要な場合は、入力測地基準系および出力測地基準系に基づいてドロップダウン リストが生成され、デフォルトの変換が選択されます。
- たとえば、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 ワークスペースは、出力データセットを書き込む場所としてサポートされていません。
以下に示すような複雑なデータ タイプを投影変換する場合、変換後のデータに対して特定の操作を実行する必要があります。
- ネットワーク データセットを含むフィーチャ データセット: ネットワーク データセットの再構築が必要です。
- トポロジを含むフィーチャ データセット: トポロジを再び整合チェックする必要があります。
フィーチャリンク アノテーションと同様に、入力がリレーションシップ クラスに属する場合、リレーションシップ クラスが出力に変換されます。このルールの例外は、使用されているスタンドアロン テーブルに関連しています。
入力フィーチャの座標および出力座標系の境界 (有効範囲) によっては、マルチポイント、ライン、およびポリゴンが、投影変換の際にクリップされたり、複数の部分に分割される場合があります。境界から完全に外れているフィーチャは、NULL の形状で出力に書き込まれます。これらのフィーチャは、[ジオメトリの修正 (Repair Geometry)] ツールを使用して削除できます。
ジオメトリック ネットワークに関係したフィーチャクラスは独立して投影することはできません (ネットワークを含むフィーチャ データセット全体が投影されなければなりません)。
多くのジオプロセシング ツールは出力座標系環境設定を参照します。また、多くのワークフローで、[投影変換 (Project)] ツールを使用する代わりに、この環境設定を利用することができます。たとえば、[ユニオン (Union)] ツールは出力座標系環境設定を参照します。これによって、異なる座標系のフィーチャクラスを結合することができ、結合した出力をまったく異なる座標系のフィーチャクラスに書き出すことができるのです。
このツールでは、レイヤーに対する選択やフィルター設定は無視されます。レイヤーによって参照されるデータセットのすべてのフィーチャが投影されます。選択したフィーチャのみを投影する場合、[フィーチャのコピー (Copy Features)] ツールを使用して、選択したフィーチャのみを含むテンポラリ データセットを作成し、この中間データセットを [投影変換 (Project)] ツールへの入力として使用をすることを検討してください。
フィーチャ データセット内のフィーチャクラスが入力として使われると、同じフィーチャ データセットでは出力することができません。これは、フィーチャ データセット内のフィーチャクラスは同じ座標系でなければならないからです。この場合、出力フィーチャクラスはフィーチャ データセットを保持するジオデータベースに書き込まれます。
[形状の維持] パラメーターをオンにすると、正しい投影位置をより正確に表す出力フィーチャが作成されます。[形状の維持] は、ラインまたはポリゴンの境界を、数個の頂点を含む長い直線としてデジタイズする場合に特に役立ちます。[形状の維持] をオンにしない場合、入力のラインまたはポリゴンの境界の既存の頂点が投影され、その結果、フィーチャが新しい座標系に正確に配置されない可能性があります。[形状の維持] をオン (Python では preserve_shape="PRESERVE_SHAPE") にすると、投影する前に頂点がフィーチャに追加されます。追加されるこれらの頂点によって、投影されるフィーチャの形状が維持されます。[最大オフセット偏差] パラメーターは、追加される頂点の数を制御します。この値は、投影されたフィーチャがツールで計算された正確な投影位置からずれることができる最大距離を表します。この値を小さくすると、追加される頂点が増えます。自分の要件に適した値を選択してください。たとえば、投影された出力が、一般的な小縮尺のカートグラフィック表示用である場合、大きい偏差を許容できます。投影された出力が、大縮尺の狭い領域の解析で使用される場合、偏差を小さくすることが必要になります。
鉛直座標変換を行うには、ダイアログ ボックスでオプションの [鉛直] パラメーターをオンにします。デフォルトでは、[鉛直] パラメーターは無効化され、入力座標系と出力座標系に鉛直座標系 (VCS) があり、入力フィーチャクラスの座標に Z 値がある場合のみ有効化されます。また、追加データ (Coordinate Systems Data) のセットアップをシステムにインストールする必要があります。
出力座標系を選択する場合は、地理または投影座標系と鉛直座標系の両方を選択できます。入力と出力の鉛直座標系が異なる場合は、適切な鉛直座標変換と、オプションで地理座標 (測地基準系) 変換を使用できます。変換の定義と反対の方向で変換を適用する必要がある場合は、名前の前にチルド (~) が付いたエントリを選択します。
構文
Project(in_dataset, out_dataset, out_coor_system, {transform_method}, {in_coor_system}, {preserve_shape}, {max_deviation}, {vertical})
パラメーター | 説明 | データ タイプ |
in_dataset | 投影変換するフィーチャクラス、フィーチャ レイヤー、フィーチャ データセット。 | Feature Layer; Feature Dataset |
out_dataset | 結果が書き込まれる出力データセット。 | Feature Class; Feature Dataset |
out_coor_system | 有効な値は、空間参照オブジェクト、拡張子が「.prj」のファイル、または座標系の文字列表現です。 | Coordinate System |
transform_method [transform_method,...] (オプション) | この方法は、2 つの地理座標系または測地基準系の間のデータ変換に使用できます。入力座標系と出力座標系のデータが異なる場合は、オプションのパラメーターが必要になることがあります。 有効な変換のリストを取得するには、arcpy.ListTransformations 方法を使用します。最も適切な変換は、通常、返されたリストの 1 番目の変換です。このリストは、変換で使用するエリアに対するデータのオーバーラップ量によって並べ替えられます。2 つ以上の変換のデータのオーバーラップ量が同じである場合、2 番目の並べ替えパラメーターとして、変換精度値が使用されます。 | String |
in_coor_system (オプション) | 入力フィーチャクラスまたはデータセットの座標系。入力の座標系が不明または未指定の場合、入力データを修正することなく (読み取り専用形式のために修正不可能な場合もあります)、データの座標系を指定することができます。 | Coordinate System |
preserve_shape (オプション) | 投影された形状をより正確にするためにラインまたはポリゴンの出力に頂点を追加するかどうかを指定します。
| Boolean |
max_deviation (オプション) | preserve_shape="PRESERVE_SHAPE" の場合に、投影されたラインまたはポリゴンが正確な投影位置からずれることのできる距離を指定します。デフォルトは、出力データセットの空間参照の XY 許容値の 100 倍です。 | Linear unit |
vertical (オプション) | このオプションは、入力および出力座標系が鉛直座標系を持ち、入力フィーチャクラスの座標が Z 値を持つ場合にのみ有効化されます。また、多くの鉛直座標変換では、ArcGIS Coordinate Systems Data インストール パッケージを使用して、コンピューターに追加のデータ ファイルがインストールされている必要があります。 このオプションは、[形状の維持] パラメーターと互換性がありません。
| Boolean |
コードのサンプル
Project (投影変換) の例 1 (Python ウィンドウ)
次の Python ウィンドウ スクリプトは、イミディエイト モードで Project 関数を使用する方法を示しています。
import arcpy
# input data is in NAD 1983 UTM Zone 11N coordinate system
input_features = r"C:/data/Redlands.shp"
# output data
output_feature_class = r"C:/data/Redlands_Project.shp"
# create a spatial reference object for the output coordinate system
out_coordinate_system = arcpy.SpatialReference('NAD 1983 StatePlane California V FIPS 0405 (US Feet)')
# run the tool
arcpy.Project_management(input_features, output_feature_class, out_coordinate_system)
Project (投影変換) の例 2 (スタンドアロン スクリプト)
次のスタンドアロン スクリプトで、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])
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい