打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于Python的ArcGIS(ArcPy)多进程自动出图
Note: 由于微信不支持发布后的文章做大幅度的修改,所以删除了旧文章,重新发布修改版本。修改内容包括文章措辞,更严谨,代码片段改为图片显示,优化手机上查看的体验等等...
前言:流程化、自动化、集中化是计算机的优势项,电脑能干的就让电脑干,不仅仅干的更好还能全部干完。解放人类,摸鱼万岁!使用 Python 的多进程导出图片,发挥计算机性能,节约人的时间。文末附代码和傻瓜式操作视频,人人都可用!
1.什么是ArcPy
ArcPy 是一个安装 ArcGIS 会附带的站点包,通过 Python(安装 ArcGIS 的时候也会安装 python ) 实现。
简言之,通过 Python 能直接调用 arcpy 执行地理数据分析、数据转换、数据管理和地图自动化等功能,满足多种客制化的需求。
说人话就是,你买了一个超大的工具台名叫 ArcGIS;工具台上附赠了一个叫 Python 的工具箱(Python一门编程语言);工具箱中的一把螺丝刀就叫 ArcPy。
官方文档:https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy/what-is-arcpy-.htm
2.什么是多进程和自动
与多进程相对的是单进程。单进程就是一次做一件事,多进程就是同时做多件事。举个例子,一个人打开一个 mxd 文档,执行导出地图操作,地图导出完成后,再打开下一个 mxd 重复上一个流程,这就可以理解为单进程;
但是这个人同时打开4个 mxd 文档,然后都执行地图导出操作,那么这个就可以理解为多进程导出地图。但是呢,这不是自动化的,是人工操作的。
我们通过使用 Python 中一把叫做 multiprocessing 的螺丝刀实现多进程。
多进程和自动不是连起来的哦,是分开的,既然有单进程,那么就有单进程自动化制图和多进程自动出图。
简单来说:
普通出图:一个人干活,得有人看着,一旦没人守着就停止工作了。
单进程自动出图:计算机一件事情一件事情的做。
多进程自动出图:计算机同时干几件事。
官方文档:https://docs.python.org/zh-cn/3/library/multiprocessing.html
3.实现多进程自动出图
为什么要自动出图,当然是解放人类、解放生产力啊!
使用 ArcGIS 制图完成然后导出,我们知道通常,一张图片对应一个 mxd 文件。
在生产环境或者学习实验中,能遇到一个县级行政区下辖的所有村都需要出一张某方面的专题图;又或者是某区域十年来的气温变化专题图的情况,光是需要制作 mxd 文件就有几十个乃至上百个(可以使用 Python 语言等进行自动化制图,以后详说),你还要一个个打开 mxd 文件,心累......
而使用 arcpy 自动化出图,解放生产力,同时有多进程的加持能充分挖掘计算机的性能。
在电脑最低配置都是4核的今天,总体出图速度提升个2到3倍不是问题,更不用说电脑自动化操作,连半夜都能继续出图,不再加班熬夜,拯救社畜。
3.1ArcPy单进程自动出图
还是简单的讲一下使用 ArcPy单进程自动出图 网上很多帖子,我去抄一个贴到下面:
*把所有mxd文件放到这个文件夹里面,就可以让电脑自己出图了,很简单吧!
函数 export 接收两个参数,第一个是存放了 mxd 文件的文件夹地址,同时该地址也是地图导出成果的输出文件夹。第二个是出图分辨率,你可以填300。
3.2 ArcPy多进程自动出图
本文的重点来了!那么如何实现多进程?前面我们已经说了:
我们通过使用“工具箱”中一把叫做 multiprocessing 的螺丝刀实现多进程。
multiprocessing模块的官方文档
接下用一个例子来详细讲讲思路:假如一个文件夹中有400个 mxd 文件需要出图
3.2.1首先我们需要把数据切片
我们读取该文件夹中的所有 mxd 文件的地址,然后切分成几个部分,比如分成4分,每一部分都有100个 mxd 文件。
如何切分呢?电脑可没有人聪明。
主要思路是用列表的 pop() 方法操作。打个比方:从兜里拿“硬币”出来,放到篮子1里面;再拿一个出来,放到篮子2里;再拿一个出来,放到篮子3里;再拿一个出来,放到篮子4里;再拿一个出来,再一次放到篮子1里,循环操作。直到”硬币“取完,操作结束。
以下附上自己写的分组代码(肯定有更好的写法,这个是很久以前写的了,但是也不想改了)
3.2.2然后是多进程的基本操作
以下是多进程的一个简单使用演示,虽然看上去好像没有效果,但是确实开启了多进程。😄
需要注意的是:在 Windows 平台上,运行多进程必须在 if __name__ == '__main__': 中。以下是个简单示例:
3.3完整代码
完整代码如下:
附傻瓜操作演示和下载
该视频演示如何使用 Python 源代码执行多进程自动导出地图。傻瓜式操作,谁都能学会,只要你电脑有安装ArcGIS。
结束语
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Arcgis用python控制布局界面
ArcGis
【转载】Arcgis自动生成地球化学系列图-批量克里金
Python multiprocessing 使用手记[1] – 进程模型
Python如何实现多进程?超简单!
Arcpy之多线程热力图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服