桃子桃子快讯
返回首页
工具

City2Graph 开源:用异构图神经网络做城市空间分析

面向城市系统的 Python 库 City2Graph 发布,把地理空间数据转为异构图,支撑 GNN 与空间分析,已在期…

2026.08.13 · 周四3 分钟阅读

City2Graph 是一个新近开源的 Python 库,专门把城市相关的地理空间数据(建筑、路网、公交、OD 流等)转换为可直接用于图神经网络(GNN)训练的异构图结构。配套论文已发表于《Computers, Environment and Urban Systems》期刊,作者来自多所高校与研究机构。该工具主要面向做城市计算、GeoAI 和空间分析的科研与工程用户。

核心定位:把城市数据当作异构图来处理

论文和库的设计都强调一个观点:城市数据天然包含多种实体类型(建筑、街道、站点、小区、出行轨迹),它们之间的关联也是异质的,强行拍平成同构的特征表会损失结构信息。City2Graph 把这种异构关系显式建模为多种节点与边类型,并支持基于元路径(metapath)合成跨类型关系,方便下游 GNN 直接消费。

支持的数据来源与图构造

City2Graph 内置若干常见城市数据源的加载与图构造能力,包括:

  • 形态(morphology):从 OpenStreetMap、Overture Maps 抽取建筑、街段、镶嵌的城市肌理,输出形态学异构图。
  • 交通(transportation):通过 DuckDB 加载 GTFS、GBFS 时刻表与共享单车数据,并把 GTFS 聚合为「站点到站点」的公交图。
  • 出行(mobility):把 OD 矩阵、人流、自行车、行人计数等流数据建模为加权空间图。
  • 邻接与邻近(proximity):提供 KNN、Delaunay、Gilbert、Waxman,以及 queen/rook 邻接,距离度量支持欧氏、曼哈顿和网络距离。

与主流图框架的互转

库本身不绑定某个 GNN 框架,而是提供统一的中间表示与多种格式之间的双向转换:

  • GeoDataFrame ↔ NetworkX ↔ rustworkx ↔ PyTorch Geometric 的 Data / HeteroData。
  • 在转换过程中保留几何与属性,方便在不同分析阶段(纯空间分析 vs. GNN 训练)来回切换。

论文与可用性

配套论文为:Sato, Y., Pietrostefani, E., Mahabir, R., & Arribas-Bel, D. City2Graph: A Python library for Heterogeneous Graph Neural Networks and spatial analysis in urban systems. Computers, Environment and Urban Systems, 130, 102492. 作者在 Reddit 公开征集新数据源支持需求与社区贡献(issue / PR)。对城市系统、Urban GNN、空间统计方向的研究者与从业者而言,这是一个补齐数据-图-模型链条的实用工具。

信源