地理空间 Python


发布日期 : 2021-12-15 03:24:03 UTC

访问量: 5 次浏览

为什么GIS人应该学习Python?

Python 是否是GIS 学习的最佳语言并不总是很清楚。 直到大约 12 年前 ArcPy 和 PyQGIS 出现。 这两个 Python 实现告诉我们,Python 是多才多艺且易于学习的, 可以用其来操作数据。在 GIS 世界中,谁不想使用灵活的 工具将文件或数据库中的数据整理成可用的东西?Python 正是这样做的。

它也很容易连接PostgreSQL和PostGIS,可能性是无止境的, 从此与脚本实现自动化的工作流程。例如,对于模型构建器, 可以将模型导出为 Python 脚本,或者在喜欢的任何工作 流程中从头开始编写。在开源和专有系统中使用 Python 和插件为桌面 GIS 和服务器端 GIS 应用程序构建扩展也有很大的机会。 Python 现在成为 GIS 的通用语言的原因有很多, 它是将事物结合在一起的粘合剂。

一旦了解 Python 并意识到它对地理空间数据操作的有用性, 就不再只是按下提供给您的按钮,可以控制并自由创建自己的 工具和流程。它有一个很难找到的自我文档元素, 在写代码的时候不能忘记记录某个参数,如果需要返回, 可以在以后查找,这在继承其他人的工作流程时很有用。

Python 在地理空间领域被广泛采用,因此用 Python 编写的 地理空间过程是可共享和可重复的。虽然可能有不同的环境变量 需要调整,数据也需要共享,但可以共享您的工作并让其他人 使用您的代码并在工作基础上进行构建。

Python 和 GIS

如果已了解某种编程语言,则有可能进入地理空间并在进行过程 中应用 Python 细节,因为它不是一门难学的语言。 如果没有编程背景,最好先了解基础知识,例如循环、函数、类。

在这两种情况下,大多数用户,尤其是 GIS 人员, 如果他们有地理空间特定的动机和灵感,会做得更好, 想在地图上看到一些东西,非常快。他们也希望进入这个新的、 未知的第一步与其在地理空间中的工作有关。

编写 Python 代码的一个很好的介绍是在图形模型构建中创建模型, 将其导出为 Python 脚本。可以使用脚本中的不同参数输入数据, 并查看其如何影响结果。

这也让您了解 Python 代码的结构以及不同的组件如何链接在一起。

当人们看到他们并没有被图形界面中的标准工具所束缚时, 就会意识到编程的灵活性以及可以从模型构建器中获得多少收益。 这是真正的动机。

模型构建器脚本只是第一步。一旦开始在程序之外执行某些操作, 例如操作参数,就会遇到使用模型构建器无法快速解决的问题。 了解 Python 以及如何从头开始编程是一个很好的动力。

PANDAS、GEOPANDAS 和其他 GIS 库

GeoPandas是一个相对较新的开源库,它是另一个名为Pandas 的库 的空间扩展,自 2008 年以来一直存在,旨在简化数据分析。

Pandas 使用称为数据框的概念,如果按时间戳索引, 它们是数据表或数据时间序列。Pandas 就像一个数据库, 通过放置索引来过滤数据。

Pandas带有方便的功能来读取和写入缺少数字的文件。 如果有空值(例如,时间序列中没有记录任何测量值), Pandas 会提供计算这些行的值或以与数据库相同的方式 正确解释空值的选项。

这可能是最后观察到的值,也可能是先前观察到的值 与数据集中的后续值之间的插值。在处理真实世界的数据时, 谁不想要这些功能?

Pandas 库还具有旋转和重塑表格和组、进行合并和绘图的功能, 可以在 Python 中做很多通常需要数据库的事情, 可以编写独立的脚本,而不再依赖于数据库或必须以千篇一律的方式进行数据分析。

2013 年,GeoPandas 进入了场景,通过构建现有的 Pandas 库, 可以在数据框中存储几何图形(很像 Postgres 和 PostGIS)。 图书馆,例如:

  • Fiona用于读写不同的空间文件格式;
  • Matplotlib用于地理空间绘图功能;
  • Folium 为创建传单地图提供Python 支持;
  • HV Plot用于交互式绘图,具有出色的功能和性能。

GeoPandas 是地理空间程序员的绝佳工具, 编写可在典型桌面 GIS 环境之外使用的独立代码很容易。 对于熟悉 Pandas 的非 GIS 程序员来说,这是一个不错的选择, 可以更轻松地将地理空间功能构建到现有的 Python 代码库中, 而无需安装 QGIS 或 ArcGIS 等桌面环境。

Python 的未来

Python 已被证明是来自不同背景的数据科学家的可靠伴侣。 像 GeoPandas 这样的图书馆填补了非空间数据科学家 和具有地理空间专业知识的人之间的空白。 他们可以合作整合空间分析能力和大多数数据科学家使用的机器学习、 深度学习和人工智能。

对于研究而言,提高可重复性具有相当大的潜力, 尤其是使用Jupyter Notebooks等技术时, 可以逐步记录和分析,并在该代码的上下文中显示可能 为报告或科学论文生成的中间结果和图表。

过去,编写一个脚本,运行,然后将图像转储到一个目录中。 然后查看两边以在输出目录中找到一个图形, 并确定它是否有意义并反映正在发生的事情。

在 Jupyter Notebooks 中,执行 Notebook 的一个部分, 称为单元格,它会立即在该单元格下绘制输出, 可以是文本或交互式图形,例如传单地图或绘图。 可看到这将如何使调试问题和理解数据分析流程变得更容易。 如果您曾经有幸继承过其他人的数据处理工作流程, 那么会喜欢这种逐步调试功能和管理代码的方法。


本文链接 :地理空间 Python