技术专栏

gis培训

ArcGIS中的批处理

作者:史世莲 邮箱:shisl@lreis.ac.cn 发布时间:2014-09-24 10:12:19 阅读(3370)

ArcGIS中的批处理

可别告诉我您不知道什么是批处理,当面对一大堆需要重复操作的数据时,往往让我们感到头大,这时候我们会想到批处理,那ArcGIS给大家提供了哪些批处理的方法呢,让我们拭目以待。

假设我们需要给道路建立缓冲区,设计到的工具为Buffer

第一种情况,一个图层中不同要素建立不同大小的缓冲区

不同类型的道路,我们需要建立不同大小的缓冲区,比如,一级道路建立10米的缓冲区,二级道路建立15米的缓冲区,三级道建立20米的缓冲区。

步骤:

1、  首先应该保证你的道路数据里面有一个属性字段是用来存储Buffer宽度信息的。

2、  应用Buffer工具,在对应的参数位置选择刚才的字段即可,如下:

第二种情况,不同的图层建立不同大小的缓冲区

假设还有其他不同的数据,不仅仅是道路,这些图层都需要建立缓冲区。

步骤:

1、  找到Buffer工具,右键,选择Batch,打开批处理面板。从该面板上我们可以发现,参数与我们打开Buffer的参数是一样的,这个时候是不是可以考虑在EXCEL中批量编辑好,然后复制过来呢

2、  Excel中编辑需要的数据,如下:

3、  将在Excel中编辑的数据复制到Buffer的批处理面板中来。此处需要注意,如果要复制10行数据,需要在批处理面板中先选中10行,右键单击,选择“paste”。

 

4、  点击OK即可。

如果想要每个图层中每种类型的数据的缓冲区宽度都不一样,该怎样处理的?这个留给您来尝试吧,原理很简单,就是找到参数位置,写上对应的字段即可。

第三种情况,Python实现批处理

如果您觉得上面的方法比较麻烦,而且要求也比较严格,您可以考虑应用Python来处理。

步骤:

1、  编写代码

import arcpy,os

inFCs = arcpy.GetParameterAsText(0)

outWS = arcpy.GetParameterAsText(1)

dist = arcpy.GetParameterAsText(2)

inFCs = inFCs.split(";")

for inFC in inFCs:

fileName =os.path.split(inFC)[1]

arcpy.Buffer_analysis(inFC,outWS + "\\" + fileName, str(dist) + "meter")

上面这段代码,要求用户自己设置输入数据、输出数据、缓冲区宽度(单位为米)。这里输出缓冲区数据的名称和输入数据的名称一样,如果不想要这样,可以进一步修改代码。

2、  接下来将该代码增加到ArcToolbox中,步骤比较简单,这里不再赘述,可以参考文档:

http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/00150000001r000000/

需要注意的地方为最后的参数设置部分,输入数据的“MutiValue”属性设置为”Yes”(此部分的参数设置较条条框框较多,需要与你的代码相互对照)

3、  完成后,工具将会添加到您自己的工具箱中。打开该工具,您会看到界面像普通工具的界面一样,输入数据可以设置很多个,但是这个工具所有图层的缓冲区大小必须一样,如下:

哈哈,我的介绍就到此为止了,您要是觉得还不满意,欢迎继续交流。

后记:Python不仅仅这样简单,你可以写出来任何你想要的工具,你当然可以为不同的图层设置不同的缓冲区,当然也可以设置任何的输出数据名称,您甚至可以为不通的图层设置不同的缓冲方式。这个任务就交给您了。

作者:史世莲 邮箱:shisl@lreis.ac.cn

HiGIS技术交流QQ群:336076300

关键词:arcgis,批处理,Python,Excel,缓冲区

中科地理信息系统培训中心-原创文章
转载请注明出处:www.higis.cn/Tech/tech/tId/75/

创新地理知识,共享地理价值

http://www.higis.cn

中科地理信息系统培训中心

关于我们

gis培训

苏州高新区中科地理信息系统培训中心是“国家专业技术人员继续教育基地”指定培训点,是3S方向唯一指定的培训点。同时也是国内唯一获得Esri授权的ArcGIS专业培训与认证机构,为广大用户提供ArcGIS培训、开发和咨询服务,中心已经为中国用户服务20年...详细情况...

联系方式

Email:actc@lreis.ac.cn
苏州总部电话: 0512-68076858
        0512-68075672
北京分部电话: 010-64855687
苏州总部地址:苏州市高新区科灵路78号苏高新软件园5号楼3层
北京分部地址:北京市朝阳区大屯路甲11号中科院地理所2406

顶部 返回
地理信息系统国际培训中心