摘要: 毫无疑问,Python 已成为地理空间分析师和研究人员在更广泛的 GIS 和空间分析工作中使用的主要计算机语言。对于那些有兴趣了解更多的人,可能会出现一些重要的问题,例如为什么会变成这样,最近的趋势是什么? 在 GIS 中采用 Python GIS、地理空间分...
毫无疑问,Python 已成为地理空间分析师和研究人员在更广泛的 GIS 和空间分析工作中使用的主要计算机语言。对于那些有兴趣了解更多的人,可能会出现一些重要的问题,例如为什么会变成这样,最近的趋势是什么?
在 GIS 中采用 Python
GIS、地理空间分析和 Python 在过去十多年中共同经历的巨大发展。最初,当 ArcGIS 和 QGIS 等主要 GIS 平台开始采用 Python 作为主要的脚本、工具制作和分析语言时,计算机语言和地理空间平台之间的这种结合就出现了。PostGIS 的出现及其对地理空间对象数据处理的关注,同时部署在许多 GIS 环境中,例如 QGIS、 ArcGIS 和 OpenStreetMap,都对此有所帮助。GRASS 等使用较少的平台也是如此 。
也许对于用户来说,采用 Python 的主要原因是 Python 易于学习、擅长数据操作,并且具有许多适用于或可以轻松适应地理空间分析的有用库。Pandas 使数据操作、分析和数据处理比其他一些语言容易得多,而 GeoPandas 特别专注于使用常见空间对象以地理空间格式提供 Pandas 的优势,并添加交互式绘图和性能方面的功能。事实上,有许多 Python 库可用并且列表还在增加,这有助于用户有很多选择来利用现有代码并在工具中构建更强大的功能。
QGIS 等平台允许用户输入自己的用 Python 构建的扩展,进一步鼓励 GIS 专家开发和使用 Python。这种增长突显出,随着 GIS 用户和地理空间分析师技能的发展,Python 可能是最值得关注的语言。相对于其他高级语言,Python 更易于使用,编码风格灵活,可以应用于不同的范例,包括命令式、函数式、过程式和面向对象的方法。
流行的平台还通过添加模型构建器帮助简化函数编码,模型构建器是有助于基本编程和组织的扩展,可链接用户创建的数据和功能。
在 QGIS 中使用 GeoPandas 进行轨迹数据处理。
当然,Python 用户发现存在一些问题和障碍。这包括常见的兼容性问题。当安装的库可能无法很好地协同工作或不同版本可能导致代码出现异常时,写得很好的说明和安装文件可以帮助解决这个问题,但并不是所有的图书馆都有这个。有一些工具可以使库安装更容易,例如 Conda。Conda 的图形界面是 Anaconda。用户还可以访问 PyCharm 和 Spyder等 Python 开发环境。
Python 还扩展到通过创建允许直接或类似使用其他语言的库来合并其他语言的优势。对于性能,C 语言长期以来一直是最好用的语言之一,Cython 为 Python 提供类似 C/C++ 的性能增强,Cython 通常用于帮助解决数据分析的速度和扩展等问题。
虽然 Scala 和 Java 等其他语言可能值得学习,例如在地理空间数据的大规模数据操作方面,但由于并行计算库和更多工具利用图形处理单元的优势,我们越来越多地看到 Python 部署到大数据问题中( GPU)架构。
在 GIS 中使用 Jupyter Notebooks
对基于代码研究的一种批评是难以复制结果和记录发现。一组工具可以应用于 Python,但也可以应用于许多其他计算机语言,这是 Jupyter 工具系列,包括 Jupyter Notebooks。
Jupyter 工具有助于执行、记录和显示代码的工作方式。Jupyter Notebooks 可能是该系列工具中最著名的一款。该工具允许编写单元格或代码块,这些单元格或代码块可以直接将数据和代码集成到小段中,这些小段也会在笔记本中显示输出。
这允许用户查看给定代码的工作方式,充当一种文档或对文档的帮助,并有助于了解给定代码的作用。Jupyter Notebooks 已被比较或比作 Google Docs 的代码,其中可以完成协作工作和共享给定部分的工作和显示方式。
另一个很大的好处是 Notebooks 允许在不同的计算机语言之间进行切换。例如,许多地理空间项目使用 Python 来实现地理空间功能,使用另一种流行的分析语言 R 来进行可视化显示或统计分析。拥有 Jupyter Notebook 可以让显示所使用的每种语言的代码的不同部分,同时还允许显示链接以允许在两者之间开发可以复制的工作流。这可能基于每个 Notebooks 使用的不同内核。
出于地理空间目的,Jupyter Notebooks 可以更轻松地显示视觉输出并在团队之间复制它,同时通过集成数据链接(包括大数据)更轻松地访问数据。以前,用户必须下载可能很大的数据文件,这使得复制变得困难或麻烦。对于科学家来说,这一点非常重要,因为这意味着研究可以更容易地从现有工作中验证和构建。我们可以将 Jupyter Notebook 视为在一个环境中提供文档、调试和执行的东西,这也使其对学习编码很有用。
随着 Python 的兴起,例如在地理空间分析方面,可能不擅长编码但想学习 Python 的人可以使用 Jupyter Notebooks 以简单易用的方式学习部分代码。JupyterHub 是一个扩展,可帮助使用 Jupyter 笔记本协作或服务多个用户。它有助于安装所需的库,并允许合作者查看对方正在开发的内容,从而允许用户进行编辑和输入。
Jupyter 系列中的另一个工具是 JupyterLab,它允许基于 Web 的协作界面,还允许不同的数据格式。在共享和访问 Jupyter 笔记本时,可以链接到用于开发的其他 Jupyter 工具。Voilà 工具是 Jupyter 工具系列的一部分,可用于帮助使用 JupyterLab 开发 Web 应用程序。
最终,学习和开发用于空间分析的 Python 工具的门槛变得更加容易,这意味着我们可能会看到 Python 在一段时间内继续作为地理空间应用程序的主导语言。
拆分地图功能是 ipyleaflet 包的一部分,ipyleaflet 包是 Jupyter 的交互式地图可视化系统。
Python 已成为地理空间分析的主导语言,因其被主要的 GIS 平台采用,但越来越多的用户也看到了它在数据分析方面的潜力,并且其相对易于理解的语法有助于增加用户数量。现在有许多库可以帮助用户通过组合不同的库来创建复杂的应用程序,有时只需要最少的代码。
QGIS 等流行工具通过允许更广泛的社区贡献用 Python 编写的插件来鼓励使用 Python。Jupyter Notebooks 等工具还可以让学习 Python、完成给定项目和复制结果变得更加容易。许多工具从一开始就作为开源软件开发,并且易于访问,进一步鼓励了用户。对于地理空间分析人员而言,Python 已成为开发应用程序和进行强大分析不可或缺的工具。