22 个用于地理空间数据分析的 Python 库


发布日期 : 2023-04-26 01:06:46 UTC

访问量: 960 次浏览

22 个用于地理空间数据分析的 Python 库

如何利用地理空间数据的力量

空间数据、地理空间数据、GIS 数据或地理数据是数字数据的不同名称, 其根据地理坐标系识别物理对象(例如建筑物、街道、城镇、城市、国家等)的地理位置。 从空间数据中,不仅可以找到任何对象的位置, 还可以找到其长度、大小、面积或形状, 同时可以获得的一种空间数据的示例是:对象的坐标,例如纬度、经度和高程。 地理信息系统(GIS)或其他专用软件应用程序可用于访问、可视化、操作和分析地理空间数据。 地理空间数据的一些示例包括:

如何利用地理空间数据的力量

1.向量和属性

关于某个位置的点、线、多边形和其他描述性信息。 矢量数据是空间元素通过其 x 和 y 坐标的表示, 矢量数据的最基本形式是点。 两个或更多的点形成一条线,三个或更多的线形成一个多边形。

最简单的形式是在定义其地理空间坐标的表中包含一个或多个额外列。 GeoJSON 等更正式的编码格式也能派上用场。 GeoJSON 是 JSON 数据格式的扩展, 包含几何特征, 可以是 Point、LineString、Polygon、MultiPoint、MultiLineString 或 MultiPolygon。 还有几个其他库可用于表示地理空间数据, 所有这些都在地理空间数据抽象库 (GDAL) 中进行了描述。

2.点云

点云由 LiDAR 系统收集, 可用于创建 3D 模型。 点云是在空间中随机放置的 3D 点的集合。 传感器发出能量脉冲并乘以其返回行程(TWTT,双向行程时间)。 知道了传感器的位置以及脉冲的传输方向, 就可以确定反射面的 3D 位置。 传感器还可以测量回波的强度, 以估计反射表面的几何形状和材料成分。 LiDAR 代表光检测和测距, 机载 LiDAR 可以乘坐直升飞机或小型飞机飞行, 现在可以使用无人机。 它们显示了地面,植被,建筑物和电源线,甚至还有鸟类等。 这显示了点云的 3D 描绘。 利用计算机图形学, 该点可以绕三个轴旋转、放大和缩小。

3.光栅和卫星图像

通过高分辨率图像鸟瞰地球, 当观察一个区域的空间信息时, 可使用栅格数据。 它由一个行列矩阵组成, 每个单元格都有一些相关信息。 栅格数据的一个示例是国家或城市的卫星图像, 该图像由一个矩阵表示, 该矩阵的每个单元格中都包含天气信息。 可通过多种方式在 Python 中处理栅格数据, 其中一个用户友好包是 xarray, 它读取 netcdf 文件。

常用术语介绍

  • shapefile:用于表示地图上项目的数据文件格式。
  • geometry:一个向量(通常是数据框中的一列), 用于表示点、多边形和其他几何形状或位置, 通常表示为众所周知的文本(WKT)。
  • polygon:一个区域。
  • point:特定位置。
  • basemap:地图的背景设置,例如加利福尼亚州的县边界。
  • projection:由于地球是一个 3D 球体, 因此选择一种方法将一个区域展平成 2D 地图,使用一些坐标参考系统 (CRS)。
  • colormap:选择用于渲染数据的调色板, 使用 cmap 参数选择。
  • overplotting:将几个不同的地块叠加在一起。
  • choropleth:使用不同的色调为多边形着色, 作为表示数据级别的一种方式。
  • kernel density estimation:一种数据平滑技术 (KDE), 它创建阴影轮廓来表示数据级别。
  • cartogram:扭曲多边形的相对面积以表示数据级别。
  • quantiles:将数据值分箱到指定数量相等大小的组中。
  • voronoi diagram:将一个区域划分为多边形, 使得每个多边形只包含一个生成点, 并且给定多边形中的每个点都比其他任何点更接近其生成点, 也称为 Dirichlet 镶嵌。

用于地理空间数据分析的 22 个 Python 库列表

Shapely

使用 Shapely, 可以创建有形状的几何对象(例如点、多边形、多多边形)并对其进行操作, 例如缓冲、计算面积或交点等。

Fiona

Fiona 可以使用多层 GIS 格式和压缩虚拟文件系统读取和写入真实世界的数据, 并很容易与其他 Python GIS 包(如pyproj {.dt .iz}、Rtree和 Shapely )集成。

GeoPandas

Geopandas 就如 pandas 遇见 GIS。 它扩展了 pandas 使用的数据类型以允许对几何类型进行空间操作。 几何运算由 Shapely 执行, 它还依赖于 Fiona 进行文件访问和 matplotlib 进行绘图。

GeoPlot

高级地理空间绘图库。 它是对 cartopy 和 matplotlib 的扩展, 使制图变得更加容易。 它建立在其他几个流行的地理空间库之上, 以简化通常需要的编码。

Arcpy

如果您使用 Esri ArcGIS, 那么可能熟悉会 ArcPy 库。 ArcPy 用于地理处理操作。 但它不仅用于空间分析, 还用于 Esri ArcGIS 的数据转换、管理和地图制作。

Scikit-Image

图像处理库, 例如直方图调整、过滤器、分割、边缘检测操作、纹理特征提取等。

SciKit-Learn

最好的同时易于使用的 Python 机器学习库, 可进行回归、分类、降维等。

Descartes

支持将形状几何图形绘制为 matplotlib 路径、补丁, 也是 geopandas 的几何绘图功能的依赖项。

RasterStats

用于分区统计。 根据几何图形从栅格文件或 numpy 数组中提取统计信息。

Rasterio

Rasterio 是处理栅格数据的首选库。 它允许从 numpy {.dt .iz} 数组(Python 数组操作的实际标准)读取、写入光栅文件, 能够提供许多简便的方法来操作这些数组(例如掩码、矢量化等), 并且可以处理坐标参考系的变换。 就像任何其他 numpy 数组一样, 数据也可以很容易地绘制出来, 例如使用 matplotlib 库。

ipyleaflet

如果想创建交互式地图, 那么 ipyleaflet 是 Jupyter notebook 和 Leaflet 的融合。 可以控制各种自定义设置, 例如加载底图、geojson 和小部件。 它还提供了多种地图类型可供选择, 包括等值线图、速度数据和并排视图。

Folium

就像 ipyleaflet 一样, Folium 允许利用 leaflet 来构建交互式网络地图。 它能够在 Python 中操作数据, 可以使用领先的开源 JavaScript 库将其可视化。

Geemap

Geemap 更倾向于使用 Google Earth Engine (GEE) 进行科学和数据分析。

PySAL

Python 空间分析库包含大量用于空间分析、统计建模和绘图的函数。 它旨在支持高级应用程序的开发。

xarray

xarray 非常适合处理大量图像时间序列堆栈, 想象一下 5 个植被指数 x 24 个日期 x 256 像素 x 256 像素。 xarray 允许标记多维 numpy 数组的维度, 并将其与许多函数和 pandas 库的语法(例如 groupby、滚动窗口、绘图)相结合。

PyProj

PyProj 库的主要目的是它如何与空间参考系统一起工作。 它可以用一系列地理参考系统投影和转换坐标, PyProj 还可以为任何给定的基准执行大地测量计算和距离。

GDAL/OGR

GDAL/OGR 库用于在 GIS 格式和扩展名之间进行转换。 QGIS、ArcGIS、ERDAS、ENVI 和 GRASS GIS 以及几乎所有 GIS 软件都以某种方式使用它进行翻译。 目前,GDAL/OGR 支持 97 个矢量和 162 个光栅驱动程序。

RSGISLib

RSGISLib 库是一套用于栅格处理和分析的遥感工具。 它对图像进行分类、过滤和执行统计, 很多人最喜欢的是基于对象的分割和分类 (GEOBIA) 模块。

ReportLab

ReportLab 是此列表中最令人满意的库之一, 原因在于 GIS 通常缺乏足够的报告能力。 特别是,如果想创建一个报告模板, 这是一个很好的选择, 但不知为什么 ReportLab 库有点不受关注。

Imageio

它是一个 Python 库, 提供了一个简单的界面来读取和写入各种图像数据, 包括动画图像、体积数据和科学格式。

MapClassify

它为 choropleth 图实施了一系列分类方案。 重点是确定分类的数量, 并将观察结果分配给这些分类。

RTree

它是 lib_spatial_index 的 ctypes Python 包装器, 提供了许多高级空间索引功能。