arcpyでシェープファイル(shp)をmxdファイルに追加する
区急泉ケ丘です。
某所でArcGIS(ArcMap)を使っているのですが、そのpythonライブラリであるarcpyでレイヤー追加に苦戦したので、備忘録として残しておきます。
やりたいこと
フィーチャクラス/FC(シェープファイル(*.shp)またはジオデータベースのファイル(*.gdb/*))を、マップファイル(*.mxd)に追加したい。
コード
arcpy.SetProgressorLabel("レイヤーを追加しています...")
lyr_name = outFC.split('\\')[-1]
if '.' in lyr_name:
lyr_name = lyr_name.split('.')[0]
#レイヤーを追加
mxd = arcpy.mapping.MapDocument("Current")
df = arcpy.mapping.ListDataFrames(mxd)[0]
arcpy.MakeFeatureLayer_management(outFC,lyr_name)
addLyr = arcpy.mapping.Layer(lyr_name)
arcpy.mapping.AddLayer(df, addLyr, "TOP")
マップファイルの方は「マップ ドキュメント」(mxd) > 「データ フレーム」(df) > 「レイヤー」(lyr)の構造となっているため、順番に場所を指定してあげる必要がありました。
データフレームの部分は
df = mxd.activeDataFrame
でも動きます。
レイヤーの追加は「FCからレイヤーを作成」→「作成したレイヤーをマップ上に追加」という手順を経る必要があります。
参考サイト
英語でですが、ほぼ同じ質問がありました。
「マップ ドキュメント」 > 「データ フレーム」 > 「レイヤー」の階層構造についてはこちらから