ArcGIS Pro脚本工具(14)——裁剪文件夹或数据库(保留文件夹结构)

有网友私信,希望能做这个功能,安排。。。

作为规划人,很自然就能想到这个功能的应用场景。比如有一个文件夹,包含了一个县的各种shp要素类和gdb数据库,现在需要从中抽取一个乡镇的范围出来,并且还需要做成与原来文件夹一致的结构。

让我们先看看ArcGIS的裁剪工具

96e3013bcf2345b9ac7efb37e86cb171.png

ArcGIS的裁剪工具

使用自带的裁剪工具,虽然能批处理裁剪多个要素类,但是想做成原来一致的结构还是要费一番功夫。如果能裁剪整个文件夹,能省下很多组织文件的功夫。

参数设置

daca33e11b7b47379c0b17e04f2a4f7c.png

验证代码(可根据输入填充参数)

class ToolValidator:
    # Class to add custom behavior and properties to the tool and tool parameters.

    def __init__(self):
        # set self.params for use in other function
        self.params = arcpy.GetParameterInfo()

    def initializeParameters(self):
        # Customize parameter properties. 
        # This gets called when the tool is opened.
        return

    def updateParameters(self):
        # Modify parameter values and properties.
        # This gets called each time a parameter is modified, before 
        # standard validation.
        if self.params[0].altered or self.params[1].altered:
            if self.params[0].value and self.params[1].value and not self.params[2].value:
                raw_dir = self.params[0].valueAsText
                raw_path = os.path.dirname(raw_dir)
                raw_name = os.path.splitext(os.path.basename(raw_dir))[0]
                raw_ext = os.path.splitext(os.path.basename(raw_dir))[1]
                
                clip_features = self.params[1].valueAsText
                clip_name = os.path.splitext(os.path.basename(clip_features))[0]
                
                new_dir = raw_path+"\\"+raw_name+"_"+clip_name+raw_ext
                self.params[2].value = new_dir
        return

    def updateMessages(self):
        # Customize messages for the parameters.
        # This gets called after standard validation.
        return

    # def isLicensed(self):
    #     # set tool isLicensed.
    #     return True

效果演示

606845101594418c95afa31494549f02.gif

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值