300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 简明GISer Python学习指南

简明GISer Python学习指南

时间:2022-08-22 05:53:51

相关推荐

简明GISer Python学习指南

简明GISer Python学习指南

缘起GISer学PythonPython简介学什么学习资源视频图书基础入门进阶高级(专业)开发库webGIS开发遥感影像处理爬虫机器学习数据处理arcpy应用论文图例图形界面环境配置其他工具书单下载链接列表开发环境搭建

缘起

python是GISer工作和学习中的好工具,因为快速算法原型、人工智能研发、处理数据、处理流程自动化都在使用python。我对工具的了解的基本原则是大胆尝试,小心求证。接触到python,是因为arcgis 10.0把VBScript废掉用python来替代,后期在图书馆看到有不少学习python的同学,而且诸如GoAgent、 Google App Engine这些工具也用了Python,所以,这门语言有市场。

而且实际用了一下,比较符合我的认知习惯,比较容易学习,语法简明易于理解,同期我也接触过不少脚本语言,MATLAB、php、js、vbs,还有后来的R,都远不及python优雅和简明。开发效率比较高,可扩展性好,无论是作为别的平台的扩展还是自身扩展都比较简单。

随着AlphaGo掀起的人工智能热潮,tensorflow等使用python开发的人工智能框架把python推上风口,学校也教授《Python 空间数据处理(Geoprocessing With Python)》,随着对gdal的python接口的深入学习越发着迷于python各方面的优良性能,Python的运行效率自然比不上C++,但是各种开源工具包的获取和安装都很简单,基本上只要有pip就可以整合了,可能这就是之前Perl、Ruby这些语言比较火的原因吧,只是这些语言的语法太诡异,应用也有局限。

多年的深入学习,对python的了解也渐趋全面起来,系统记录自己走过的路、趟过的坑。

GISer学Python

Python简介

首先,python的本质是工具和arcgis、envi、ecognition等软件的本质是一致的。Python的基本内容很简单,但是高级内容庞杂,因此,不需要求全责备,面面俱到,把学习目标控制在自己需要的范围即可。

它和计算机沟通的方式是语言,而不是图形交互。不像ArcGIS、ENVI那样所见即所得,但是它更灵活,在熟悉语法的情况下,可以更好地定制操作,实现自动化,减少劳动的时间。利用Python和Arcpy可以实现ArcGIS操作的成千上万次的重复。

作为一门语言(计算机),计算机语言的词汇很少,也很多,少的是关键字,只有几十个,多的是变量名、函数名这些自定义的词汇。记住关键字和语法是最基本的。语法的最基本是让计算机执行操作,以及控制这些操作的以何种方式执行,仅此而已。最基本的操作就是数学运算、逻辑运算,控制方法无非顺序、条件、循环。其他内容无非是为了实现这些关键功能,结合语言的概念(词、句、段、篇),便于程序员编写代码。引入语言的概念,就是避免直接编写机器语言,机器语言看似毫无意义的0、1序列让开发者忘记写代码的初衷,以近似自然语言的方式完成代码的功能。另一方面,因为需要进行数学、逻辑的运算,所以又引入一些数学的概念(整型、浮点型、声明、变量、参数、函数、操作符、表达式等)。把这些概念和语言里面的具体实现对应起来,就可以在编写代码的时候找到合适的工具实现功能。

Python是一门解释型的计算机脚本语言,所有的高级编程语言最后还是要转换成CPU能理解的机器语言。解释型是从程序转变成机器语言的方式来说的,Python是通过解释器转换后变成了机器语言,开发者只要编写完程序,用解释器解释就可以执行程序。对比C、C++语言,简单易学,几乎不用思考就能够上手,输出hello,world,无需过多的储备知识。开发者不需要知道解释器是什么,怎么让解释器执行Python文件,但是C就要求开发者知道自己用了什么编译器,不同编译器的实现有什么区别,在不同操作系统下编译出来的可执行程序格式也不同,等等。Python开发者只要打上:python helloworld.py,程序就运行了。计算机脚本语言,一般可以认为这是一门弱类型的语言,想想C里面的long、short、int、float、double、char等等,以及每个变量声明时都必须声明它的类型,函数也是,但Python不需要,也不允许你声明变量类型,它会在解释的时候根据上下文自行判断。

便于适配现有平台,许多高级语言的发展时间比较短,自身的生态不健全,如果可以快速借用现有平台,开发者就可以快速地迁移到这个平台,减轻技术栈迁移的成本(时间、精力)。生产力得到较大提升,至少在某些方面拥有远超之前平台的效率。Python运行速度相对于C之类的编译型语言比较慢,但是这个短板不会成为瓶颈问题,且不说cython的效率接近于C,其高效的扩展接口,可以直接调用C、Fotran编写程序库执行高效代码。

学什么

GISer学Python除了掌握Python本身的核心语法,需要掌握一些常用的空间信息开发工具库,后文会列出。gis专业的方向也就那么些,我了解的就是空间数据处理(区划图、分布图)、空间信息系统建设(空间数据云、数据库以及各种系统)、空间分析算法(数据分析-行为模式、分布规律、地统计分析,地理理论推导-空间分析)、数字地图制图(地理要素表达、色彩、投影)、地理环境仿真模拟(建模-高精度曲面模型、DEM、DTM)。除了仿真模拟这一块,Python基本上都有比较可靠的工具。

学习的方法主要是自学和参加学校的课程,如果要参加课程可以尽量现在网络上找一些教学视频看一下,了解一下教学质量和教学方式。路线思路如下图:

通过网上查找和实践证明,学习一门语言高效的方法是看书和编码。这里核心概念主要是编程中的基础内容,比如计算机的组成结构,最起码要熟知存储单元、计算单元、显示设备、网络设备。了解一点操作系统的知识,至少知道操作系统的基本作用和功能,如内存管理、文件管理、设备管理(显示、网络)。了解计算机和操作系统的关系,操作系统和程序的关系。有了这些基础,然后掌握了语法,勤快练习,很快就可以掌握语言的使用方法。应用Python处理常见的问题,诸如批处理,文本文件的读写操作,批量修改文件名,用arcpy处理数据。进而处理更为复杂的问题,比如平台相关的程序调用,如何使用第三方库做数据爬虫,处理表格数据,画科学图例;再进一步,利用Python做一些专业性比较强的工作,如建一个地理信息共享的站点,设计一套处理数据的框架。如果有机会,试着实现一个自己在研究中设计的模型并开放给其他用户使用,比如斯坦福生物系木材环境研究院的Natural Capital Project利用Python实现了一套计算生态系统服务评估与权衡的模型InVEST、斯坦福的AI实验室基于Tensorflow开发了用于分类点云的神经网络PointNet、台湾国立清华大学的杨炫恭实现了基于语义分割图像的神经网络ICNet,或者实现自定义的数据读写工具,如针对h5的工具包h5py。

一下从自学的角度来说一下学习的资源。

学习资源

视频

LiveLessons.Python.Fundamentals 这个视频教程是Core Python programming作者录的,用英语讲的。

网上好像有个*甲鱼的对于无编程基础的学者非常友好。

其他的,好像马*兵的运维培训教程不错。

图书

基础入门

Core Python,本书第一和第二版都是基于Python 2讲解Python语法的,现在大多数的开发者都已经迁移到Python 3了,可以看看Learning Python(Mark lutz)。这本书的精华在于作者从解释器的角度来解释这门语言,讲解得比较全面,范例也很简单,估计略做修改,Python 3也可以运行,其他的入门书我没看过,也就听过一些,入门选经典就没错。这本书还有第三版,但是相对于第二版14章以后的扩充,第三版有Python 3的示例代码,也有实战案例。

进阶

Fluent Python,这本书我通读过,每一章节的代码都运行过一遍,这本书从程序员的角度分析了Python的程序要怎么写才能在实际使用的时候少出问题,详细分析了语法设施的区别,主题划分也很科学。第一部分是数据表达相关的,第二部分是流程控制相关的,第三部分是面向对象编程范式相关的,每一个主题都非常深入,很多内容在我个人的开发实践中都没有遇到过。最重要的是提供了Python编程的风格,让代码更加pythonic,而不是Python版的C或者Java。

高级(专业)

Python Geospatial Development:勾勒了Python在地理信息开发中应用的大致图景,囊括了所有常用的地理信息开发库的Python版本。一般地理信息工具库都是C++或者Java实现的。这本书的实战案例也很宏达,但作者举重若轻,将一个要素编辑的功能通过webGIS的形式实现了。

Django 实战:目前最新最前沿的web开发实战讲解,作者事无巨细,将其搭建个人博客的经验分享出来,我才得以窥探Python在web开发过程中的全部应用点,了解一个站点从开发到部署的整个过程。

python帮助文档:语法、标准库的百科全书。

Python for arcgis:arcpy最好的一本书,不管是熟悉程度还是写代码的习惯都是极好的。

以上这些书都有源码和网站支持的,读的时候最好自己配置一下环境

运行一下代码,如果可以直接改动代码做应用就更好了。

以下是我在开发中常用的各个领域的

开发库

webGIS开发

Django,web框架,类似spring,,PHP之类的。针对地理信息的实现叫GeoDjango。

mapnik,地图制图工具,配色,符合样式等等

SQLAlchemy,数据映射工具,直接把Python类映射成数据库表格了,linq,entity framework类似,专门针对地理数据的实现叫GeoSQLAlchemy

ckan,数据发布的网站框架,类似WordPress

flask,和Django差不多,但是更轻,可定制性更强,适合高手玩,一般用Django就可以了。

遥感影像处理

gdal,空间数据抽象库,一般会自带ogr,其实shapely,Fiona这些基本都是从它这衍生出来的。

opencv-python:计算机视觉库OpenCV的Python实现。

PIL:图片处理,注意:图片,不包括影像

爬虫

beautifulsoup:爬虫工具,没怎么用过

jieba:中文分词工具

机器学习

Scikit-learn:基于scipy,只用过回归模型

tensorflow:提供了大量人工神经网络的数据结构和基础设施,很多人工神经网络的概念在这个库都有对应的数据结构。

数据处理

h5py,h5文件的处理工具

gdal,空间数据的处理工具

psysgopg,postgresql数据库的Python客户端

numpy,数值计算工具

scipy,科学计算工具,不知道和numpy怎么区分,也没用过

xlrd,Excel文档读取工具

xlwt,Excel文档写出

pandas 表格数据处理工具,针对地理信息的实现叫GeoPandas

arcpy应用

arcpy:arcgis toolbox的Python接口,

论文图例

matplotlib:科学图表工具

图形界面

pyqt,Qt的Python接口

tk/tcl:tcl界面,Python 2的IDLE就是基于这个实现的。

环境配置

venv,virtualenvwrapper,virtualenvwrapper-win:虚拟Python环境工具,有点类似虚拟机的概念,不过这个工具只虚拟一个Python环境。虚拟环境和原先安装的,其他的虚拟环境互不干扰。

其他工具

Jupyterlab, 前身是ipython notebook,文学编程利器,可以在写书的同时加入代码,可以执行Python、C#等编程语言的代码并在页面上输出结果。

pyinstaller:把Python程序打包成安装包分发到其他电脑上安装,它会把所有py程序依赖的库都打包到一个文件里,主程序可以编译成exe,只需运行exe即可运行原来的py程序了。

书单下载链接列表

Core Python Programming

Chun, Wesley J

Publisher: Prentice Hall

Year: Edition: 2nd Edition

Language: English Pages (biblio\tech): 1100\1137

ISBN: 0132269937, 9780132269933 ID: 2864615

http://111.90.145.72/get.php?md5=e3d086738ae3de60e5a75a9add32cedb&key=NZU3Y72BKMD8CIWQ

流畅的Python

代码:/fluentpython

开发环境搭建

1、在下载Python解释器的安装包,目前最新的Python2是2.7.18,最新的Python3是3.9.2。

2、开发和执行Python程序。

a、使用文本编辑器编辑Python脚本,用vim、notepad++、ultraEdit、sublimetext、atom这些编辑器。然后用命令行执行py脚本。Python **.py

b、使用成熟的收费的ide,类似 idea、pycharm、visual studio等。

c、使用免费的IDE,Visual Studio Code, Spyder等。

如果习惯于vs开发工具的,推荐Visual Studio Code,稍微配置一下就行。安装magicPython,Python、Python for VSCode等插件即可。

有兴趣继续了解《GISer技术练级攻略》的请一键三连。

参考资料

程序员技术练级攻略

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。