使用Arcpy编写脚本并将其导入Arcmap中

写在前面

  用过Arcmap的都应该知道,其内部的ArcToolbox可以说是功能十分强大,其集成arcmap几乎所有的工具,在该工具箱中我们能够找到我们需要的工具,熟练的掌握能够帮助我们更高效的处理数据。但有些时候工具箱里的工具可能不能完美的处理我们的问题,或者是想要进行批量操作时,这个时候就需要能够制作一些个性化工具。Arcpy就能在这种情况下发挥出它的作用。

  本文主要介绍如何在pycharm中编写脚本,并且将脚本导入Arcmap中,以供在模型构建器使用自己编写的工具进行批量处理。所以举的例子不会过于复杂,只用到了一个ArcToolbox中自带的按位置选择工具,选择一个点要素周围指定距离的面要素并输出,结合for循环实现了按位置选择的批量操作。希望读者能在该例子中学会Arcpy的简单使用。

一、编写python脚本

更改Python解释器版本

  此处笔者以pycharm为例来编写python代码。要注意Arcpy仅支持pyhton2版本,所以用pycharm的小伙伴记得在设置中更改解释器。

输入参数

  由我们例子的处理流程可知,需要4个参数,分别是输入数据库,输入点要素,查询距离,输出数据库。所有我们输入如下代码,最开始一句是为了防止存在中文注释而导致的错误。

#coding:utf-8
import arcpy
in_gdb = arcpy.GetParameterAsText(0)
in_points = arcpy.GetParameterAsText(1)
in_dis = arcpy.GetParameterAsText(2)
out_gdb = arcpy.GetParameterAsText(3)
# 输入数据库,选择要素,查询距离,输出数据库

获得输入要素

  通过在Armap官方文档关于按位置选择工具的介绍,可以知道输入的要素不能为磁盘上的路径,所有我们首先要将点要素在代码中复制一份。第一句为设置工作空间,后续的文件路径可以写成该工作空间的相对路径。
在这里插入图片描述

arcpy.env.workspace = in_gdb
arcpy.MakeFeatureLayer_management(in_points, 'point_lyr')

  通过查阅官方文档,可以用如下语句得到工作空间内的所有面要素。

datasets = arcpy.ListFeatureClasses('*','Polygon')

执行空间查询

  同理点要素的复制,我们也需要将获得的面要素在代码中复制一份才可以进行空间查询。最后将查询好的结果复制到我们指定的路径即可。

for i in datasets:
    arcpy.MakeFeatureLayer_management(i, i+'lyr')
    # 选择要素
    arcpy.SelectLayerByLocation_management(i+'lyr', 'WITHIN_A_DISTANCE', 'point_lyr',str(in_dis)+' Kilometers')
    b = out_gdb + '\\ljj'+i
    arcpy.CopyFeatures_management(i+'lyr',b)

总结

  完成一个脚本其实就两步,第一步设置参数,这些参数将在脚本导入Arcmap中需要;第二步将在Arcmap中操作的思路用代码表达出来。
  我上述提到的函数读者并不需要记下来,只用在需要时去官方文档查阅既可。例如上面用到的按位置选择函数,官方文档有关于这个函数所有参数的详细介绍,也有关于使用该函数的例子,可以说是非常的Nice。
在这里插入图片描述

二、将脚本导入Arcmap

新建脚本

  首先在Arcmap中新建一个工具箱,不知道怎么新建的小伙伴自行去网上搜索。然后在工具箱中新建一个脚本。

设置脚本参数

  双击新建的脚本,输入名字、标签、描述点击下一步,选择刚刚写好的python文件点击下一步。在该对话框中输入参数名称与参数类型,注意此处顺序必须与前面代码中参数的顺序一致!!!

运行脚本

  运行该脚本和使用ArcToolbox一样的简单,设置输入参数点击确定即可,此处不在赘述了。该脚本可以和ArcToolbox中的工具一样在模型构建器中使用,也可以输入项目描述以帮忙他人了解该脚本的使用方法。

写在后面

  很多时候我们对Arcpy是望而却步的,不仅仅是因为它需要编码,而是我们对于地理信息很多本身的逻辑思维都不甚了解。但其实Arcpy的使用极其简单,并且十分好用。因为真正复杂的部分已经有人为我们做好了,我们只需要根据函数的参数介绍调用函数,去完成我们需要的功能就行,所以快去使用Arcpy吧!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值