pycharm在arcpy开发中arcgis工具箱打包

01

这次我们先做了一个测试工具,其主要目的是利用toolbox工具箱的Mosaic To New Raster

将多个栅格数据合成一个栅格数据。如果说栅格数量少的话,手动选择并没有太大的影响。而如果栅格文件非常多的话,手动选择将浪费大量的时间和精力,为此我们写了一个小工具,将某个目录下所有的栅格数据一次性加入到上面的Mosaic To New Raster工具中,直接运行即可。说得直接一点就是直接调用了Mosaic To New Raster工具,一次性加入多个文件。在写完这个工具后遇到工具打包和工具多个参数类型问题,现将自己写这部分功能中遇到的问题特记录下来。

利用python调用arcpy脚本后,如果使用代码的方式让用户使用编写的脚本是极其的不方便和友好。为此,需要利用某种方式将写好的脚本代码封装成类似arcgis中工具箱的工具。将写好的代码的目录利用catalog将其添加到arcgis中,然后在arcgis中选择该目录,右击选择【New】、选择【Python ToolBox】。这样在该目录下就生成了Toolbox.pyt文件。具体操作如下图所示。

这次我们先做了一个测试工具,其主要目的是利用toolbox工具箱的Mosaic To New Raster

将多个栅格数据合成一个栅格数据。如果说栅格数量少的话,手动选择并没有太大的影响。而如果栅格文件非常多的话,手动选择将浪费大量的时间和精力,为此我们写了一个小工具,将某个目录下所有的栅格数据一次性加入到上面的Mosaic To New Raster工具中,直接运行即可。说得直接一点就是直接调用了Mosaic To New Raster工具,一次性加入多个文件。在写完这个工具后遇到工具打包和工具多个参数类型问题,现将自己写这部分功能中遇到的问题特记录下来。

利用python调用arcpy脚本后,如果使用代码的方式让用户使用编写的脚本是极其的不方便和友好。为此,需要利用某种方式将写好的脚本代码封装成类似arcgis中工具箱的工具。将写好的代码的目录利用catalog将其添加到arcgis中,然后在arcgis中选择该目录,右击选择【New】、选择【Python ToolBox】。这样在该目录下就生成了Toolbox.pyt文件。具体操

02

接下来利用pycharm再次将刚才的目录导入,也可以不用该步骤。如下图所示,可以看到有新生成的三个文件。如果pyt后缀的文件,在pycharm中为灰色,那么说明该后缀的pyt的python代码没有被pycharm所识别,如何解决这个问题,可以参考之前写的博客pycharm导入.pyt后缀文件

接下来利用pycharm再次将刚才的目录导入,也可以不用该步骤。如下图所示,可以看到有新生成的三个文件。如果pyt后缀的文件,在pycharm中为灰色,那么说明该后缀的pyt的python代码没有被pycharm所识别,如何解决这个问题,可以参考之前写的博客pycharm导入.pyt后缀文件

首先我们在单独文件python文件中,写了我们功能函数,而我们现在需要配置参数,将我们需要的参数传入到具体的功能函数中。具体来说就是做成类似下面的将多个数据源文件合并成新的一个文件。每个输入框对应这我们功能函数的一个参数。

03

函数中,添加如下代码对应的参数。注意每个参数都有displayName、name、dataType、paramterType、direction参数,分别代表这在工具框显示名称,对应名称,数据类型、参数类型、方式(必须还是可选)。在这里我们利用到dataType数据类型有Folder(目录)、GPString(字符)、Long(长形数据)、GPSpatialReference(空间参考)、同时有选选项还会出现是选择框类型,可以对参数的属性filter.type=”ValueList”、对应列举相应的值,如filter.list=[“11”,”22”,”33”]、设置选择框的默认选择值可利用参数的value属性设置,具体参数可以参考代码。最后做成如下的结果界面。是不是感觉和Mosaic To New Raster工具非常像。

04

在ToolBox.pyt,弹出框配置输入参数代码如下:

数据融合代码相对来说比较简单,现在贴一下比较核心的代码段:

至此,整个讲解就说明完了。更多相关arcpy的开发,将需要不断学习。

如果觉得这篇文章有用,欢迎微信分享转载。更多内容,敬请微信关注公众号:测绘科技。

排版|测绘科技

文案|测绘科技

公众号:测绘科技

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010G0BE4Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券