最近迷上了用python处理卫星数据,gdal包是不得不提的一个。本篇文章写于程序运行时的等待过程中,时间紧迫不免有些疏漏。另,我本人也只是一只菜鸡,写此教程的目的,也在于总结这两星期的经验教训,祭奠一下走过的弯路浪费的时间。希望各位大佬们不要笑话,也请多多提建议,帮助小张同学提高业务能力。废话不再多说,进入正题!!!
"gdal"是一个开源的、功能强大的栅格文件读写库。可是它的"安装"有时却让小白们感到疼痛;好不容易跟着教程安装成了,在运行过程中,当需要处理的数据太大时,却被频频提示"内存错误" – 如,memoryerror:unable to allocate 43.9 mib for an array with shape (4800, 4800) and data typeuint16。
出现"memoryerror"的原因有很多。其中一种是因为“python版本过低/在win64操作系统上安装了win32版本的python”;当安装的是32位的python时,即使用户将”虚拟内存”的设置的再大,也无法从根本上解决” memoryerror”(虚拟内存的设置请参照https://zhuanlan.zhihu.com/p/37332255)。原因在小节一中详述。本篇教程将从最基本的windows系统下的python安装开始讲起,希望可以帮助遇此问题的虫友。
教程目录如下:
一.Python的下载、安装和配置
二.当电脑中装有多个python版本时,如何使他们兼容
三.用”pip install”法在python下安装gdal库
四.配置windows虚拟内存
##############################################################################
一.Python的下载、安装和配置
电脑上装有arcgis等软件的小白会发现,python2.7早已顺带被装载了自己的电脑里。需注意的是 –此python版本的环境是32位的!即使电脑内存非常大,处理非常大的卫星数据时,你的32位python也非常有可能遇到"memoryerror"问题。这是因为"32位操作系统可以寻址2的32次方个字节的内存范围,64位操作系统则可寻址2的64次方个字节的内存范围。因此,32位的操作系统理论上只能使用约4GB的内存,要是想让程序使用超过4GB的内存,就要选择64位的操作系统。"
Python可以在https://www.python.org/上免费下载,我选择了64位的Python 3.8.6。安装包选择的是Windows x86-64 executable installer (图一), 因为它更方便用户自定义”程序储存路径”以及自动添加”path环境变量”。 自定义”程序储存路径” 就不赘述了,个人认为路径越简单越好(我就直接存储为"C:\python3.8" , 以下的讲解也以此为示范,大家可以根据自己的便利选择储存路径)。
安装好后,检查系统环境变量的path (图二)(检查方式请参照: https://jingyan.baidu.com/article/8ebacdf02d3c2949f65cd5d0.html)。若打开系统变量的path,发现已经有"C:\python3.8\Scripts\" 和"C:\python3.8\" ,则说明path已经被设置好;若没有的话,可自己手动添加。
二.当电脑中装有多个python版本时,如何使他们兼容
有一个需要注意的问题- 当电脑里安装了多个版本的Python时,并尝试装一些包如gdal或者更新pip时,会报错。那么如何配置才能使他们兼容,不影响用户的使用呢?原则就是将不同版本下的"python.exe"和"pip.exe"分别命名。如,将Python3.8.6的命名为”python38.exe”和”pip38.exe”; 将Python2.7.5的命名为”python27.exe”和”pip27.exe”。具体请参照https://blog.csdn.net/qq_40260867/article/details/84062299。在此不做赘述。
我的电脑里同时装有Python3.8.6和Python2.7.5。打开CMD检查一下”兼容”是否设置成功 (打开cmd的方式https://jingyan.baidu.com/article/e4511cf329b0e42b845eaf2e.html)。分别输入python27和python38,若像如图三显示的那样,就是设置成功了。
三.用”pip install”法在python下安装gdal库
先在https://www.lfd.uci.edu/~gohlke/pythonlibs/里下载合适版本的gdal whl文件。版本的选择主要取决于”windows操作系统的位数”和”python的版本”。我是64位操作系统,准备在python3.8.6下安装gdal库,所以选择下载”GDAL‑3.1.3‑cp38‑cp38‑win_amd64.whl”(图四)。cp后的38表示支持python3.3.6,amd后的64表示支持64位操作系统。记住下载gdal whl文件的储存位置。我的存在"C:\Users\zhang\Downloads"下。
gdal通过cmd用"pip instal"语法安装。在第二小节里,我将python3.8.6的pip命名为了pip38,所以在这里用pip38而不是pip。pip38 install后接续下载的gdal whl文件的储存地址。如,pip38 install C:\Users\zhang\Downloads\GDAL-3.1.3-cp38-cp38-win_amd64.whl (图五)
五. 配置windows虚拟内存
至此,gdal已经成功在python3.8.6中成功安装了。为了进一步确保程序运行过程中,不会再出现内存错误,我们可以进一步配置windows虚拟内存。虚拟内存的设置请参照https://zhuanlan.zhihu.com/p/37332255 。内存可以根据自己的需要自定义设置大小。由图六可以看到,目前C盘下,我的可用空间为:37686MB。我将初始大小以及最大值均设置为: 30000MB。当然这是一个比较夸张的设定。为了不要再由内存错误,我也是拼了。
设置好后重启电脑。然后在python3.8中运行代码。无错!快速!流畅!开心的蹦蹦跳跳!!!!