ArcMapまたはArcCatalogで複数のレイヤーのシンボルを変更する方法はありますか?複数のレイヤーのシンボルを一度に変更したい。
ArcMapまたはArcCatalogで複数のレイヤーのシンボルを変更する方法はありますか?複数のレイヤーのシンボルを一度に変更したい。
回答:
編集 ESRIが提供するこのスクリプトを使用して、目前のタスクを完了することができます(以下と同じ考えです)。
import arcpy
arcpy.ApplySymbologyFromLayer_management("in_layer", "in_symbology_layer")
in_layer:シンボルが適用されるレイヤー。
フィーチャレイヤー;ラスターレイヤー; TINレイヤー;ネットワーク解析レイヤーin_symbology_layer:このレイヤーのシンボルが入力レイヤーに適用されます。
フィーチャレイヤー; ラスターレイヤー; TINレイヤー; ネットワーク分析レイヤー
または、スタンドアロンスクリプトの形式でこれを拡張します(IDLEと考えてください)。
import arcpy
from arcpy import env
# Set the current workspace
env.workspace = "path/to/workspace"
# Set layer to apply symbology to
inputLayers = ["in_layer_first.lyr","in_layer_second.lyr","in_layer_third.lyr"]
# Set layer that output symbology will be based on
symbologyLayer = "in_symbology_layer.lyr"
# Apply the symbology from the symbology layer to the input layer
for layer in inputLayers:
arcpy.ApplySymbologyFromLayer_management (layer, symbologyLayer)
本質的に、デザイン/スタイルに関して維持するシンボルレイヤー(in_symbology_layer)を作成します。次に、そのレイヤーシンボルを、コンテンツウィンドウにリストされている他の各レイヤーにコピーします。
前の回答
コンテンツウィンドウ/レイヤーリストで現在のレイヤーのスタイルを使用して、他のレイヤーに適用できます。
後続の各レイヤー(目的のスタイルレイヤーの下)>右クリック>プロパティ>シンボル>他のレイヤーからスタイルをインポート
同じ問題があり、別の解決策を見つけました。シンプルで本当に実用的で、*。lyrファイルを作成する必要さえありません。
ArcGIS ModelBuilderエディターボックスで、以下のプロセスを設計しました。
注:異なるタイプの形状のレイヤーを同時に使用する場合は、おそらく機能しません。同じ名前のレイヤーを一度に使用すると、うまく機能しません。ベクター以外のレイヤーでは試しませんでした。
モデルのpythonにエクスポートされたスクリプトは次のとおりです。
# Import arcpy module
import arcpy
# Script arguments
Layers_to_symbolize = arcpy.GetParameterAsText(0)
Symbology_Layer = arcpy.GetParameterAsText(1)
# Local variables:
Symbolized_Layers = Layers_to_symbolize
# Process: Apply Symbology From Layer
arcpy.ApplySymbologyFromLayer_management(Layers_to_symbolize, Symbology_Layer)
@Aaronのメッセージの直前に、@ Royからの情報を使用して、ArcToolboxスクリプトに組み込むことができる独自のソリューションを作成しました。下記参照:
# Import modules
import arcpy
#Get the current Map Document
mxd = arcpy.mapping.MapDocument("CURRENT")
# Script arguments
Template_Layer = arcpy.GetParameterAsText(0)
LayerList = arcpy.GetParameterAsText(1)
Layers_to_Symbolize = LayerList.split(";")
# Process: Apply Symbology From Layer
for UpdateLayer in Layers_to_Symbolize:
arcpy.AddMessage("Updating: " + UpdateLayer)
arcpy.ApplySymbologyFromLayer_management(UpdateLayer,Template_Layer)
# Refresh the Table of Contents to reflect the change
arcpy.RefreshTOC()
#Delete the MXD from memory
del mxd
この概念は、ツールバーの10.1 Pythonアドインの潜在的なツールと考えることができます。
以下にリンクされているツールボックスを使用して、一度に複数のレイヤーのシンボルを有効にするかなり簡単な方法を考え出しました。このツールボックスを追加したら、単一のシンボルレイヤーをドラッグアンドドロップしてから、シンボルを適用するすべてのレイヤー(ターゲット)をドラッグアンドドロップします。ジオタイプ(ライン、ポイント、ポリゴン)の一致に関する一般的なルールがここで適用される可能性があります。ツールが実行されると、何も起こらなかったように見えます。ディスプレイを更新します(F5)-ディスプレイは一致するシンボルで更新されます。レイヤーをクリックしてプロパティを表示し、[OK]をクリックすると、目次記号が更新されます。
ツールボックスのZipファイルをここからダウンロードします。
これが簡単な場合のスクリプトは次のとおりです。
import arcpy
# Script arguments
Target_Layers = arcpy.GetParameterAsText(0)
if Target_Layers == '#' or not Target_Layers:
Target_Layers = "LayersToBeChanged" # provide a default value if unspecified
Symbology_Layer = arcpy.GetParameterAsText(1)
if Symbology_Layer == '#' or not Symbology_Layer:
Symbology_Layer = "SymbologyLayer" # provide a default value if unspecified
# Local variables:
Output_Symbology = Symbology_Layer
# Process: Apply Symbology From Layer (3)
arcpy.ApplySymbologyFromLayer_management(Target_Layers, Symbology_Layer)