近期使用arcpy的坑

如有交流想法或指正请联系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对象作为参数。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值