手记

为什么选择Python

本文有浓烈的个人偏好,每个语言都有各自的特点,选择适合自己的就好。

本人在接触Python之后,对其甚是喜欢。网上虽然有关于其在空间数据处理方面的中文文章,但总体不多。计划写一些关于Python在GIS和遥感等空间数据处理分析方面的应用。在后续的文章中将主要包括Python的入门、基本环境配置、常用工具包及其在遥感和GIS数据处理方面的基本应用。

前言

作为一个非计算机专业的人,接触过的编程语言其实也不算少了。入门的经典C语言就不必说了,本科还曾经选修过VBjava(上完课就还给老师了),用过C#C++做一些小软件,现在主要用Python偶尔加R辅助,再加上曾尝试写过一两行代码的IDLMatlab。正所谓贪多嚼不烂,哪一个都没能精通甚至谈的上熟练使用。出国留学之后,希望能做一些和机器学习相关的内容,网上搜罗一遍,看各种语言之争,最后决定从Python入手,至少到目前觉得Python值得我投入那么多时间去学习掌握它。

为什么选择Python

因为学会Python你就能飞了。。。


1. Python方便灵活

之前对于矢量或栅格数据的处理,非常严重的依赖于ArcGISENVI,尤其是数据读取,如ArcGIS.shpENVI.img,以及LiDAR.las等这类独有的格式,离开了这些专业软件基本就不知道该怎么对付这类数据了。所以在选择语言的时候,矢栅数据读取以及数据基本分析(空间分析,遥感影像的)是否灵活方便很重要,这也是为什么在学校时都是学的基于ArcGIS EngineIDL二次开发(好像GIS专业的特长就是二次开发似的,总感觉这就像是软件开发世界的二等公民)。Python在一定程度上能够解决这个问题,不再依赖于特定的软件平台,毕竟那些对工具依赖性强的工作,你的价值越依附于工具,你越是要警惕自己的思考能力被工具剥夺。

2. Python库丰富

可以说我在了解Python各种库上面花费了很多时间,有时间应该整理一个表格分类列出来有用的工具包。至少,在矢量数据方面,有GDALGeopandasleafetrasterio;fiona而栅格数据方面,通用的图像处理有opencvscikit-image,用于遥感图像的有spectral-python。更重要的是,如果想涉足机器学习,python更有从较通用的sklearn到深度学习的Tensorflowkeras等一大票工具包等着你。

3. Python资源多

在此是指有问题基本都能在stackoverflow等找到答案,也有很多相关的书籍。

4. 代码共享方便

这里特指Juypter Notebook.ipynb文件。文字说明,代码,图在一个文件里面,也可以在gist和nbviewer直接在线共享浏览,微软和anaconda也提供了在线运行环境,申请个账号就能直接运行代码。

4. Python"上手快"

之所以列在最后,我对这点是有些质疑的。因为没有一定的编程功底和对编程语言的理解,很难说的上上手快。装个flask包,敲几行代码运行起来一个网站,不能称之为上手了。我一开始对着些教程敲代码,的确感觉python能在相对短的时间内,用较少的代码完成一些复杂的工作,但都是在利用已有的工具包的情况下,当实际需要处理数据时,还是要非常频繁的去google或翻之前的资料,很多情况都是没有能够深入的去理解。

Python能做什么

对GIS和遥感数据来说,Python能做的事情,那简直是不要太多。

1. 数据读取和处理
2. 脚本

ArcGIS,ENVI等商业软件都可以用Python做脚本语言,QGIS,SNAP和EnMAP等开源工具也用到了它。

3. 机器学习

更时髦的词,可以用地理空间智能,时空大数据等等。

4. Web开发

GeoDjango

5. 桌面开发

Python结合tkinter和pyqt,也能胜任,但没啥优势可言。不过,貌似除了三维、VR/AR,普通的桌面开发也已经颓废,被Web和移动端占据了。

总结

一句话总结: Python的生态系统庞大,应用场景丰富。



作者:时空Drei
链接:https://www.jianshu.com/p/f01315e034a7


2人推荐
随时随地看视频
慕课网APP