FAQ
ArcGIS API for Python : フィーチャ レイヤーのフィーチャを一括で編集する

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

概要

ArcGIS API for Python を使用して、ArcGIS Online 上のフィーチャ レイヤーのフィーチャの属性情報を一括で編集する方法をご紹介いたします。
※このページでは、品川区の投票所情報のデータを例に、「場所名」のフィールドが「小学校」のフィーチャに対してのみ、「行政区名」に値を入力する編集を一括で実施している例をご紹介しています。

方法

ArcGIS API for Python の gis オブジェクトの content プロパティを使用し、ContentManager クラスのインスタンスを生成した後、search() メソッドを使用して、編集したいフィーチャ レイヤーを検索します。検索結果として得られた Item クラスのオブジェクトの layer プロパティを用いて FeatureLayer クラスのオブジェクトを取得した後、FeatureLayer クラスのオブジェクトの query() メソッドと features プロパティを使用しフィーチャ情報を取得します。取得したフィーチャ情報から編集対象フィーチャを抽出して内容を編集したのち、編集結果を FeatureLayer クラスのオブジェクトの edit_features() メソッドを使用して編集内容をフィーチャ レイヤーに反映します。

Python サンプル コード

  1. search() メソッドを使用して、編集したいフィーチャ レイヤーを検索
    # 対象のフィーチャ レイヤーを検索
    # searchメソッドの引数使用例(query='品川区_投票所' : 「品川区_投票所」で検索、
    #                             item_type='Feature Layer' : 「Feature Layer」を検索)
    item_list = gis.content.search(query='品川区_投票所',item_type='Feature Layer')
    
    # 検索結果を表示
    item_list
    
  2. 検索結果として得られた Item クラスのオブジェクトの layer プロパティを用いて FeatureLayer クラスのオブジェクトを取得し、編集前のデータを確認
    # 検索結果の1番目のItemにアクセスし、layers プロパティを使用して
    # 1番目のフィーチャ レイヤーの情報を取得
    my_feature_layer = item_list[0].layers[0]
    
    # 結果を表示
    my_feature_layer.query().sdf
    
  3. FeatureLayer クラスのオブジェクトの query() メソッドと features プロパティを使用しフィーチャ情報を取得し、フィーチャ情報から編集対象フィーチャを抽出して内容を編集
    # フィーチャ レイヤーからフィーチャ情報を取得
    my_features = my_feature_layer.query().features
    
    # 編集結果を確認するリスト(配列)を定義
    edited_features = []
    
    # 編集対象のフィーチャを取得
    # 例:場所名が小学校のフィーチャを検索
    for feature in my_features:
        if u'小学校' in feature.attributes[u'場所名']:
            edited_features.append(feature)
    
    
    # 編集対象のフィーチャの編集と内容を確認
    # 例:行政区名に品川区と入力
    for feature in edited_features:
        feature.attributes[u'行政区名'] = u'品川区'
    
    # 編集対象のフィーチャの件数と編集対象フィーチャを表示
    print('編集対象フィーチャ:'+ str(len(edited_features)) + '件')
    for feature in edited_features:
        print(feature.attributes[u'投票区名'] + ',' + feature.attributes[u'場所名'] + ',' + feature.attributes[u'行政区名'])
    
  4. 編集結果を FeatureLayer クラスのオブジェクトの edit_features() メソッドを使用して編集内容をフィーチャ レイヤーに反映
    # 編集結果をフィーチャ レイヤーに反映
    result = my_feature_layer.edit_features(updates=edited_features)
    result
    # 結果を確認
    my_feature_layer.query().sdf
    

実行結果

実行例では、品川区の投票所情報のデータを例に、「場所名」のフィールドが「小学校」のフィーチャを検索し、「行政区名」に「品川区」と入力する編集を一括で実施しています。

Image

データ出典元:東京都オープンデータカタログサイト 【品川区】投票所情報(投票区名、住所、緯度等)

注意事項

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

関連する質問

メタデータ

種類

製品