FAQ
ArcGIS API for Python : フィーチャ レイヤーの添付画像ファイルを一括で取得する

ナレッジ番号:3436 | 登録日:2023/05/29 | 更新日:2023/08/23

概要

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 サンプル コード

  1. 添付画像ファイルを出力したいフィーチャ レイヤーを検索
    # 対象のフィーチャ レイヤーのアイテムを検索する
    item = gis.content.get('フィーチャ レイヤーのID')
    
    # フィーチャ レイヤーの取得
    layer = item.layers[0]
    
    # フィーチャ レイヤーを確認
    layer
    
  2. 添付画像ファイルの保存先を決定し、フィーチャ レイヤーから添付画像ファイルをダウンロードします。
    # ダウンロード先の指定(arcgis/home 配下にダウンロード)
    download_files_path = '/arcgis/home/'
    
    # フィーチャ の添付画像を出力する(指定したフォルダ配下に、images フォルダとmapping.txtを出力)
    layer.export_attachments(output_folder=download_files_path)
    print('添付ファイルをダウンロードしました。')
    
  3. ダウンロードした添付ファイルを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 が名称に記載される形で出力されます。

Image

結果ファイルのダウンロード

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

Image

注意事項

掲載しているコードはあくまでもサンプル (見本) として提供しているものであり、実行時に発生したエラーの対処方法につきましては、サポート対象外とさせていただきます。また、操作方法やソースコードに関するご質問は別途有償の開発者サポート契約にてご対応させていただきます。なお、コードを実行して生じたいかなる損害についても弊社では責任を負いかねます。

関連する質問

メタデータ

種類

製品