arcpy.mapping から ArcGIS Pro への移行

ArcGIS Desktop を使用して作成された Arcpy.mapping スクリプトは、ArcGIS Pro で実行する前に修正する必要があります。この変更は簡単かつ論理的で、一般に検索および置換操作で実行できます。以下のセクションでは、arcpy.mp API の多くの重要な変更と、追加された新機能について主に説明します。

Python 3

ArcGIS Pro では Python 3 を使用します。標準の Python 構文を一部変更しなくてはならない可能性があります。詳細については、「10.x から ArcGIS Pro への Python の移行」をご参照ください。

arcpy.mapping から arcpy.mp に名前が変更されました

ArcGIS Pro で導入された変更は、モジュールの名前空間の変更につながるほど重要なものでした。この新しい名前の arcpy.mp では、提供できる機能についてさらに柔軟性が増しています。たとえば、マップの自動化に加えて、arcpy.mp はプロジェクト レベルの管理も提供します。

ArcGIS Pro プロジェクト ファイル (*.aprx)

何よりも顕著な変更点は、ArcGIS Proarcpy.mp は、マップ ドキュメント (*.mxd) ではなく、プロジェクト ファイル (*.aprx) を参照する必要があることです。このため、arcpy.mapping.MapDocument(mxd_path)arcpy.mp.ArcGISProject(aprx_path) に置き換える必要があります。ArcGISProject 関数は、ほとんどの arcpy.mp の自動化要件で主要な入力ポイントとなる ArcGISProject オブジェクトになりました。また、ArcGISProject クラスには、プロジェクトへのマップ (*.mxd)、グローブ (*.3dd)、シーン (*.sxd)、および他のドキュメント ファイルのインポートを可能にする importDocument メソッドも含まれるようになりました。

リスト関数の多くが移動されました

スタンドアロンの arcpy.mapping List 関数の多くが、対象となるオブジェクトのメソッドになりました。この設計変更により、マップ ドキュメントを第一パラメーターとして絶えず参照する必要性がなくなり、新しい組織のオブジェクト指向フローが改善されました。次の例は、レイヤーのラベル クラスを参照するための List 関数の使用法を示しています。これらは機能面では似ていますが、既存の ArcGIS Desktop のスクリプトを変更する必要があります。

次のサンプルは、ArcGIS Desktop を使用してレイヤーのラベル クラスを参照する方法を示しています。

mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Yosemite National Park")[0]
for lyr in arcpy.mapping.ListLayers(mxd, df):
    if lyr.supports("SHOWLABLES"):
        lblClasses = lyr.labelClasses

次のサンプルは、ArcGIS Pro を使用してレイヤーのラベル クラスを参照する方法を示しています。

p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("Yosemite National Park")[0]
for lyr in m.listLayers():
    if lyr.supports("SHOWLABELS"):
       lblClasses = lyr.listLabelClasses()

次の図は、arcpy.mp の一部であるクラスと、特定のクラスを参照するのに必要な関数またはプロパティの場所と名前を示したものです。

arcpy.mp OMD の概要

エクスポート関数が移動されました

スタンドアロンのエクスポート関数は、Layout および MapFrame オブジェクトのメソッドになりました。この設計変更により、エクスポートされるオブジェクトに応じて、使用できるパラメーターのセットが分離されました。たとえば、Layout をエクスポートするときに、ワールド ファイルの情報を含める必要性はありません。

レイヤー管理関数が移動されました

スタンドアロンのレイヤー管理関数は、Map および LayerFile オブジェクトのメソッドになりました。これらのメソッドには addLayeraddLayerToGroupinsertLayermoveLayerremoveLayer が含まれます。

レイヤー ファイルが変更されました

ArcGIS Desktop を使用して作成されたレイヤー ファイルには .lyr の拡張子が付き、ArcGIS Pro を使用して作成されたレイヤー ファイルには .lyrx の拡張子が付きます。これらには注意すべき相違点があります。古い *.lyr ファイルは、1 つのレイヤーまたは 1 つのグループ レイヤーだけをルート レベルに保存します (ただし、1 つのグループ レイヤーは複数のレイヤーまたはグループ レイヤーを格納できます)。新しい *.lyrx ファイルは、複数のレイヤーやグループ レイヤーをルート レベルに保存できます。*.lyrx への参照は、1 つのレイヤーまたはレイヤーのリストへの参照にできるようになりました。

新しい Map、MapFrame、Camera オブジェクトはデータ フレームの役割の代わりになります

ArcGIS Pro フレームワークでは、マップ表示の操作方法と、それに伴う新しいオブジェクトの導入方法に影響する新しい機能が導入されました。これらの新しい MapMapFrame、および Camera オブジェクトは、それぞれが特定の役割を果たし、互いに統合されています。

ArcGIS ProMap オブジェクトは、表形式およびシンボル表示されたジオグラフィック レイヤーのコレクションを表し、座標系、データのデフォルト ビュー、その他さまざまなメタデータなどの情報も保持します。マップのコンテンツを視覚化する方法は、マップ ビュー、独自の [コンテンツ] ウィンドウを持つアプリケーションのタブ、またはページ レイアウト上のマップ フレームを使用する以外にありません。複数のマップ ビューアーやマップ フレームで、同じマップを表示できます。レイヤーをマップに追加した場合、そのマップを参照するすべてのマップ ビューとマップ フレームは、追加されたレイヤーを表示します。レイヤーやテーブルのさまざまなコレクションを異なるビューで表示する場合は、別のマップを作成および使用する必要があります。

MapFrame オブジェクトは、Map に追加された地理情報を表示する Layout エレメントです。これはレイアウト上のマップ フレームのサイズと配置も管理します。複数のマップ フレームが同じマップを参照できます。

ArcGIS Pro は 2D と 3D の表示を統合しているため、Camera オブジェクトを使用して、1 つのマップ フレーム内にある 2D マップの縮尺と範囲および 3D マップのカメラ位置を制御できます。

新しい Layout オブジェクト

ArcGIS Pro プロジェクトは、複数のレイアウトをサポートしています。その結果、新しい Layout オブジェクトが追加されました。レイアウトは、ArcGISProject オブジェクトの listLayouts メソッドを使用して参照できます。各レイヤーは、異なるページ サイズと方向を持つことができます。ArcGIS Desktop と同様に、listElements メソッドを使用して個別のレイアウト エレメントを取得できます。これらの各エレメントには、ページ外に移動しなくてもエレメントを無効化できる visible プロパティがあります。

CURRENT の使用時はアプリケーションが常に更新されます

ArcGIS Desktop では、Python ウィンドウで CURRENT キーワードを使用しているとき、画面を強制的に更新するために refreshActiveView を呼び出さなければならない場合がありました。ArcGIS Pro では、その必要はありません。arcpy.mp API を変更すると、必ず ArcGIS Pro が直接更新されます。

データ ソースの更新が変更されました

レイヤーまたはテーブルのデータ ソースを変更するためのメソッドおよびパラメーターが変更されました。この設計の改善により、データベース接続や、結合またはリレートされるその他のデータソースの管理機能が向上しました。詳細については、「データ ソースの更新と修正」をご参照ください。