由于其多功能性、广泛的库生态系统和用户友好的语法,Python 已成为地理信息系统 (GIS) 和遥感领域的主导语言。这个 70 个地理空间 Python 库的汇编展示了可用于 GIS 和遥感数据处理和分析的丰富工具包。
Python 在 GIS 中的重要性源于它处理复杂地理空间数据的能力,从矢量和栅格格式到点云。借助 Python,GIS 专业人员可以高效地执行数据操作、空间分析、可视化和自动化等任务。
多年来,Python 已经发展到可以通过专门的库和工具无缝地处理 GIS 数据。Python 与 GDAL、Fiona 和 Shapely 等强大的地理空间库的集成为读取、写入和处理各种格式的空间数据提供了基础。而且,GeoPandas的出现,将pandas的能力带入了地理空间数据,实现了属性和空间操作的无缝集成。
Python 的开源特性和广泛的社区支持促进了众多地理空间库的开发。这些库(例如 Cartopy、Basemap 和 Pyproj)为地图投影、坐标变换、空间分析和交互式可视化等任务提供了专门的功能。它们提供直观的界面和高效的算法,使 GIS 专业人员能够有效地解决复杂的地理空间问题。
Python 在 GIS 领域的前景一片光明。随着机器学习和人工智能的进步,ArcGIS API for Python、PyTorch、TensorFlow 和 scikit-learn 等 Python 库正在应用于地理空间数据分析,从而实现土地覆盖分类和对象检测等任务。此外,将 Python 与遥感、SAR 和高光谱数据处理等新兴技术集成正在扩展遥感应用程序的功能。
Python 的灵活性、易用性以及大量的地理空间库使其成为 GIS 专业人员、空间数据科学家、研究人员和开发人员的首选。随着地理空间领域的不断发展,Python 的适应性和广泛的库生态系统将在推动创新、实现先进分析技术以及促进地理空间数据与其他领域的集成方面发挥关键作用。
70 个地理空间 Python 库的汇编展示了 Python 在 GIS 中的重要性。Python 的发展能够与 GIS 数据无缝协作,再加上其广泛的库生态系统,使其成为地理空间数据处理和分析的强大工具。凭借其在新兴技术中的光明前景,Python 继续塑造 GIS 和遥感的未来,实现先进的地理空间应用和见解。
-
ArcGIS API for Python (Esri) :由Esri开发,该库为 ArcGIS 用户提供 GeoAI 功能。
-
Earth Engine API (Google) : Earth Engine API 允许您访问 Google Earth Engine 的大量地理空间数据并使用 Python 执行分析任务。
-
TorchGeo ( PyTorch ):TorchGeo 提供了在 PyTorch 中处理地理空间数据的工具和实用程序,包括数据加载器、转换和空间索引。
-
fastai.vision (fast.ai):虽然不是专门为 GeoAI 设计的,但 fastai.vision 是一个用于深度学习和计算机视觉任务的流行库,可用于分析地理空间图像。
-
arcpy (Esri):arcpy 是 Esri 提供的 Python 库,用于在 ArcGIS 平台上处理地理空间数据。它允许您自动执行地理处理任务并执行空间分析。
-
PyQt(河岸计算):PyQt 是 Qt 应用程序框架的一组 Python 绑定。它可用于为地理空间应用程序创建图形用户界面(GUI)。
-
GeoPandas:GeoPandas 扩展了流行的数据分析库 Pandas 的功能来处理地理空间数据。它提供了用于处理矢量数据(例如点、线和多边形)的高级接口。
-
Rasterio:Rasterio 是一个用于读取和写入地理空间栅格数据集的库。它提供了对栅格数据的高效访问,并允许进行各种操作,例如重新投影和重新采样。
-
GDAL(开源地理空间基金会):GDAL(地理空间数据抽象库)是一个功能强大的库,用于读取、写入和操作地理空间栅格和矢量数据格式。
-
Fiona: Fiona 是一个 Python API,用于读取和写入不同格式的地理空间数据,包括 Shapefile 和 GeoJSON。它与 GeoPandas 等其他库集成良好。
-
Shapely: Shapely 是 Python 中用于几何运算的库。它允许您创建、操作和分析点、线和多边形等几何对象。
-
GeoPy: GeoPy 是一个用于地理编码和反向地理编码的库,它允许您将地址转换为地理坐标,反之亦然。用于地理编码和距离计算的库。Geopy 还提供了根据不同距离度量计算点之间距离的功能。
-
PySAL: PySAL(Python空间分析库)提供了广泛的空间分析方法,包括空间自相关、聚类和空间回归。
-
Pyproj:Pyproj 是 PROJ 库的 Python 接口,它提供坐标转换功能。它允许您在不同的坐标参考系 (CRS) 之间转换坐标。
-
Rasterstats: Rasterstats 提供了对栅格数据集进行分区统计分析的工具。它允许您计算定义区域内的统计数据,例如平均值或最大值。
-
Geos: Geos 是一个提供低级几何操作的 C++ 库,Python Geos 库提供了 Geos 的 Python 接口。它经常与 Shapely 结合使用。
-
RSGISLib:RSGISLib 是一个用于遥感和 GIS 分析的库。它提供了一系列功能,包括图像分类、变化检测和光谱指数计算。它还包括处理热遥感数据的功能。它提供热图像处理功能,包括辐射校正、地表温度估算和发射率检索。
-
WhiteboxTools:WhiteboxTools 是一个用于地理空间分析和数据处理的库。它为地形分析、水文建模和激光雷达数据处理等任务提供了一套全面的工具。
-
GeoDjango:GeoDjango 是一个 Python 框架,用于开发具有地理空间功能的 Web 应用程序。它与流行的 Web 框架 Django 集成,并提供用于管理地理空间数据和执行空间查询的工具。
-
Xarray:专为处理多维地理空间数据集而设计,它提供了数据操作、分析和可视化工具。
-
GeoAlchemy:将地理空间数据集成到 SQLAlchemy(一个 Python SQL 工具包)中,允许使用地理数据库进行空间查询和操作。
-
scikit-mobility:scikit-mobility 是一个用于分析和建模移动模式和轨迹的库。
-
EarthPy(EarthPy 贡献者):EarthPy 是一个专注于地球科学数据分析的库,特别是遥感和地理空间图像。
-
GeoViews (HoloViz):GeoViews 是一个使用 HoloViews 生态系统创建地理空间数据交互式可视化的库。
-
Geocoder:Geocoder 是一个简单易用的库,用于地理编码和反向地理编码任务。
-
GeoPandas-Bokeh:GeoPandas-Bokeh 是 GeoPandas 的扩展,可使用 Bokeh 实现交互式地理空间可视化。
-
Cartopy:Cartopy 是一个用于地理空间数据处理和可视化的 Python 库。它提供了一个简单直观的界面,用于创建地图和使用地理空间数据集。
-
Folium:Folium 是一个用于交互式地图可视化的库,允许用户使用 Python 和 Leaflet.js 创建和操作交互式地图。
-
geoplot:geoplot 是一个地理空间数据可视化库,提供用于创建各种类型地图的高级界面,包括分区统计图、点图和线图。它是 cartopy 和 matplotlib 的扩展,使绘图变得简单:就像地理空间的 seaborn 一样。
-
PyCRS:PyCRS 是一个用于在 Python 中使用坐标参考系统 (CRS) 的库。它提供了用于在不同 CRS 格式之间进行转换和执行 CRS 转换的实用程序。
-
RasterVision:专为遥感中的深度学习应用而设计,它提供了用于预处理和分析卫星图像的工具。
-
osmnx:OSMnx 是一个用于检索、分析和可视化 OpenStreetMap (OSM) 数据的 Python 库。它允许用户下载街道网络、建筑物和其他 OSM 功能并对其进行网络分析。
-
Overpy:Overpy 是 Overpass API 的 Python 包装器,它是查询和下载 OpenStreetMap (OSM) 数据的强大工具。它允许用户根据自定义标准提取特定的 OSM 功能,并可用于各种地理空间分析。
-
NetworkX:NetworkX 是一个用于创建、操作和研究复杂网络的 Python 库。它可用于建模和分析空间网络,例如交通网络、社交网络或基础设施网络。NetworkX 提供用于网络分析、社区检测和中心性度量的算法,可应用于地理空间网络以实现各种目的。
-
geospatial-learn:geospatial-learn 是一个 Python 模块,用于将 scikit-learn 和 xgb 模型与地理空间数据(主要是栅格和矢量格式)结合使用。
-
OGR:OGR 是一个提供读写地理空间矢量数据格式支持的库。它是 GDAL 项目的一部分,允许用户使用各种矢量数据格式,例如 Shapefile、GeoJSON 和 KML。
-
ipyleaflet:ipyleaflet 是一个 Python 库,用于在 Jupyter Notebooks 和 JupyterLab 中进行交互式映射可视化。ipyleaflet 对于创建交互式地理空间可视化和网络地图应用程序非常有用。
-
Pydeck:Pydeck 是一个高级库,用于在 2D 和 3D 地图上创建交互式数据可视化。它构建在 Deck.gl 之上,提供简单直观的 API,用于创建令人惊叹的可视化效果,并且可以轻松集成到 Jupyter Notebooks 或 Web 应用程序中。
-
GeoMesa:GeoMesa 是一个地理空间数据管理和分析库,构建在 Apache Hadoop、Apache Accumulo、Apache HBase 和 Apache Kafka 等分布式计算框架之上。它允许高效存储、索引和查询大规模地理空间数据。GeoMesa 旨在处理时空数据,并支持 GeoAI 应用程序的高级分析,包括时空索引和地理空间查询优化。
-
RasterFrames:RasterFrames 是一个使用 Apache Spark 的 DataFrame API 处理地理空间栅格数据的库。它能够将栅格数据与 Spark 的分布式处理功能集成,使其可针对大规模地理空间分析任务进行扩展。RasterFrames 允许用户利用 Spark 并行处理功能执行分布式栅格处理和分析。
-
laspy:laspy 是一个 Python 库,用于读取、写入和修改 ASPRS LAS 格式的 LIDAR 数据。LIDAR(光探测和测距)数据通常用于捕获有关地球表面的详细 3D 信息。借助 laspy,您可以轻松处理 LAS 文件、访问点云数据,并从 LIDAR 数据中提取高程、强度和分类信息等特征。该库对于地形建模、林业、城市规划和涉及高分辨率 3D 数据的其他应用特别有用。
-
PDAL(点数据抽象库):PDAL是一个功能强大的开源库,用于处理和分析点云数据。PDAL 支持多种数据格式,并与其他地理空间工具无缝集成,包括 GDAL 和 LASzip。它通常用于地理空间管道中,在使用 laspy 或 GeoMesa 等库执行更高级的分析之前预处理点云数据。
-
PyVista:PyVista 是一个用于点云、网格和体积数据的 3D 可视化和分析的 Python 库。它提供了一个高级界面,用于在交互式 3D 绘图中可视化点云数据、生成表面网格以及对点云执行各种几何操作。PyVista 由 Bane Sullivan 和 OpenGeoVis 团队积极维护
-
Open3D:Open3D 是一个用于 3D 数据处理的开源库。它包括点云可视化、配准、过滤和分割模块。Open3D 支持各种点云格式,并提供用户友好的界面来处理点云数据。
-
PCL(点云库):PCL是一个用于点云处理的C++库,但它也提供Python绑定。它提供了广泛的点云过滤、特征提取、配准和分割算法。Python 绑定允许用户访问 PCL 功能并执行高级点云分析任务。
-
PyntCloud:PyntCloud 是一个专门为点云处理设计的 Python 库。它提供了用于读取、操作和分析点云的工具。PyntCloud支持多种点云格式,并提供点云可视化、下采样和表面重建等功能。
-
geemap:geemap 是一个构建在 Google Earth Engine (GEE) 之上的 Python 库,为交互式地图和地理空间分析提供了一个用户友好的界面。它允许用户使用交互式地图和小部件可视化和分析来自 GEE 的地球观测数据。
-
reportlab:reportlab 是一个用于以编程方式创建 PDF 文档的 Python 库。在地理空间数据分析的背景下,reportlab 可用于根据地理空间数据分析结果生成自定义报告、地图和可视化。它允许您创建包含表格、图表、图像和地图的动态 PDF 文档,使其可用于生成基于地理空间分析的高质量报告和演示文稿。
-
h3-py:h3-py 是 H3 库的 Python 绑定,H3 库是基于六边形的地理空间索引系统。它提供了一种快速有效的方法来索引和分析地理空间数据,特别是对于涉及空间聚合和六边形分箱的任务。
-
Rtree:Rtree 是一个用于执行空间索引的库。它允许高效的空间搜索和查询,使其对于涉及空间数据组织和检索的任务非常有用。
-
PySAR(归:NASA/JPL-Caltech 所有):PySAR 是由 NASA 喷气推进实验室 (JPL) 和加州理工学院 (Caltech) 开发的 Python 库。它提供了用于处理、分析和可视化 SAR 数据的工具,包括干涉 SAR (InSAR) 和时间序列分析。PySAR 支持各种 SAR 数据格式,并提供变形监测、地形测绘和其他 SAR 分析应用的功能。
-
SarPy:SarPy 是一个用于读取、分析和处理 SAR 数据(包括复杂雷达数据)的 Python 库。它提供了用于处理各种格式的 SAR 数据并执行 SAR 特定任务(例如图像形成、聚焦和干涉处理)的工具。SarPy 由美国空军研究实验室 (AFRL) 开发和维护。
-
snappy:snappy 是欧洲航天局 (ESA) 开发的一个 Python 库,用于处理 Sentinel-1 Toolbox (S1TBX) 中的 SAR 数据。它为 Sentinel 应用平台 (SNAP) 软件提供 Python 接口,允许用户使用 Python 脚本访问和处理 Sentinel-1 SAR 数据。snappy 支持 SNAP 环境中的数据读取、预处理和 SAR 分析等任务。
-
PyRAT(归:NASA/GSFC):PyRAT(Python Radiative Transfer)是由 NASA 戈达德太空飞行中心(GSFC)开发的用于高光谱遥感分析的 Python 库。它提供了大气辐射传输建模、光谱分解和从高光谱数据检索表面参数的工具。PyRAT 专为地球观测应用中的高光谱数据分析而设计。
-
Spectral(归:Python Spectral 开发团队所有):Spectral 是由 Python Spectral 开发团队维护的 Python 库。它专注于高光谱遥感数据分析,提供读取、处理和可视化高光谱数据的功能。Spectral 提供了多种光谱分析算法,包括分类、端元提取和植被指数计算。它还可用于处理和分析热遥感数据。Spectral 提供加载、预处理和分析热图像的功能。它包括温度检索算法,如果需要,可以结合高光谱数据处理热数据。
-
PySptools: PySptools 是一个实现光谱和高光谱算法的 Python 模块。该库的专业领域包括端元提取、分解过程、监督分类、目标检测、降噪、凸包去除和频谱级别的特征提取。该库的设计易于使用,几乎所有功能都具有绘图功能,可以节省您的数据分析过程时间。算法的实际来源是 Isaac Gerg 的 Matlab 高光谱工具箱、MA Little 的 pwctools、Endmember Induction Algorithms Toolbox (EIA)、José Bioucas-Dias 和 José Nascimento 的 HySime Matlab 模块以及研究论文。
-
Hylite:Hylite 是一个用于高光谱图像分析和可视化的 Python 库。它专注于为高光谱数据处理提供高效的算法,包括光谱分析、特征提取和分类。Hylite 还提供交互式可视化功能,用于探索高光谱数据集。
-
Hyperspy:Hyperspy 是一个用于多维数据分析(包括高光谱数据)的 Python 库。虽然 Hyperspy 并不专门专注于遥感,但它提供了处理和分析高光谱成像中常见的大型复杂数据集的功能。Hyperspy 是一个开源项目,得到了各个开发人员的贡献。
-
Py6S:Py6S 是 6S(太阳光谱中卫星信号的第二次模拟)辐射传输模型的 Python 接口。它允许用户模拟和校正热遥感数据中的大气效应。通过提供传感器规格、大气条件和表面特性等输入,Py6S 可以估计大气校正并提供校准的热图像。
-
ENVI Py:ENVI Py 是 ENVI(可视化图像环境)遥感软件的 Python 接口。ENVI 在遥感社区中广泛使用,ENVI Py 允许用户在 Python 中访问 ENVI 功能。它提供了处理和分析热遥感数据的工具,包括辐射校准、大气校正和温度反演。
-
PotreeConverter:PotreeConverter 是一个命令行工具(可与 Python 一起使用),用于将大型点云数据集转换为 Potree 格式,专为高效的 3D Web 可视化而设计。PotreeConverter 通常用于创建基于 Web 的交互式点云可视化。
-
pptk:pptk 是一个 Python 库,用于实时可视化大型 3D 点云并与之交互。它对于海量点云数据集的可视化探索和分析特别有用。
-
lasio:lasio 是一个用于读取和写入 Log ASCII 标准 (LAS) 文件的 Python 库,该文件通常用于存储石油和天然气行业中的测井数据。虽然不是专门针对点云数据,但它在处理 LAS 格式的点云时非常有用。
-
Pypotree:Pypotree 是一个用于读取、写入和操作 Potree 格式的点云数据的 Python 库。它允许用户将 Potree 点云转换为 LAS 或 PLY 格式,并对 Potree 数据执行各种操作。
-
gpsd-py3:用于访问 GPSD 的 Python 库,GPSD 是一个从各种来源检索和解析 GPS 数据的服务守护进程。它提供了一个简单的界面来与 GPS 设备交互并访问位置、速度和时间信息。
-
gpxpy:用于解析 GPX(GPS 交换格式)文件的库。它可以轻松读取、写入和操作 GPS 轨迹、路线和航路点数据。该库提供了一个高级 API,用于处理 GPX 文件并从中提取信息。
-
pynmea2:用于解析来自 GPS 设备的 NMEA(国家海洋电子协会)数据的库。它能够从 NMEA 句子中提取各种信息,例如纬度、经度、速度和时间。pynmea2 简化了解析过程,并提供了一个方便的接口来处理 GPS 数据。
-
geograpy3:geograpy3 是一个用于从文本中提取位置名称的库,对于基于文本信息或反向地理编码的 GPS 数据进行地理定位非常有用。
-
PyGeodesy:一个用于大地测量和坐标转换的库,提供基于不同模型的距离、方位和目的地计算的函数。
-
simplekml:用于生成 KML(Keyhole 标记语言)文件的库,允许创建 KML 文档,以便在 Google Earth 或其他 KML 兼容软件中可视化 GPS 和地理空间数据。