arcpy.mapping から ArcGIS Pro への移行

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

Python 3

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

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

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

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 の一部である最も一般的なクラスと、特定のクラスを参照するのに必要な関数またはプロパティの場所と名前を示したものです。 この図は単なる例であり、オブジェクトの完全なセットを示しているわけではありません。 オブジェクトへの 2 つの主要な入力ポイントは、ArcGISProject クラスまたは LayerFile クラスを経由します。

arcpy.mp OMD の概要

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

スタンドアロンのエクスポート関数は、LayoutMapFrameMapSeries、および MapView オブジェクトのメソッドになりました。 この設計変更により、エクスポートされるオブジェクトに応じて、使用できるパラメーターのセットが分離されました。 たとえば、マップ ビューをエクスポートしている場合は幅と高さを指定する必要がありますが、レイアウトではサイズが自動的に考慮されます。

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

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

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

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

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

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

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

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

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 が直接更新されます。

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

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

オブジェクトを作成できます。

以前の ArcGIS Desktop では、スクリプトは既存のエレメントの自動化に限定されていました。 ArcGIS Pro 3.2 以降は、さまざまな共通オブジェクトを作成できます。 これには、ArcGISProject オブジェクトの createMap メソッドや createLayout メソッドに加え、createMapFramecreateMapSurroundElementcreateGraphicElementcreateTextElement などが含まれます。 また、Bookmark オブジェクトを Map クラスから作成することもできます。 詳細については、ArcGISProjectLayout、および Map クラスのトピックをご参照ください。