概要
ArcGIS API for Python を使用して、ArcGIS Online 上のフィーチャ レイヤーに添付されている画像ファイルを一括で取得する方法をご紹介いたします。
方法
ArcGIS API for Python の gis オブジェクトの content プロパティを使用し、ContentManager クラスのインスタンスを生成した後、search() メソッドを使用して、添付画像ファイルを出力したいフィーチャ レイヤーを検索します。検索結果として得られた Item クラスのオブジェクトの layer プロパティを用いて FeatureLayer クラスのオブジェクトを取得します。最後に、FeatureLayer クラスのオブジェクトに対して export_attachments() メソッドを使用することで添付画像ファイルを出力することができます。
※ ArcGIS Online のノートブックにおける処理では、ArcGIS Online 上に添付画像ファイルが保存されるため、大量の添付画像ファイルを持つフィーチャ レイヤーに対しては使用しないでください。
Python サンプル コード
- 添付画像ファイルを出力したいフィーチャ レイヤーを検索
# 対象のフィーチャ レイヤーのアイテムを検索する item = gis.content.get('フィーチャ レイヤーのID') # フィーチャ レイヤーの取得 layer = item.layers[0] # フィーチャ レイヤーを確認 layer - 添付画像ファイルの保存先を決定し、フィーチャ レイヤーから添付画像ファイルをダウンロードします。
# ダウンロード先の指定(arcgis/home 配下にダウンロード) download_files_path = '/arcgis/home/' # フィーチャ の添付画像を出力する(指定したフォルダ配下に、images フォルダとmapping.txtを出力) layer.export_attachments(output_folder=download_files_path) print('添付ファイルをダウンロードしました。') - ダウンロードした添付ファイルをzipで保存
# ダウンロードした添付ファイルをzipとして保存し、元フォルダを削除 import shutil # 出力フォルダをzip化 shutil.make_archive('/arcgis/home/images', 'zip', root_dir=download_files_path+'images') print('ダウンロードした添付ファイルを圧縮ファイルとして保存しました。') # ダウンロード用フォルダ削除 shutil.rmtree(download_files_path+'images') print(download_files_path+'images のダウンロード用フォルダを削除しました。')
実行結果
ArcGIS Online 上の /arcgis/home 直下に images フォルダとmapping .txtを出力し、出力した添付画像ファイルは images フォルダ配下に保存されます。出力される画像ファイルは jpg ファイルで出力され、画像の ID が名称に記載される形で出力されます。

結果ファイルのダウンロード
出力した添付画像ファイルは ArcGIS Online 上の /arcgis/home 直下に保存されるため、Jupyter Notebook の画面上の [ファイル] から、結果ファイルをクリックすることでファイルをローカル環境にダウンロードが可能です。
