投影変換 (Project) (データ管理)

概要

空間データをある座標系から別の座標系に変換します。

使用法

  • 入力フィーチャクラスまたはデータセットの座標系が不明か未指定の場合、入力データセットの座標系を [入力データの座標系] パラメーターで指定することができます。これによって、入力データを修正することなく (読み取り専用形式のために修正不可能な場合もあります)、データの座標系を指定することができます。[投影法の定義 (Define Projection)] ツールによって、座標系を永続的にデータセットへ割り当てることもできます。

  • カバレッジ、VPF カバレッジ、ラスター データセット、およびラスター カタログは、このツールの入力としてサポートされていません。ラスター データセットを投影変換するには、[ラスターの投影変換 (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 という変換を選択するだけで、ツールが正しく変換パラメーターを適用します。

    • 変換とその使用領域のリストについては、技術情報記事「操作手順: 測地基準系間の投影時の正しいジオグラフィック (測地基準系) 変換の選択」をご参照ください。

  • in_memory ワークスペースは、出力データセットを書き込む場所としてサポートされていません。

  • 以下に示すような複雑なデータ タイプを投影変換する場合、変換後のデータに対して特定の操作を実行する必要があります。

    • ネットワーク データセットを含むフィーチャ データセット: ネットワーク データセットの再構築が必要です。
    • トポロジを含むフィーチャ データセット: トポロジを再び整合チェックする必要があります。

  • フィーチャリンク アノテーションと同様に、入力がリレーションシップ クラスに属する場合、リレーションシップ クラスが出力に変換されます。この例外は、関連するスタンドアロン テーブルです。

  • 入力フィーチャの座標および出力座標系の境界 (有効範囲) によっては、マルチポイント、ライン、およびポリゴンが、投影変換の際にクリップされたり、複数の部分に分割されたりすることがあります。境界から完全に外れているフィーチャは、NULL の形状で出力に書き込まれます。これらのフィーチャは、[ジオメトリの修正 (Repair Geometry)] ツールを使用して削除できます。

  • ジオメトリック ネットワークに関係したフィーチャクラスは独立して投影することはできません (ネットワークを含むフィーチャ データセット全体が投影されなければなりません)。

  • 多くのジオプロセシング ツールは出力座標系環境設定を参照します。また、多くのワークフローで、[投影変換 (Project)] ツールの代わりに、この環境設定を利用することができます。たとえば、[ユニオン (Union)] ツールは出力座標系環境設定を優先します。これにより、すべてが異なる座標系にある複数のフィーチャクラスを結合することが可能になり、結合した出力を異なる座標系のフィーチャクラスに書き出すことができます。

    ジオプロセシング環境の詳細

  • このツールでは、レイヤーに対する選択やフィルター設定は無視されます。レイヤーによって参照されるデータセットのすべてのフィーチャが投影されます。選択したフィーチャのみを投影するには、[フィーチャのコピー (Copy Features)] ツールを使用して、選択したフィーチャのみを含むテンポラリ データセットを作成し、この中間データセットを [投影変換 (Project)] ツールへの入力として使用することを検討してください。

  • フィーチャ データセット内のフィーチャクラスが入力として使われると、同じフィーチャ データセットには出力することができません。これは、フィーチャ データセット内のフィーチャクラスは同じ座標系でなければならないからです。この場合、出力フィーチャクラスはフィーチャ データセットを保持するジオデータベースに書き込まれます。

  • [形状の維持] パラメーターをオンにすると、正しい投影位置をより正確に表す出力フィーチャが作成されます。[形状の維持] は、ラインまたはポリゴンの境界をほとんど頂点のない長い直線としてデジタイズする場合に特に役立ちます。[形状の維持] をオンにしない場合、入力のラインまたはポリゴンの境界の既存の頂点が投影され、その結果、フィーチャが新しい座標系に正確に配置されない可能性があります。[形状の維持] をオン (Python では preserve_shape = "PRESERVE_SHAPE") にすると、投影する前に頂点がフィーチャに追加されます。追加されるこれらの頂点によって、投影されるフィーチャの形状が維持されます。[最大オフセット偏差] パラメーターは、追加される頂点の数を制御します。この値は、投影されたフィーチャがツールで計算された正確な投影位置からずれることができる最大距離を表します。この値を小さくすると、追加される頂点が増えます。自分の要件に適した値を選択してください。たとえば、投影された出力が、一般的な縮尺の小さいカートグラフィック表示用である場合、大きい偏差を許容できます。投影された出力を大縮尺の狭い領域の解析に使用する場合は、偏差を小さくする必要があります。

  • 鉛直座標変換を実行するには、オプションの [鉛直] パラメーターをオンにします。デフォルトでは、[鉛直] パラメーターは非アクティブであり、入力座標系と出力座標系に鉛直座標系 (VCS) があり、入力フィーチャクラスの座標に Z 値がある場合にアクティブになります。また、追加データ (座標系データ) のセットアップをシステムにインストールする必要があります。

    出力座標系を選択する場合は、地理または投影座標系と鉛直座標系の両方を選択できます。入力と出力の鉛直座標系が異なる場合は、適切な鉛直座標変換とオプションの地理座標系 (測地基準系) 変換を使用できます。変換の定義と反対の方向で変換を適用する必要がある場合は、名前の前にチルド (~) が付いたエントリを選択します。

  • パーセル ファブリックは、そのパーセル ファブリックを含むフィーチャ データセットを投影することで投影されます。パーセル ファブリックによって制御される個々のフィーチャクラスは別々に投影することはできません。距離単位、面積単位、およびポイント座標は、ターゲット空間参照の単位および座標に一致するように更新されます。

構文

arcpy.management.Project(in_dataset, out_dataset, out_coor_system, {transform_method}, {in_coor_system}, {preserve_shape}, {max_deviation}, {vertical})
パラメーター説明データ タイプ
in_dataset

投影変換するフィーチャクラス、フィーチャ レイヤー、フィーチャ データセット、シーン レイヤー、またはシーン レイヤー パッケージ。

Feature Layer; Feature Dataset; Scene Layer; Building Scene Layer; File
out_dataset

結果が書き込まれる出力データセット。

Feature Layer; Feature Dataset; Scene Layer; Building Scene Layer; File
out_coor_system

有効な値は、SpatialReferenceオブジェクト、拡張子が .prj のファイル、または座標系の文字列表現です。

Coordinate System
transform_method
[transform_method,...]
(オプション)

この方法は、2 つの地理座標系または測地基準系の間のデータ変換に使用できます。入力座標系と出力座標系の測地基準系が異なる場合は、オプションのパラメーターが必要になることがあります。

有効な変換のリストを取得するには、arcpy.ListTransformations 方法を使用します。最も適切な変換は、通常、返されたリストの 1 番目の変換です。このリストは、変換で使用するエリアに対するデータのオーバーラップ量によって並べ替えられます。2 つ以上の変換のデータのオーバーラップ量が同じである場合、2 番目の並べ替えパラメーターとして、変換精度値が使用されます。

ヒント:

変換は双方向に行われます。たとえば、WGS 1984 から NAD 1927 へデータを変換する場合、NAD_1927_to_WGS_1984_3 という変換を選択するだけで、ツールが正しく変換パラメーターを適用します。変換を指定しない場合は、デフォルトの変換が使用されます。このデフォルトの変換は、一般的なマッピング アプリケーションに適していますが、精密な位置の正確度を必要とするアプリケーションでは適していない場合があります。

String
in_coor_system
(オプション)

入力フィーチャクラスまたはデータセットの座標系。入力の座標系が不明または未指定の場合、入力データを修正することなく (読み取り専用形式のために修正不可能な場合もあります)、データの座標系を指定することができます。

Coordinate System
preserve_shape
(オプション)

投影された形状をより正確にするためにラインまたはポリゴンの出力に頂点を追加するかどうかを指定します。

  • NO_PRESERVE_SHAPEラインまたはポリゴンの出力に頂点を追加しません。これがデフォルトです。
  • PRESERVE_SHAPE投影された形状をより正確にするために、必要に応じてラインまたはポリゴンの出力に頂点を追加します。
Boolean
max_deviation
(オプション)

preserve_shape パラメーターが PRESERVE_SHAPE に設定されている場合に、投影されたラインまたはポリゴンが正確な投影位置からずれることができる距離。デフォルトは、出力データセットの空間参照の XY 許容値の 100 倍です。

Linear Unit
vertical
(オプション)

鉛直座標変換を適用するかどうかを指定します。

このパラメーターは、入力および出力座標系が鉛直座標系を持ち、入力フィーチャクラスの座標が Z 値を持つ場合にのみ有効化されます。また、多くの鉛直座標変換では、ArcGIS Coordinate Systems Data インストール パッケージを使用して、追加のデータ ファイルがインストールされている必要があります。

このパラメーターは、preserve_shape パラメーターとは互換性がありません。

  • NO_VERTICAL 鉛直座標変換が適用されません。ジオメトリ座標の Z 値は無視され、修正されません。これがデフォルトです。
  • VERTICAL[transform_method] パラメーターで指定された変換が適用されます。[投影変換 (Project)] ツールにより、ジオメトリ座標の X、Y、Z 値が変換されます。
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: はい

関連トピック