【教程】如何自制一个ArcGIS工具箱

ArcGIS已经提供了十分丰富的工具箱,但是如果遇到一些需要批处理或者需要将多个工具箱组合使用,就需要根据需求自制一个ArcGIS的工具箱。

下面介绍一下如何自制一个ArcGIS/ArcGIS Pro工具箱,主要是使用ArcPy和模型构建器。

使用模型构建器
使用模型构建器制作工具箱前面的文章已经介绍了很多,具体可以参考:

https://blog.youkuaiyun.com/qq_44894692/article/details/129963534
https://blog.youkuaiyun.com/qq_44894692/article/details/129101692
https://blog.youkuaiyun.com/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的代码,如果想要使用某个或一些功能做批处理,可以在文档中找到相关代码,然后加循环处理。在每个工具的【工具帮助】中可以找到,直接复制相关代码即可。
在这里插入图片描述

更多内容关注公众号 GISerQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISerQ.

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值