arcpyでシェープファイル(shp)をmxdファイルに追加する

区急泉ケ丘です。

某所でArcGIS(ArcMap)を使っているのですが、そのpythonライブラリであるarcpyでレイヤー追加に苦戦したので、備忘録として残しておきます。

 

やりたいこと

フィーチャクラス/FC(シェープファイル(*.shp)またはジオデータベースのファイル(*.gdb/*))を、マップファイル(*.mxd)に追加したい。

 

コード

  
arcpy.SetProgressorLabel("レイヤーを追加しています...")
  #追加レイヤーの名前を設定 shpならファイル名, gdbならgdb内の名称
  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からレイヤーを作成」→「作成したレイヤーをマップ上に追加」という手順を経る必要があります。

 

 

参考サイト

英語でですが、ほぼ同じ質問がありました。

gis.stackexchange.com

 

「マップ ドキュメント」 > 「データ フレーム」 > 「レイヤー」の階層構造についてはこちらから

community.esri.com