ArcPy批量化入门篇

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zhoujiaaw/article/details/102755879

写在前面

    玩GIS都知道ArcGIS,这东西就好比倚天剑,每个工具都是一招一式,学了一两招后,用它处理一两副图的时候感觉很棒,感觉自己充满了力量!处理七八幅图也还行,脖子疼点而已,也还能应付。忽然,有一天,有人让你处理上百个图层,每个图层都需要一次使用好几个工具。是不是很懵逼,杀了我算了,没有群杀技能啊!

    今天的主题就是解决大量重复问题,也就是“批量”,之前写过如何批处理的博文,我说你们可以用工具提供的示例代码,构建一个自己的脚本,然后泡杯茶吃点饼干等程序跑完就行了。结果呢,我发现很多人根本不会用这个示例代码,看见了示例代码都不知道往哪里放,怎么运行!接下来的几篇博文,将介绍一下武林秘籍--ArcPy。这个就是藏在倚天剑里面的《九阴真经》和《降龙十八掌》啊,倚天不出,谁与争锋!

什么是ArcPy

    其目的就是为了以实用高效的方式通过 Python 执行地理数据分析、数据转换、数据管理和地图自动化创建。

    说明它的最大的特性就是能自动化和批量化处理地理数据。当然,它的作用绝对不只是批量,很多复杂的图像处理,仅仅靠arcmap工具的组合是做不到的,得靠程序,这时候arcpy的强大是无以言表的,后面会做一些好玩的arcpy小工具分享出来。其次很重要的就是你得会点儿基本的python语法,这也是一直建议用学GIS的同学学一点儿python的原因,它有实在太多的关于地理数据的库了,用方便,别把时间花在重复造轮子上,何况你造的还不行呢!

ArcPy使用入门

2.1打开arcpy

    打开arcmap-->点击打开-->可以看到弹出的arcpy命令行窗口

2.2第一行代码

输入'hello,arcpy'后回车,窗口会打印'hello,arcpy'。好了,恭喜入坑!

'hello,arcpy'

2.3导入arcpy库

--当我们输入 ar 时,它会有提示arcpy,说明这个窗口已经加载了arcpy库。

--但是为了养成用一个库前先引用的习惯,我们尝试导入arcpy库,这也是后面别写脚本不可少的一步。输入 import arcpy 后回车。

import arcpy 

--查看库有哪些东西,输入 help(arcpy) 命令。

help(arcpy)

2.4使用工具

    我们就以缓冲区分析这个工具为例子,来试试如何通过命令行窗口来使用工具。

--找到 缓冲区 工具(分析工具--邻域分析--缓冲区),拖拽到窗口中。

--拖拽后可以在窗口看到 缓冲区 的函数头,右侧有这个函数需要传入的参数介绍。

--除了拖拽,还可以直接数据。比如,输入 arcpy. 这个时候,就可以看到弹出的所有arcpy函数。

--继而输入arcpy.Buff可以看到弹出的Buffer_analysis函数。直接选择即可。

--对这个函数一无所知?不知道需要需要传入什么参数?这个时候在工具上 右键-->项目描述。

--弹出框是对这个工具的详细介绍

--往下翻,会有语法介绍,会详细说明每个参数的含义

--继续往下翻,我们可以在给的事例中看到这个函数的用法。可以看到缓冲区这个函数需要有输入、输出、缓冲区距离等参数。

--双击打开缓冲区工具门口一看到,众多参数中,其实只要输入三个要素就可以了。对于其他工具一样的,可以双击点开工具看看具体需要填写哪些参数。

--输入要进行缓冲区的要素的地址,我这里是point;输出地址,和换出去大小。

注意:①地址前面加"r",这个是防止乱码用的。②我这里缓冲区大小设置为10千米

 arcpy.Buffer_analysis(r'C:\Users\Dell\Desktop\toDo\test\point.shp',
                       r'C:\Users\Dell\Desktop\toDo\test\point2.shp',
                       '10 Kilometer')

--回车后窗口会提示已经成功。同时arcmap会打开结果图层。

到这里,大家已经学会了如何在命令行中使用工具。

总结

    你可能会失望,觉得在命令行里面使用工具,除了装逼,它们还没直接双击点开用的方便快捷,还要绞尽脑汁去查它的函数名和参数,参数格式输入不对还会各种报错,简直让人掉头发!而且,也没有体现批量啊!

    其实,对于一次批量来说,我们通常都会手动将过程走一遍,先使用哪个工具,然后怎么操作,需不需要地图代数等等。然后才能按照这个走通的步骤批量处理很多个图层。在命令行中实验工具的函数如何使用,届时不过是将这些工具外面套一个for循环而已。命令行其实就是一个批量化前的一次探路而已。

一个批量的小栗子

问题:

    想知道中国近20年每个省份餐饮数量的变化趋势。

已有数据:

    2000-2019年共计20张栅格图,一年一张。图中栅格若有数字表示该点有餐馆,没有表示没有餐馆。全国的餐馆会1-34进行标号,比如浙江内的餐馆,其栅格点的值是1,江苏内的是2。

分析:

    要想知道变化趋势,那你是不是得:对于每一张图,提取每个省份的栅格并导出,最后分别叠加各自省份20年的数据,看一下趋势。

做法:

    用栅格算器,计算出值为1的栅格,导出,计算值为2的栅格,导出,一直计算到34。当然也可以直接按属性分成34个,分别右键导出数据。且不说怎么分开各个省份的数据吧,单纯导出数据你就得进行20x34次了,想想,胳膊和眼睛还要不要了!

arcpy批量操作:

    几行代码,就可以分离20年34个省市地区的栅格,分门别类的保存在设定好的文件夹中。这就是脚本批量的魅力。

调用的是ArcPy的Con条件函数。

    ​本次只是入门只是大致感受一下arcpy,先学会怎么用命令行去使用工具,后期会基于arcpy编写一下有意思脚本,甚至可以将自己的脚本制作成工具,共享给大家一起使用。

    ​记住,批量只是脚本的魅力,但是ArcPy的能力绝对不只是批量,以后一起探索吧!

技多不压身

长按识别二维码关注我们

猜你喜欢

转载自blog.csdn.net/zhoujiaaw/article/details/102755879