arcgis自动调整数据框大小以输出图片

在arctoolbox中新建工具箱,工具箱中新建脚本工具,添加参数(1:比例尺;2:图层)(目前图层不支持组合后的图层,数据框范围为所选图层范围,数据框宽高和页面打印建议宽高会在输出结果中显示)

如图:

代码如下:

#coding:gbk
from __future__ import division
__author__ = '杭州华耕_杨勇'
#注意,传入的参数均为string
my_scale = arcpy.GetParameterAsText(0)  #eg:if the scale is 1:10000 , please input 10000
zm_lyr = arcpy.GetParameterAsText(1)
#设置mxd为当前空间
mxd = arcpy.mapping.MapDocument('current')
df = arcpy.mapping.ListDataFrames(mxd)[0]
#选取名称对应的图层
lyrs = arcpy.mapping.ListLayers(mxd,'%s'%zm_lyr ,df)
lyr = lyrs[0]
#选中需要全部显示的图层中要素
df.scale = my_scale     #set 10000 or others scale and calculation range
a = lyr.getExtent(False)
x_max = float(a.XMax) * 100
x_min = float(a.XMin) * 100
y_max = float(a.YMax) * 100
y_min = float(a.YMin) * 100
scale = float(my_scale)
long_x = (x_max - x_min)/scale
long_y = (y_max - y_min)/scale
###########################################
#start make my setting
df.elementHeight = long_y
df.elementWidth = long_x
df.panToExtent(lyr.getExtent())
#空间的宽和高一般在1:10000的情况下比数据框的宽高大2—3
#print long_x	在工具箱中print函数无法正常输出,需要借助arcpy.AddMessage
#print long_y
arcpy.AddMessage('df宽度: ' + '%s'%long_x + '    '  +'df高度: '+ '%s'%long_y)
arcpy.AddMessage('比例尺按照10000设置')	
arcpy.AddMessage('页面设置宽度推荐: '  + '%s'%(long_x * 105.17/100))
arcpy.AddMessage('页面设置高度推荐: ' + '%s'%(long_y * 111.3/100))


转载自:https://blog.csdn.net/qq_35515661/article/details/80838876

You may also like...