投影変換 (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 測地基準系を使用しているため、地理座標変換が必要です。
      ヒント:

      変換は双方向に行われます。 たとえば、WGS84 から NAD 1927 にデータを変換する場合は、NAD_1927_to_WGS_1984_3 という変換を選択すると、その変換が正しく適用されます。

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

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

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

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

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

  • 解析を実行する前に、プロジェクトのすべての入力を同じ座標系に投影しておくことをお勧めします。 すべての入力が同じ座標系の場合、データのリアルタイム投影によるパフォーマンス上の問題や機能的な問題を回避することができます。

  • まれに、フィーチャ ジオメトリを投影すると、変換によってフィーチャが無効になる場合があります。 無効なジオメトリを検出するには、[ジオメトリのチェック (Check Geometry)] ツール、ジオメトリの問題を修正するには、[ジオメトリの修正 (Repair Geometry)] ツールを使用します。

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

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

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

  • このツールではレイヤーに対する選択および定義クエリがサポートされています。 選択またはクエリが定義されている場合、レイヤー内で選択されているフィーチャだけが投影されます。

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

  • [形状の維持] パラメーターをオンにすると、投影位置を正確に表すフィーチャが作成されます。 投影時に頂点がフィーチャに追加されます。 追加された頂点によって、投影後のフィーチャの形状が維持されます。 このパラメーターは、ラインまたはポリゴンに頂点が数個しか含まれていない場合に役立ちます。 このパラメーターがオフになっている場合、既存の頂点が投影され、出力フィーチャが新しい座標系に正確に配置されない可能性があります。

    [最大オフセット偏差] パラメーターで、追加する頂点の数を指定します。 このパラメーター値は、投影されたフィーチャが正確な投影位置からずれることができる最大距離を定義します。 この値を小さくすると、追加される頂点が増えます。 自分の要件に適した値を使用してください。 たとえば、出力が一般的な縮尺の小さいカートグラフィック表示用である場合、大きい偏差を許容できます。 縮尺の大きい、狭い領域の解析で出力が使用される場合、偏差を小さくすると良いでしょう。

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

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

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

パラメーター

ラベル説明データ タイプ
入力データセット、またはフィーチャクラス

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

Feature Layer; Feature Dataset; Scene Layer; Building Scene Layer; File
出力データセット、またはフィーチャクラス

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

Feature Class; Feature Dataset; File
出力座標系

入力データの投影先となる座標系。

Coordinate System
地理座標系変換
(オプション)

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

ヒント:

ツールは、デフォルトの変換を自動的に選択します。 ドロップダウン リストから別の変換を選択できます。 変換は双方向に行われます。 たとえば、WGS84 から NAD 1927 にデータを変換する場合は、NAD_1927_to_WGS_1984_3 という変換を選択すると、その変換が正しく適用されます。

パラメーターは、有効な変換方式のドロップダウン リストを提供します。 1 つまたは複数の適切な変換を選択する方法の詳細については、使用法のヒントをご参照ください。

String
入力データの座標系
(オプション)

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

Coordinate System
形状を維持
(オプション)

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

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

Boolean
最大オフセット偏差
(オプション)

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

Linear Unit
垂直
(オプション)

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

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

[鉛直] がオンの場合、[地理座標系変換] パラメーターは、楕円体変換と、鉛直測地基準系間の変換を含むことができます。 たとえば、~NAD_1983_To_NAVD88_CONUS_GEOID12B_Height + NAD_1983_To_WGS_1984_1 は、NAD 1983 測地基準系と NAVD 1988 の高度で定義されたジオメトリ頂点を、WGS84 楕円体 (楕円体の高さを表す Z 値を持つ) 上の頂点に変換します。 チルド (~) は、変換が反対方向であることを示しています。

このパラメーターは、[形状の維持] パラメーターとは互換性がありません。

  • オフ - 鉛直座標変換は適用されません。 ジオメトリ座標の Z 値は無視され、修正されません。 これがデフォルトです。
  • オン - [地理座標系変換] パラメーターで指定された変換が適用されます。 ジオメトリ座標の X,Y,Z 値が変換されます。

Boolean

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

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

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

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

Feature Class; Feature Dataset; File
out_coor_system

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

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

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

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

ヒント:

変換は双方向に行われます。 たとえば、WGS84 から 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 値は無視され、修正されません。 これがデフォルトです。
  • VERTICALtransform_method パラメーターで指定された変換が適用されます。 ジオメトリ座標の 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])