生态系统#
GeoPandas 依赖项#
GeoPandas 将 pandas 的全部功能与开源地理空间工具 Shapely 结合在一起,后者支持几何对象的操作和分析,基于 GEOS 库,pyogrio 允许我们使用 GDAL 读取和写入地理数据文件,以及 pyproj,这是一个用于制图投影和坐标转化的库,提供了对 PROJ 的 Python 接口。
此外,GeoPandas 有几个可选依赖项,如 mapclassify 或 geopy。
必需的依赖#
pandas#
pandas 是一个 Python 包,提供快速、灵活和表达性的 数据结构,旨在使处理结构化(表格、多维、潜在异构)和时间序列数据变得简单而直观。它旨在成为进行实际、现实世界数据分析的基础高层构建块,适用于 Python。此外,它还有更广泛的目标,即成为任何语言中最强大、最灵活的开源数据分析 / 操作工具。它在实现这个目标的道路上已走得相当远。
Shapely#
Shapely 是一个基于BSD许可证的Python包,用于平面几何对象的操作和分析。它基于广泛应用的GEOS(PostGIS的引擎)和JTS(GEOS移植自此)的库。Shapely不涉及数据格式或坐标系统,但可以与那些库轻松集成。
pyogrio#
Pyogrio 提供了一个面向 GeoPandas 的 API,用于 OGR 矢量数据源,如 ESRI Shapefile、GeoPackage 和 GeoJSON。矢量数据源具有几何形状,如点、线或多边形,以及与多个数据列相关的记录。
pyproj#
pyproj 是一个 Python 接口,用于 PROJ (制图投影和坐标变换库)。 GeoPandas 使用 pyproj.crs.CRS 对象来跟踪每个 GeoSeries 的投影,并使用其 Transformer 对象来管理重投影。
可选依赖项#
mapclassify#
mapclassify 提供了用于分层地图分类的功能。目前,提供十五种不同的分类方案,包括 Fisher-Jenks 最优分类的高度优化实现。每个方案都继承了一个公共结构,确保计算可扩展,并支持流媒体环境中的应用。
geopy#
geopy 是一个用于多个流行地理编码网络服务的Python客户端。geopy 使得Python开发者能够轻松地通过第三方地理编码器和其他数据源定位全球地址、城市、国家和地标的坐标。
matplotlib#
Matplotlib 是一个用于创建静态、动画和交互式可视化的综合库,适用于Python。Matplotlib可以以多种印刷格式和跨平台的交互环境生成高质量的出版图形。Matplotlib可以在Python脚本、Python和IPython外壳、web应用程序服务器以及各种图形用户界面工具包中使用。
Fiona#
Fiona 是 GDAL 为 Python 程序员提供的简洁灵活的矢量 API。Fiona 设计得简单且可靠。它专注于以标准 Python IO 风格读取和写入数据,并依赖于熟悉的 Python 类型和协议,例如文件、字典、映射和迭代器,而不是特定于 OGR 的类。Fiona 可以使用多层 GIS 格式和压缩的虚拟文件系统读取和写入真实世界的数据,并能很好地与其他 Python GIS 包集成,如 pyproj、Rtree 和 Shapely。
GeoPandas生态系统#
基于GeoPandas构建的各种包解决特定的地理空间数据处理需求、分析和可视化。下面是一个不完整的工具列表(无特定顺序),这些工具构成了与GeoPandas相关的Python生态系统。
空间分析和机器学习#
PySAL#
PySAL,Python空间分析库,是一个开源跨平台库,用于地理空间数据科学,强调用Python编写的地理空间矢量数据。PySAL是一个包的家族,其中一些包列在下面。
libpysal#
libpysal 提供了支持库其余部分的基础算法和数据结构。这目前包括以下模块:输入/输出 (io),提供常见地理空间文件格式的读取和写入器;权重 (weights),提供了存储空间权重矩阵的主类,以及几个用于操作和处理它们的工具;计算几何 (cg),包括几个高效处理几何形状的算法,如Voronoi镶嵌或alpha形状;以及一个带有示例数据集的附加模块 (examples)。
esda#
esda 实现了针对全球(地图范围)和局部(焦点)空间自相关的分析方法,适用于连续数据和二元数据。此外,该包越来越多地提供有关边界强度和统计分析中聚合误差度量的前沿统计数据。
隔离#
segregation 包计算了超过 40 种不同的隔离指数,并提供了一套额外的功能,用于测量、可视化和假设检验,这些功能共同代表了定量隔离分析的最先进水平。
mgwr#
mgwr 提供了可扩展的算法用于估计、推断和预测,采用单尺度和多尺度地理加权回归模型,适用于多种广义线性模型框架,以及模型诊断工具。
tobler#
tobler 提供区域插值和达萨米特绘图的功能。
tobler 包括使用面积加权方法进行数据插值的功能,
基于回归模型的方法,利用遥感栅格数据作为辅助
信息,以及混合方法。
movingpandas#
MovingPandas 是一个处理运动数据的包。 MovingPandas 实现了一个
Trajectory 类及其对应的方法,基于 GeoPandas。一个轨迹具有一个
时间排序的点几何系列。这些点及其相关属性存储在一个 GeoDataFrame 中。 MovingPandas 实现了空间和时间数据访问
和分析功能,以及绘图功能。
momepy#
momepy 是一个用于城市形态定量分析的库 - 城市形态测量。它建立在 GeoPandas, PySAL 和 networkX 之上。 momepy 旨在提供一系列工具,以系统和全面地分析城市形态。它可以处理各种元素,同时专注于建筑轮廓和街道网络。
geosnap#
geosnap 使您更容易探索、建模、分析和可视化社区的社会和空间动态。 geosnap 提供一套工具,用于创建社会空间数据集,将这些数据集协调成一致的时间静态边界,建模定制的社区和典型社区类型,以及使用经典和空间统计方法建模社区变化。它还提供了一套静态和交互式可视化工具,以帮助您在每个步骤中显示和理解关键信息。
mesa-geo#
mesa-geo 实现了一个可以承载基于GIS的GeoAgents的GeoSpace,这些GeoAgents与普通Agents类似,除了它们有一个形状属性,该属性是一个 Shapely 对象。你可以直接使用 Shapely 创建任意形状,但在大多数情况下,你会想从文件中导入你的形状。Mesa-geo 允许你从任何矢量数据文件(例如,shapefiles)、有效的GeoJSON对象或一个GeoPandas GeoDataFrame 创建GeoAgents。
Pyspatialml#
Pyspatialml 是一个用于将 scikit-learn 机器学习模型应用于栅格数据集“堆栈”的 Python 模块。Pyspatialml 包含用于处理多个栅格数据集的函数和类,并执行一个典型的机器学习工作流程,包括提取训练数据和将 scikit-learn 估算器的 predict 或 predict_proba 方法应用于栅格数据集的堆栈。Pyspatialml 建立在 rasterio Python 模块之上,负责所有繁重的工作,并且还旨在使用 geopandas 模块处理矢量数据。
PyGMI#
PyGMI代表Python地球科学建模与解释。它是一个用于磁场、重力和其他数据集的建模与解释工具包。
可视化#
hvPlot#
hvPlot 提供基于 Bokeh 的交互式绘图,用于 GeoPandas 数据框和系列,使用与 Matplotlib .plot() 支持相同的 API,该支持是随 GeoPandas 一起提供的。hvPlot 使得平移和缩放绘图变得简单,使用小部件探索多维数据,并能够在网页浏览器中渲染甚至是最大的Datasets,使用 Datashader。
contextily#
contextily 是一个小型 Python 3 (3.6 及以上) 包,用于从互联网获取地图切片。它可以将这些切片作为底图添加到 matplotlib 图形中,或将地图切片写入磁盘保存为地理空间栅格文件。边界框可以以 WGS84
(EPSG:4326) 和球面墨卡托 (EPSG:3857) 坐标系传递。
cartopy#
Cartopy 是一个专为数据分析和可视化设计的 Python 包,旨在简化绘制地图的过程。它具有以下特点:面向对象的投影定义;不同投影之间的点、线、多边形和图像转换;集成以简单直观的界面在 Matplotlib 中展示高级绘图;通过将 shapefile 读取与 Shapely 功能集成,强大的矢量数据处理能力。
bokeh#
Bokeh 是一个用于现代网络浏览器的交互式可视化库。它提供了优雅、简洁的多功能图形构建,并且在大型或流式数据集上提供高性能的交互。Bokeh 可以帮助任何想要快速且轻松地制作交互式图表、仪表板和数据应用程序的人。
folium#
folium 利用 Python 生态系统的数据处理优势和 Leaflet.js 库的绘图优势。先在 Python 中处理数据,再通过 folium 可视化到 Leaflet 地图中。
kepler.gl#
Kepler.gl 是一个与数据无关的高性能基于网络的应用程序,用于大规模地理位置信息数据集的可视化探索。 基于 Mapbox GL 和 deck.gl,kepler.gl 可以实时渲染数百万个代表数千次旅行的点,并执行空间聚合。
地理绘图#
geoplot 是一个高级 Python 地理空间绘图库。它是对 cartopy 和 matplotlib 的扩展,使得制图变得简单:就像 seaborn 对于地理空间一样。它带有高级绘图 API、原生投影支持以及与 matplotlib 的兼容性。
GeoViews#
GeoViews 是一个Python库,可以轻松探索和可视化任何包含地理位置的数据,原生支持GeoPandas数据框和系列对象。它对多维气象和海洋数据集提供了特别强大的支持,例如用于天气、气候和遥感研究的数据集,但对几乎任何您想在地图上绘制的内容都很有用!
EarthPy#
EarthPy 是一个 Python 包,旨在简化使用开源工具绘制和处理空间栅格和矢量数据的过程。 Earthpy 依赖于 geopandas,该工具关注于矢量数据,并且 rasterio 便于栅格数据文件的输入和输出。它还需要 matplotlib 进行绘图操作。 EarthPy’s 目标是让科学家更容易地处理空间数据。
splot#
splot 提供空间分析的统计可视化功能。它的方法用于可视化全局和地方空间自相关(通过莫兰散点图和聚类地图)、聚类动态的时间分析(通过热图和玫瑰图),以及多变量色斑图制图(通过值按透明度图)。一个高级 API 支持创建符合出版要求的可视化图。
legendgram#
legendgram是一个小型包,提供“图例图”,通过颜色在给定地图中可视化观察值的分布。这些地图分类方案的分布可视化有助于分析制图和空间数据可视化。
buckaroo#
buckaroo 是一个现代化的数据表格工具,适用于 Jupyter,可以加速最常见的探索性数据分析任务。它提供可滚动的表格、直方图和汇总统计。Buckaroo 支持多种 DataFrame 库,包括 geopandas。它可以将 GeoDataFrame 显示为表格,还支持在表格中将几何形状渲染为 SVG。
几何操作#
TopoJSON#
topojson 是一个用于在Python中创建几乎任何地理对象的TopoJSON编码的库。使用topojson可以显著减少地理数据的大小,通常可以减少几个数量级。它能够通过计算拓扑消除冗余、使用固定精度整数编码坐标,以及简化和量化弧线来实现这一点。
地理立方体#
将geopandas向量数据转换为栅格化的 xarray 数据的工具。
数据检索#
OSMnx#
OSMnx 是一个 Python 包,允许您从 OpenStreetMap 下载空间数据,并建模、投影、可视化和分析现实世界的街道网络。您可以用一行 Python 代码下载可步行、可驾驶或可骑行的城市网络,然后轻松分析和可视化它们。您同样可以轻松下载和处理其他基础设施类型、设施/兴趣点、建筑物轮廓、高程数据、街道方位/方向,以及速度/旅行时间。
pyrosm#
Pyrosm 是一个用于从 Protocolbuffer Binary Format 文件 (*.osm.pbf) 读取 OpenStreetMap 数据到 Geopandas GeoDataFrames 的 Python 库。Pyrosm 使得从 OpenStreetMap pbf 转储中提取各种数据集变得容易,包括例如路网、建筑物、兴趣点 (POI)、土地利用和自然元素。此外,支持完全自定义的查询,这使得可以使用更具体的过滤器解析 OSM 数据。
geobr#
geobr 是一个下载巴西官方空间数据集的计算包。该包包括各种地理空间数据,采用地理包格式(类似于但更好的shapefile),可在不同的地理尺度和不同的年份获取,具有统一的属性、投影和拓扑。
cenpy#
一个用于探索和查询美国人口普查API并返回Pandas Dataframes 的接口。这个包旨在进行探索性数据分析,并受到sqlalchemy类似接口和 acs.R 的启发。对于应用程序开发人员和仅希望快速无痛获取数据的人,cenpy 应该满足大多数希望将美国人口普查数据导入Python的需求。
pygadm#
pygadm 是一个Python包,允许您从 GADM 请求空间数据,而无需手动下载任何文件。该包旨在通过几个参数(如名称和细分级别)简化数据请求。输出作为 GeoDataFrame 以 epsg:4326 格式提供。