如有交流想法或指正请联系q775915005
1.使用pycharm出现:FNP preptool has not been run on this executable或者运行arcpy(打开arcpy.mapping)一直没有运行结果:
出现这些问题可以尝试清理对应mxd文件的缓存(本人主要因为加载在线影像图,缓存过多),或者将arcpy.mapping.MapDocument(ur"F:\arcgis\白云\景泰街道.mxd")中的路径提出来 mxd_fullpath = ur"F:\arcgis\白云\景泰街道.mxd" mxd = arcpy.mapping.MapDocument(mxd_fullpath) 或者mxd文档中有其他插入对象,excel等也会导致无法运行arcpy.mapping 后可以正常运行。
2.上一期关于(arcpy运行图例项)里说有些函数无法使用路径的ur,后来修改(将路径放在:
mxdpathname = ur"F:\arcgis\白云" mxd_fullpath = os.path.join(mxdpathname, u"景泰街道.mxd") mxd = arcpy.mapping.MapDocument(mxd_fullpath)
后就成功
再然后又可以直接用ur:
mxd = arcpy.mapping.MapDocument(ur"F:\arcgis\白云\景泰街道.mxd")
神奇!
3.# "Legend Items"注意这里用英文,而不是样式管理器中显示的中文
arcpy.mapping.ListStyleItems("USER_STYLE", "Legend Items", u"图例项宋体25")[0]
4.关于图例项legend.adjustColumnCount()调整列数
lyrFile = arcpy.mapping.Layer(ur"F:\集聚区.lyr") lyrFile1 = arcpy.mapping.Layer(ur"F:\地级.lyr") arcpy.mapping.AddLayer(df, lyrFile, "BOTTOM") arcpy.mapping.AddLayer(df, lyrFile1, "BOTTOM") styleItem = arcpy.mapping.ListStyleItems("USER_STYLE", "Legend Items", u"图例项宋体25")[0] lyrFile2 = arcpy.mapping.Layer(ur"F:\县级_按白云区界修改线.lyr") lyrFile3 = arcpy.mapping.Layer(ur"F:\镇界最终R纠正84镇.lyr") arcpy.mapping.AddLayer(df, lyrFile2, "BOTTOM") arcpy.mapping.AddLayer(df, lyrFile3, "BOTTOM") legend.adjustColumnCount(2) lyrFile4 = arcpy.mapping.Layer(ur"F:\镇界包络矩形.lyr") lyrFile5 = arcpy.mapping.Layer(ur"F:\JJQ2_Erase1_Id镇街.lyr") arcpy.mapping.AddLayer(df, lyrFile4, "BOTTOM") arcpy.mapping.AddLayer(df, lyrFile5, "BOTTOM")
将位置"BOTTOM"改为"TOP"后:
但:
lyrFile = arcpy.mapping.Layer(ur"F:\集聚区.lyr") lyrFile1 = arcpy.mapping.Layer(ur"F:\地级.lyr") arcpy.mapping.AddLayer(df, lyrFile, "TOP") arcpy.mapping.AddLayer(df, lyrFile1, "TOP") legend.adjustColumnCount(2) lyrFile2 = arcpy.mapping.Layer(ur"F:\县级_按白云区界修改线.lyr") lyrFile3 = arcpy.mapping.Layer(ur"F:\镇界最终R纠正84镇.lyr") arcpy.mapping.AddLayer(df, lyrFile2, "TOP") arcpy.mapping.AddLayer(df, lyrFile3, "TOP")
发现写legend.adjustColumnCount(2)时,将已加的图例分为两列,后面再增加的就在第一列继续增加,如果分为3列,就在最后写legend.adjustColumnCount(3)
lyrFile = arcpy.mapping.Layer(ur"F:\集聚区.lyr") lyrFile1 = arcpy.mapping.Layer(ur"F:\地级.lyr") arcpy.mapping.AddLayer(df, lyrFile, "TOP") arcpy.mapping.AddLayer(df, lyrFile1, "TOP") lyrFile2 = arcpy.mapping.Layer(ur"F:\县级_按白云区界修改线.lyr") lyrFile3 = arcpy.mapping.Layer(ur"F:\镇界最终R纠正84镇.lyr") arcpy.mapping.AddLayer(df, lyrFile2, "TOP") arcpy.mapping.AddLayer(df, lyrFile3, "TOP") lyrFile4 = arcpy.mapping.Layer(ur"F:\镇界包络矩形.lyr") lyrFile5 = arcpy.mapping.Layer(ur"F:\JJQ2_Erase1_Id镇街.lyr") arcpy.mapping.AddLayer(df, lyrFile4, "TOP") arcpy.mapping.AddLayer(df, lyrFile5, "TOP") legend.adjustColumnCount(3)
最后发现只能用legend.adjustColumnCount()调整列数,在arcmap中只能在插入图例时设置,插入后就无法改变列数。
最后另外发现插入2个图层组后,图例不能分为2列,只能分为3列,同理插入3个图层组只能分为2列!(可能是识别图层组的问题),针对图层组,慎用调整图例列,1个图层组有时可分两列图例,有时又不能。
5.只有arcpy.mapping.MapDocument和arcpy.mapping.Layer能直接使用路径作为参数,其他如arcpy.mapping.ListLayers和arcpy.mapping.ListDataFrames均需使用mxd或者lyr对象作为参数。