基本地理空间 Python 库


发布日期 : 2023-05-09 00:58:47 UTC

访问量: 294 次浏览

基本地理空间 Python 库

Python 是地理空间分析和一般数据科学中最流行的编程语言之一。 它的流行来自于 Python 的高级、人类可读的语法和极大的灵活性。 接下来让我们在本文继续定义一些在使用 Python 时需要了解的重要术语。

什么是 Python 库/包?

Python 库是一组扩展基本 Python 功能的模块。 当下载 Python 时, 它附带了一组称为 Python 标准库的函数和类。 在标准库中包含所有 Python 功能是不可行的, 因此 Python 开发人员可以选择如何通过安装额外的库来扩展标准库。

Python 库/包

什么是 Python 虚拟环境?

并非所有 Python 库都相互兼容, 有时会希望稳定安装一个集合包, 单独安装以使用最新版本进行开发。 Python 虚拟环境基本上是独立安装, 允许在同一台计算机上安装多个 Python 库集合, 像 Anaconda 这样的软件包管理器通常用于创建和管理虚拟环境。

Python 环境随附有用的功能, 并且进一步的功能存储在扩展 Python 功能的库中。 有许多可用的开源库可以使用 pip 或 Anaconda 安装在 Python 环境中。

ESRI 环境的基本地理空间 Python 库

ArcPy

如果在 Esri 生态系统中工作, 那么一直在使用 ArcPy。 这是 Esri 的 Python 地理处理库, 允许用户在 ArcGIS 中自动化和扩展栅格、矢量和点云工作流。 请务必注意,该库需要有效的 Esri 许可。

用于 Python 的 ArcGIS API

ArcPy 的一个相邻库,ArcGIS API for Python, 简称为 “ArcGIS”, 包括多个类和函数以与 ArcGIS Online 和 ArcGIS Enterprise 交互。 ArcGIS API for Python 可通过 Esri Developer 帐户免费获得。

用于栅格数据的基本地理空间 Python 库

GDAL

地理空间数据抽象库( GDAL) 是栅格处理的强者。 它为栅格(GDAL 部分)和矢量 (OGR) 格式提供了极其灵活的读写功能, 使其成为任何提取、转换、加载 (ETL) 工作流程中必不可少的工具。 绝大多数 GIS 软件(以及整个地理空间行业)都依赖于 GDAL, GDAL 是用 C++ 编写的, 在命令行上运行, 但包括一组由 GDAL 社区成员维护的 Python 绑定。

Rasterio

Rasterio 是 GDAL 的替代品, 用于开源栅格处理, 由 MapBox 开发。 Rasterio 在底层利用 GDAL 并提供许多相同的功能, 但使用了更 Pythonic 的语言风格, 使一些用户更熟悉它。 应该注意的是,Rasterio 和 GDAL 的 Python 绑定是不兼容的, 因此必须在单个 Python 环境中在两者之间进行选择。

RSGISLib

遥感和地理信息系统库(RSGISLib) 为多种遥感工作流提供 Python 算法, 包括图像分割、区域统计、变化检测和时间序列分析。

Rasterstats

用于汇总多边形矢量要素内的栅格数据的函数库。 Rasterstats 还用于从点要素查询像元值。

Rasterframes

可扩展的地理空间数据分析的需求量很大。 Rasterframes 提供了利用 Apache Spark 中的 DataFrames 在分布式、水平可扩展的环境中处理栅格数据的能力。

矢量数据的基本地理空间 Python 库

OGR

OGR 是 GDAL 库的向量处理臂。 它提供了读取、写入和处理多种不同格式的矢量数据的能力。 与 GDAL 一样, OGR 是一个带有 Python 绑定的 C++ 库。

Shapely

Shapely 是一个基于 C/C++ 库、GEOS ( PostGIS 背后的软件引擎)和 Java 库 JTS 的计算几何库。 它支持在关系数据库管理系统和 SQL 之外进行 PostGIS 样式的几何处理。 Shapely 确实需要结合其他库来读写空间文件。

Fiona

还记得 Shapely 需要其他库来读取和写入空间文件吗? 事实上 Fiona 填补了这个空白。 Fiona 是一个围绕 OGR 的轻量级包装函数库, 用于读取和写入向量数据。 它具有比 OGR 更 Python 的语法, 利用 Python 访问内存中数据的方式, 而不是 OGR 绑定中使用的 C 指针。

PyProj

围绕 PROJ (制图投影和坐标转换库)C 库的包装函数库。 PyProj 提供了将坐标从一个空间参考转换为另一个空间参考的功能。

GeoPandas

GeoPandas 扩展了非常有用的 Pandas 库, 支持在 Pandas DataFrames 中处理几何数据, 否则需要空间关系数据库。 GeoPandas 依赖 Fiona 的读写能力, Shapely 的计算几何函数。

GeoMesa

另一个可扩展的地理空间库, GeoMesa 提供了通过分布式计算进行大规模矢量数据处理的能力。 近乎实时的数据流也是点、线和多边形矢量特征的一个选项。

用于点云的基本地理空间 Python 库

PDAL

点数据抽象库(PDAL) 是点云处理的强大动力。 该库非常适合组织成数据管道的点云工作流。 与其同类 GDAL 一样, PDAL 是一个具有 Python 绑定的 C++ 库。 PDAL Python API 使开发人员能够以 json 格式编写管道, 以便从 Python 脚本运行。 它还能够合并自定义 Python 函数以扩展 PDAL 的基本功能。 缺点是 PDAL 的学习曲线有点陡峭, 其语法对于只熟悉 Python 的用户来说可能看起来很陌生。

LasPy

LasPy 是一个方便的 Python 库, 纯粹用于以标准 LAS(或压缩版本,LAZ)格式读写点云数据。 LasPy 的功能不如 PDAL, 但它具有易于安装可能与 PDAL 的 C++ 依赖项斗争的云托管环境中使用的优势。

NumPy

Numpy,用于处理多维数组数据结构的经典 Python 库。 当与像 LasPy 这样的读取器/写入器库结合使用时, 可以将点云数据存储在 NumPy 数组中, 以及过滤、处理数据(有关示例,请参见本教程)。 NumPy 也适用于地理空间领域的一般用途。

用于可视化的基本地理空间 Python 库

Matplotlib

强大的 2-D 和 3-D 绘图功能, 具有适用于光栅和矢量数据的地图可视化功能。 Matplotlib 还支持交互式地理可视化和动画。

Ipyleaflet

在 Jupyter Notebook 环境中制作交互式地图。 Ipyleaflet 将 leaflet.js 的 Javascript 制图功能引入 Python。 它建立在提供交互式 UI 功能的 Ipywidgets 上。

Folium

作为 Ipyleaflet 的替代品, Folium 也是通往 leaflet.js 的桥梁。 两者之间的区别在于 Folium 是针对静态可视化构建的, 而 Ipyleaflet 构建的是交互式小部件。 Folium 的一个有用特性是它提供了将交互式地图导出为 HTML 的简单功能, 使其成为 Web 开发中的一个有用工具。