FAQ
ArcPy (ArcMap): レイヤーのシンボル情報へアクセスし、選択フィーチャのみにシンボルを適用して表示する方法

ナレッジ番号:2896 | 登録日:2023/05/29 | 更新日:2024/11/21

概要

ArcPy からレイヤーのシンボル情報へアクセスし、個別値分類の分類に使用するフィールドや、等級色分類で設定した閾値を変更することができます。

Image

サンプル コード

ここでは、個別値分類に使用しているフィールドを変更し、属性検索条件に一致したフィーチャのみ分類表示してシンボルを適用する方法をご紹介します。このサンプル コードは ArcMap の [Python] ウィンドウから実行してください。また、フィーチャ レイヤに対して事前に適当なフィールドで個別値分類を行っておく必要があります。データは「全国市区町村界データ」をご利用ください。

# Purpose:     個別値分類に使用しているフィールドを変更し、選択フィーチャのみにシンボルを適用して表示する。

# 現在のマップ ドキュメントを取得します。
mxd = arcpy.mapping.MapDocument("current")

# [コンテンツ] ウィンドウの最上位のレイヤを取得します。
lyr = arcpy.mapping.ListLayers(mxd)[0]

# [属性検索(Select Layer By Attribute)] ツールを使用して、人口 50 万人以上の市区町村を選択します。
arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", "P_NUM > 500000")

# 空のリストを作成します。
sikuchosonList = []

# データアクセス モジュールの SearchCursor クラスを取得します。
# Cursor を使用することで、フィーチャ毎のループ処理を行えます。
# SearchCursor の第二引数に、使用するフィールドをリストで指定します。
cur = arcpy.da.SearchCursor(lyr, ["SIKUCHOSON"])

# 作成した空のリストに、市区町村名を追加します。
for row in cur:
    sikuchosonList.append(row[0])

# 個別値分類に使用しているフィールドを変更します。個別値として、リストにまとめた市区町村名を設定します。
if lyr.symbologyType == "UNIQUE_VALUES":
    lyr.symbology.valueField = "SIKUCHOSON"
    lyr.symbology.classValues = sikuchosonList
    lyr.symbology.showOtherValues = True

# 現在のマップ ドキュメントと [コンテンツ] ウィンドウを更新します。選択フィーチャのみにシンボルが適用して表示されます。
arcpy.RefreshActiveView()
arcpy.RefreshTOC()

# オブジェクトを削除し、参照を解放します。
del mxd, cur, row

免責事項

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

メタデータ

機能

種類

製品