Python与地理空间分析

科技工作者之家 2020-07-04

来源:慧天地

毫无疑问,Python已经成为地理空间分析员和研究人员在GIS和更广泛的空间分析工作中主要使用的计算机语言。对于那些有兴趣了解更多信息的人来说,可能会思考一些问题,比如,为什么会出现这种情况?以及最近的趋势是什么?两个播客有助于解决这个问题,其中一个是关于地理空间和Python的使用(播客收听地址为:https://mapscaping.com/blogs/the-mapscaping-podcast/geospatial-python),一个关于Jupyter Notebooks(播客收听地址为:https://mapscaping.com/blogs/the-mapscaping-podcast/introduction-to-jupyter-notebooks)。更广泛的趋势和其他作品也有助于说明这一点。

Anita Graser在她的播客中重点介绍了GIS、地理空间分析和python在过去十多年中共同经历的巨大发展。最初,计算机语言和地理空间平台的结合起始于一些主要的GIS平台,例如ArcGIS和QGIS,它们将Python用作主要的脚本编制、工具制作和分析语言[1]。PostGIS的出现及其对地理空间对象相关数据处理的关注,让其被同时部署在许多GIS环境中,如QGIS、ArcGIS和OpenStreetMap,且都有所帮助。使用较少的平台如GRASS也是如此。对于用户来说,采用Python的主要原因可能是Python易于学习,擅长数据操作,并且有许多有用的库,这些库适合或可以很容易地应用于地理空间分析。Graser强调了Pandas和她自己在GeoPandas上的工作[2]。

Pandas在数据操作、分析和数据处理方面比其他一些语言简单得多,而GeoPandas则特别专注于地理空间格式,它通过利用Pandas的优势功能来处理常见空间对象,并增加交互式绘图和性能方面的功能。事实上,Python中有许多功能强大的工具可以帮助用户利用现有的代码构建更多的功能。像QGIS这样的平台允许用户输入自己用Python构建的扩展功能,进一步鼓励GIS专家开发和使用Python。这种增长表明,随着GIS用户和地理空间分析人员不断提高他们的技能,Python可能是最值得关注的语言。与其他高级语言相比,Python更易于使用,编程风格灵活,可以在不同的范例中应用,其中包括命令式、函数式、过程式和面向对象的方法[3]。流行的平台还通过添加模型构建器(model builder)来帮助人们编写函数,模型构建器可以帮助用户进行基本编程和组织,将用户创建的数据和功能链接起来。

 

wt_a22322000704025357_527c23.jpg

图1:在QGIS中使用GeoPandas进行轨迹数据处理。

(图片来源:Anita Graser)

当然,Python用户也发现了一些问题和障碍。这其中包括常见的兼容性问题,即安装的库可能无法很好地进行协同工作,或者使用不同版本时可能会导致代码中出现异常。详细的说明文件和安装文件可以帮助人们解决这个问题,但不是所有库都存在这个问题。有一些工具可以简化库的安装,比如Conda。Conda的图形界面是Anaconda。用户还可以访问Python开发环境,如PyCharm和Spyder等。Python还可以通过创建直接或可比较地调用其他语言的库来吸收其他语言的优势。在性能方面,C语言一直是最好用的语言之一,Cython为Python提供了类似C/ C++的性能增强,Cython通常用于帮助解决数据分析的速度和扩展等问题。虽然Scala和Java等其他语言也值得学习(例如在地理空间数据的大规模数据操作方面),然而得益于并行计算库和更多的工具利用图形处理器(GPU)架构这些优势,人们能够看到Python被越来越多地应用到大数据问题上。 

关于基于代码的研究,其中的一种批评声音是认为其难以复制结果和记录。Jupyter工具系列(包括Jupyter Notebooks)是一组可以应用于Python但也可以应用于许多其他计算机语言的工具,Jupyter Notebooks则是Julia Wagemann在她的播客集中重点介绍的一个工具。Jupyter工具有助于执行、记录和显示代码的工作方式。Jupyter Notebooks可能是这一系列工具中最著名的。此工具允许编写单元或代码块,直接将数据和代码集成到小片段中,并在Notebooks中显示输出。这允许用户查看给定的代码是如何工作的,充当文档的一种类型或辅助性文档,并有助于帮助人们了解给定代码正在做什么。另一个好处是Notebooks可以让用户在不同的计算机语言之间切换。例如,许多地理空间项目将Python应用于地理空间功能,但随后又将另一种流行的分析语言R用于可视化显示或统计分析。拥有一个Jupyter Notebooks可以显示每种语言的代码的不同部分,同时也允许显示链接,以便在两种语言之间开发可以复制的工作流。根据每个Notebooks使用的不同内核,这是可能实现的。从地理空间相关工作的角度出发,Jupyter Notebooks使其更易于显示视觉输出并在团队之间进行复制,同时通过集成的数据链接令数据的访问变得更加容易。以前,用户必须下载很大的数据文件,这使复制变得困难且麻烦。对于科学家来说,这是非常重要的,因为这意味着相关的研究工作可以更容易地从现有的工作中进行验证和构建。人们可以把Jupyter Notebooks看作是在一个环境中提供文档、调试和执行的工具,这对于用户学习编写代码也非常有用。例如,当人们看到Python在地理空间分析方面的崛起时,那些可能不擅长编码但想学习Python的人可以使用Jupyter Notebooks以简单易用的方式学习部分代码。JupyterHub可以帮助多个使用Jupyter Notebooks的用户进行协作。它有助于安装所需的库,并允许协作者查看对方正在开发什么,允许用户编辑和输入。Jupyter家族中的另一个工具是JupyterLab,它允许基于Web的界面进行协作,还支持不同的数据格式。在共享和访问Jupyter Notebooks时,可以链接到其他用于开发的Jupyter工具。Voilà工具是Jupyter工具系列的一部分,可以用来帮助JupyterLab开发web应用程序[4]。总的来说,现在学习用于空间分析的Python语言变得更加容易,这意味着Python将在未来一段时间内继续作为地理空间应用程序的主导语言。


wt_a12302200704025357_55780e.jpg

图2:分割地图功能是ipyleaflet软件包的一部分,该软件包是基于一个Jupyter的交互式地图可视化系统。

(图片来源:JupyterBlog)

Python已经成为地理空间分析的主导语言,因为它正在被主要的GIS平台所采用。但是越来越多的用户也看到了它在数据分析方面的潜力,而且它相对容易理解的语法能够有助于增加用户数量。现在有许多库,人们可以通过组合不同的库来帮助用户创建复杂的应用程序,有时只需少量的编码。QGIS等流行工具支持更广泛的社区贡献用Python编写的插件,从而促进了人们对于Python的使用。像Jupyter Notebooks这样的工具也使得学习Python、完成给定项目和复制结果变得更加容易。许多工具从一开始就被开发为开源的,并且易于访问,这进一步鼓励了用户。对于地理空间分析人员来说,Python已经成为开发应用程序和强大分析中不可或缺的工具。


来源:geomaticser 慧天地

原文链接:https://mp.weixin.qq.com/s?__biz=MzIwNDE1NjM2NA==&mid=2652091450&idx=3&sn=26c786a48fd150d79828f93421136913&chksm=8d236899ba54e18f4968ca80201a178a33bfa0ca278847447141ff288f1d9663631b0f3152e5#rd

版权声明:除非特别注明,本站所载内容来源于互联网、微信公众号等公开渠道,不代表本站观点,仅供参考、交流、公益传播之目的。转载的稿件版权归原作者或机构所有,如有侵权,请联系删除。

电话:(010)86409582

邮箱:kejie@scimall.org.cn

地理 python 空间分析 python函数 jupyter

推荐资讯