课本_第十二章、批量出图自定义工具

发布时间 2023-05-10 11:09:25作者: Agiser0

 

 1 # coding:utf-8
 2 import  arcpy
 3 import arcpy.mapping as mp
 4 # path = ur"E:\桌面文档\C_课本arcpy开发\第12章批量出图自定义工具\test.mxd"
 5 # mxd = mp.MapDocument(path)
 6 mxd = mp.MapDocument("CURRENT")
 7 adf = mxd.activeDataFrame #整理如何得到 adf
 8 # lyrs = mp.ListLayers(mxd)
 9 # lyr= lyrs[0]
10 lyr = arcpy.GetParameter(0) #总结获取 lyr 的方法
11 # outFolder = ur"E:\桌面文档\C_课本arcpy开发\第12章批量出图自定义工具\out"
12 outFolder = arcpy.GetParameterAsText(1)
13 14 def exportJpgByFid(fid):
15     lyr.setSelectionSet("NEW",[fid])
16     adf.zoomToSelectedFeatures()
17     arcpy.RefreshActiveView()
18     mxd_jpg = ur'{}\{}.jpg'.format(outFolder,fid) #format函数的使用
19     mp.ExportToJPEG(mxd,mxd_jpg)
20 result = arcpy.GetCount_management(lyr)
21 count = int(result.getOutput(0))
22 for fild in range(count):
23     exportJpgByFid(fild)

 

一、arcgis中编辑工具的选择和配置

编辑工具有 : PySpinder 和 Pycharm

推荐使用 PySpinder 进行脚本工具的编写

原因:

1、pycharm 编写的代码在导入脚本工具,进行解析时;会出现代码行与解释行重合的情况,在使用Spinder打开时可以清楚的看见

2、Spinder 可以实现在 arcmap 内对脚本工具进行编辑

二、如何得到 adf

1 import arcpy as ap
2 import arcpy.mapping as mp
3 mxd = mp.Mapdocument('CURRENT')
4 adf = mxd.activeDataFrame

 

三、如何得到 lyr

lyrs = mp.ListLayers(mxd)
lyr = lyrs[0]

 

四、Python中 format 函数的使用(格式化字符串)

1、用于传参数

2、用于修改输出的数字格式

Python format 格式化函数 | 菜鸟教程 (runoob.com)

五、arcgis脚本工具传参为路径时,接收参数的方式

arcpy.GetParameterAsText(index)
#通过GetParameterAsText获取的字符串,不需要进行encode或deconde等转码操作

 

六、Python中编码和转码操作

若要将某个String对象s从gbk内码转换为UTF-8

s.decode('gbk', ‘ignore').encode('utf-8′)

七、解读代码

class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))

 

这是一个Python类,名为AssignValue。它有一个初始化方法init 以及一个变量value。当使用这个类来创建一个实例时,实例会被初始化并赋一个数值。在这个例子里,一个名为my_value的实例被创建并赋值为6。

通过使用字符串格式化的方法,输出了my_value的value属性的值。在这里,{0.value}指的是my_value实例的value属性。这个属性的值是6,所以输出结果是'value 为: 6'。

关于 init函数,看这里(赋值给对象属性)

(42条消息) python中init()函数的用法_init函数_Kun Li的博客-CSDN博客