基于arcpy的可视化gis小工具开发

前言

因前段时间做了一个土地调查类的项目,需要大量数据入库,涉及不同类型的点线面图层,便写了一些入库小工具,后期整合资源时,发现在控制台运行总归是不方便的,于是萌生了写图形化界面的想法。大学毕业后几乎没用过arcGIS二次开发了,所以过程中磕磕碰碰,特做个纪念。

编译环境

arcGIS:v10.5
python:2.7.18(win32)此处python版本与arcGIS内置版本一致
pyqt版本:4.11.4,我是在csdn上下载的PyQt4-4.11.4-cp27-cp27m-win32,国外官网下载的无gui界面;
pywin32:218
编译器:pycharm 2020.1,此前用过2022,把我conda搞坏了,所以不推荐。
其余缺少什么直接pip install 即可,切记需支持32位的python2.7。

搭建虚拟环境

为更加好地在工程下安装需要的PyQt4等包,特意创建了一个conda的虚拟环境,操作过程如下:
1、进入控制台,将当前conda设置为32位,命令:set CONDA_FORCE_32BIT=1,该命令只在当前控制台有效,关闭即恢复默认64位。
2、使用命令conda info确认当前环境
conda info
3、创建虚拟环境,命令:conda create -n [your_name] python=2.7
4、进入虚拟环境,命令:conda activate [your_name],后输入conda list,查看当前环境是否正确

配置PyCharm环境

打开pycharm,创建当前项目并进入,设置当前项目的编译器(解释器)为刚刚创建的虚拟环境下的python。
pycharm中设置解释器
设置文本编码方式为UTF-8,这个主要取决于你的代码编码方式。

设置pycharm编码方式
关闭重启PyCharm,打开终端即可看到命令行前缀有了你的虚拟环境。
在虚拟环境中使用pip安装PyQt4,因为我的PyQt4是网络下载的whl文件,所以直接执行pip install PyQt4-4.11.4-cp27-cp27m-win32.whl。然后再次进入设置界面,配置QT为外部工具:
【QtDesigner】
Program:[你的conda虚拟环境]\Lib\site-packages\PyQt4\designer.exe
Working directory: P r o j e c t F i l e D i r ProjectFileDir ProjectFileDir
【PyUIC】
Program:[你的conda虚拟环境]\Lib\site-packages\PyQt4\pyuic4.bat
Arguments: F i l e N a m e FileName FileName -o F i l e N a m e W i t h o u t E x t e n s i o n FileNameWithoutExtension FileNameWithoutExtension.py
Working directory: F i l e D i r FileDir FileDir
【PyRcc】
Program:[你的conda虚拟环境]\Lib\site-packages\PyQt4\pyrcc4.exe
Arguments: F i l e N a m e FileName FileName -o F i l e N a m e W i t h o u t E x t e n s i o n FileNameWithoutExtension FileNameWithoutExtension_rc.py
Working directory: F i l e D i r FileDir FileDir

此时还不能直接运行pyqt的ui转.py文件,需要在[你的conda虚拟环境]\Lib\site-packages\PyQt4\pyuic4.bat中配置python的执行目录,否则.bat文件找不到。

编码

此处可以尽情地编码,配置图形化界面,写交互接口…
需要注意的是,引入arcpy的方式建议用sys.append,当需要在其他电脑运行该程序时,记得修改以下路径后再打包,代码如下:

import sys
arcpy_path = [r"[arcGIS安装目录]\Python27\ArcGIS10.5\Lib\site-packages",r'[arcGIS安装目录]\Desktop10.5\arcpy',
              r[arcGIS安装目录]\Desktop10.5\bin',r[arcGIS安装目录]\Python27\ArcGIS10.5\Lib',
              r'[arcGIS安装目录]Desktop10.5\ArcToolbox\Scripts']
sys.path.extend(arcpy_path)
import arcpy

编译成功后即转下一步,打包!

打包

- 使用pyInstaller打包

  • 安装pywin32
    双击下载好的pywin32-218.win32-py2.7.exe,进入安装界面,如果安装包找不到python所在路径,可以进入注册表设置\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\2.7\PythonPath的值为虚拟环境下的python2.7,暂时没有想到别的办法。
  • 解压pyInstaller压缩包
    解压到你的工程同级目录下,我的版本是2.1。
  • 执行打包命令
    将工程打包成exe,并设置图标、exe文件名,将arcpy排除在外,test.py就是我工程的主函数。
    python .\PyInstaller-2.1\pyinstaller.py -D -w -i tools.ico --name=【name】 --hidden-import=[‘arcpy’] test.py
    执行成功后可在工程目录下创建.spec文件和dist、build两个文件夹,其中dist就是我们打包后的文件夹。
    - 配置可执行文件的依赖包
    找到你arcGIS安装python的路径下的Desktop10.5.pth文件,我的是在[你的arcGIS安装目录]\Python27\ArcGIS10.5\Lib\site-packages\Desktop10.5.pth。在打包后的dist文件夹下创建一个site-packages文件夹,把Desktop10.5.pth复制进去。
    这样才可执行文件就可以运行了。此处参考的文章,十分感谢,关键时刻救我小命!

- 使用py2exe打包

  • 在工程目录下创建一个setup.py文件,用于打包,同样地将arcpy依赖库排除,设置icon等,代码如下:
# coding=utf-8
# for py2exe
from distutils.core import setup
import py2exe
options = {"py2exe": {"excludes": ["arcpy"],"includes" : ["sip"]}}
setup(console=[{"script": "test.py","icon_resources": [(1, "icon.ico")]}],
      options=options,
      version="2024.10.22",
      )

涉及安装包

所有不方便下载的包我都打包发到百度云了(含PyQt4-4.11.4-cp27-cp27m-win32,PyInstaller-2.1,py2exe-0.6.9.win32-py2.7,pywin32-218.win32-py2.7),总大小53 M,有效期7天,有需要的自取:

  • 通过百度网盘分享的文件:python2.7 相关软件
    链接:https://pan.baidu.com/s/1IGF0ugYSJQTdgcVasKoKCg?pwd=rxjk
    提取码:rxjk*

参考文章

本来直接用arcGIS pro就可以很快完成的工作,因为一开始的犯懒,到后面越走越难,甚至把我conda环境破坏导致重装,不过好歹是走通了,特此感谢以下文章:

https://www.cnblogs.com/firefly_liu/archive/2009/07/03/1516015.html
https://blog.youkuaiyun.com/u012685544/article/details/121226840
https://blog.youkuaiyun.com/superxgl/article/details/78951007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值