ArcGIS已经提供了十分丰富的工具箱,但是如果遇到一些需要批处理或者需要将多个工具箱组合使用,就需要根据需求自制一个ArcGIS的工具箱。
下面介绍一下如何自制一个ArcGIS/ArcGIS Pro工具箱,主要是使用ArcPy和模型构建器。
使用模型构建器
使用模型构建器制作工具箱前面的文章已经介绍了很多,具体可以参考:
https://blog.csdn.net/qq_44894692/article/details/129963534
https://blog.csdn.net/qq_44894692/article/details/129101692
https://blog.csdn.net/qq_44894692/article/details/114644808
前面的文章都有详细的操作步骤和说明,直接在ArcGIS的模型构建器界面根据需要拖动相关功能和控件,搞清楚输入输出就可以,操作简单,制作完成后可以导出为工具箱,方便之后的重复使用。
使用ArcPy
使用模型构建器就已经能够满足大部分的需求,这里再主要介绍一下如何使用ArcPy来制作模型构建器,这部分建议要有一定python基础,当然不用太多,只需要有一点点基础就可以。
首先需要配置一下ArcPy的环境,只要安装了ArcGIS就不用担心这步会很麻烦,很简单,建议使用PyCharm配置,界面和操作都很友好。
在PyCharm中按照下图将编译器设置为ArcGIS自带的python,一般都会自动加载加来选择即可,如果没有则需要到ArcGIS的安装路径下找到python,通常为python 2.7
接着就可以使用ArcPy的环境了。下面以批量按掩膜提取为例,一个面shp中有多条数据,需要将每条数据对应位置的栅格数据提取出来并导出为tif格式,可以使用如下代码:
# coding=utf-8
import arcpy
from arcpy import env
from arcpy.sa import *
from arcpy.da import *
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# 获取工具箱文本框中的参数
tif = arcpy.GetParameterAsText(0)
mask = arcpy.GetParameterAsText(1)
out_dir = arcpy.GetParameterAsText(2)
# 使用游标遍历每条数据
# 可以稍微学习下关于Arcpy中的一些语法
fields = ["SHAPE@", '地名']
i = 0
with arcpy.da.SearchCursor(mask, fields) as cursor:
for row in cursor:
geometry = row[0]
attributes = row[1]
out_raster = os.path.join(out_dir,"path_to_output_raster_{}.tif".format(attributes))
if not os.path.exists(out_raster):
arcpy.Clip_management(tif, "#", out_raster, geometry, "#", "ClippingGeometry", "NO_MAINTAIN_EXTENT")
arcpy.AddMessage("{0} finshed!".format(i))
i = i + 1
# 添加提示
arcpy.AddMessage("Done!")
接着将该.py文件保存,按照下图顺序一步一步设置即可:
完成后,就可以在工具箱中看到刚刚添加的脚本了,双击打开后设置输入输出就可以运行脚本处理数据了。
注:
ArcGIS中的每个功能在文档中附有相关python的代码,如果想要使用某个或一些功能做批处理,可以在文档中找到相关代码,然后加循环处理。在每个工具的【工具帮助】中可以找到,直接复制相关代码即可。