city2graph

Transform geospatial relations into graph representations designed for spatial analysis and Graph Neural Networks (GNNs).

https://github.com/c2g-dev/city2graph

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.1%) to scientific vocabulary

Keywords

geoai geographic-data-science geographical-information-system geospatial-analysis gis gnn graph-neural-networks graph-representation-learning mobility network-analysis overturemaps pyg pytorch pytorch-geometric spatial-analysis transportation urban-morphometrics
Last synced: 6 months ago · JSON representation ·

Repository

Transform geospatial relations into graph representations designed for spatial analysis and Graph Neural Networks (GNNs).

Basic Info
  • Host: GitHub
  • Owner: c2g-dev
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage: https://city2graph.net
  • Size: 246 MB
Statistics
  • Stars: 81
  • Watchers: 3
  • Forks: 5
  • Open Issues: 0
  • Releases: 3
Topics
geoai geographic-data-science geographical-information-system geospatial-analysis gis gnn graph-neural-networks graph-representation-learning mobility network-analysis overturemaps pyg pytorch pytorch-geometric spatial-analysis transportation urban-morphometrics
Created about 1 year ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Citation

README.md

city2graph: GeoAI with Graph Neural Networks (GNNs) and Spatial Network Analysis

city2graph

city2graph is a Python library for converting geospatial datasets into graph representations, providing an integrated interface for GeoPandas, NetworkX, and PyTorch Geometric across multiple domains (e.g. streets, transportations, OD matrices, POI proximities, etc.). It enables researchers and practitioners to seamlessly develop advanced GeoAI and geographic data science applications. For more information, please visit the documentation.

PyPI version conda-forge Version PyPI Downloads DOI License Platform codecov Ruff

Features

scope

  • Graph Construction for GeoAI: Build graphs from diverse urban datasets, including buildings, streets, and land use, to power GeoAI and GNN applications.
  • Transportation Network Modeling: Analyze public transport systems (buses, trams, trains) by constructing detailed transportation graphs with support of GTFS format.
  • Proximity and Contiguity Analysis: Create graphs based on spatial proximity and adjacency for applications in urban planning and environmental analysis.
  • Mobility Flow Analysis: Model and analyze urban mobility patterns from various data sources like bike-sharing, migration, and pedestrian flows.
  • PyTorch Geometric Integration: Seamlessly convert geospatial data into PyTorch tensors for GNNs.

Installation

Using pip

Basic Installation

The simplest way to install city2graph is via pip:

bash pip install city2graph

This installs the core functionality without PyTorch and PyTorch Geometric.

With PyTorch (CPU)

If you need the Graph Neural Networks functionality, install with the cpu option:

bash pip install "city2graph[cpu]"

This will install PyTorch and PyTorch Geometric with CPU support, suitable for development and small-scale processing.

With PyTorch + CUDA (GPU)

For GPU acceleration, you can install city2graph with a specific CUDA version extra. For example, for CUDA 12.8:

bash pip install "city2graph[cu128]"

Supported CUDA versions are cu118, cu124, cu126, and cu128.

Using conda

Basic Installation

You can also install city2graph using conda from conda-forge:

bash conda install -c conda-forge city2graph

This installs the core functionality without PyTorch and PyTorch Geometric.

With PyTorch (CPU)

To use PyTorch and PyTorch Geometric with city2graph installed from conda-forge, you need to manually add these libraries to your environment:

```bash

Install city2graph

conda install -c conda-forge city2graph

Then install PyTorch and PyTorch Geometric

conda install -c conda-forge pytorch pytorch_geometric ```

With PyTorch + CUDA (GPU)

For GPU support, you should select the appropriate PyTorch variant by specifying the version and CUDA build string. For example, to install PyTorch 2.7.1 with CUDA 12.8 support:

```bash

Install city2graph

conda install -c conda-forge city2graph

Then install PyTorch with CUDA support

conda install -c conda-forge pytorch=2.7.1=cuda128 conda install -c conda-forge pytorch_geometric ```

You can browse available CUDA-enabled builds on the conda-forge PyTorch files page and substitute the desired version and CUDA variant in your install command. Make sure that the versions of PyTorch and PyTorch Geometric you install are compatible with each other and with your system.

⚠️ Important: conda is not officially supported by PyTorch and PyTorch Geometric anymore, and only conda-forge distributions are available for them. We recommend using pip or uv for the most streamlined installation experience if you need PyTorch functionality.

For Development

If you want to contribute to city2graph, you can set up a development environment using uv.

```bash

Install uv if you haven't already done it

curl -LsSf https://astral.sh/uv/install.sh | sh

Clone the repository

git clone https://github.com/c2g-dev/city2graph.git cd city2graph

Install development dependencies with a PyTorch variant (e.g., cpu or cu128)

uv sync --extra cpu --group dev ```

You can then run commands within the managed environment:

```bash

Add IPython kernel for interactive development

uv run ipython kernel install --name "your-env-name" --user

Or start Jupyter Notebook

uv run jupyter notebook ```

Development Environment

The development dependencies include: - ipython: Enhanced interactive Python shell with Jupyter kernel support - jupyter and notebook: For running Jupyter notebooks with project-specific kernel - isort: Code formatting tools - pytest and pytest-cov: Testing tools

The Jupyter kernel installation ensures that when you start Jupyter notebooks, you can select the "city2graph" kernel which has access to all your project dependencies in the correct virtual environment.

Using Docker Compose

Before using Docker Compose, ensure you have Docker and Docker Compose installed on your system:

```bash

Check Docker installation

docker --version

Check Docker Compose installation

docker compose version ```

If these commands don't work, you need to install Docker first: - For macOS: Install Docker Desktop - For Linux: Follow the installation instructions for your specific distribution - For Windows: Install Docker Desktop

Once Docker is installed, clone the repository and start the containers:

```bash

Clone the repository

git clone https://github.com/yu-ta-sato/city2graph.git cd city2graph

Build and run in detached mode

docker compose up -d

Access Jupyter notebook at http://localhost:8888

Stop containers when done

docker compose down ```

You can customize the services in the docker-compose.yml file according to your needs.

Citation

If you use city2graph in your research, please cite it as follows:

bibtex @software{sato2025city2graph, title = {city2graph: Transform geospatial relations into graphs for spatial network analysis and Graph Neural Networks}, author = {Sato, Yuta}, year = {2025}, url = {https://github.com/c2g-dev/city2graph}, doi = {10.5281/zenodo.15858845}, version = {0.1.1} }

You can also use the DOI to cite a specific version: DOI

Alternatively, you can find the citation information in the CITATION.cff file in this repository, which follows the Citation File Format standard.

Contributing

We welcome contributions to the city2graph project! To contribute:

  1. Fork and clone the repository: bash git clone https://github.com/<your-name>/city2graph.git cd city2graph git remote add upstream https://github.com/c2g-dev/city2graph.git

  2. Set up the development environment: bash uv sync --group dev --extra cpu source .venv/bin/activate # On Windows: .venv\Scripts\activate

  3. Create a feature branch: bash git checkout -b feature/your-feature-name

  4. Make your changes and test: ```bash

    Run pre-commit checks

    uv run pre-commit run --all-files

# Run tests uv run pytest --cov=city2graph --cov-report=html --cov-report=term ```

  1. Submit a pull request with a clear description of your changes.

For detailed contributing guidelines, code style requirements, and documentation standards, please see our Contributing Guide.

Code Quality

We maintain strict code quality standards using: - Ruff: For linting and formatting - mypy: For static type checking - numpydoc: For docstring style validation

All contributions must pass pre-commit checks before being merged.

GeoGraphic Data Science Lab

Owner

  • Name: c2g-dev
  • Login: c2g-dev
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
type: software
title: "city2graph: Transform geospatial relations into graphs for spatial network analysis and Graph Neural Networks"
abstract: "city2graph is a Python library that provides an integrated interface of geospatial datasets from multiple domains converting into graph representations. It facilitates the one-stop data pipeline for spatial network analysis and Graph Neaural Networks (GNNs)  for GeoAI applications."
authors:
  - given-names: Yuta
    family-names: Sato
    email: y.sato@liverpool.ac.uk
    orcid: https://orcid.org/0009-0004-7052-7163
    affiliation: University of Liverpool
repository-code: "https://github.com/c2g-dev/city2graph"
url: "https://city2graph.net"
license: BSD-3-Clause
version: 0.1.2
date-released: 2025-07-12
keywords:
  - GeoAI
  - Graph Neural Networks
  - GNN
  - PyTorch Geometric
  - Geospatial Analysis
  - Urban Analytics
  - Spatial Data Science
  - Urban Mobility
  - Transportation Networks
  - Spatial Knowledge Graphs
  - Spatiotemporal Analysis
  - Geospatial Foundation Models
  - Digital Twin
  - Urban Informatics
  - Geographic Data Science
  - Graph Representation Learning
  - Urban Planning and Design
preferred-citation:
  type: software
  title: "city2graph: Transform geospatial relations into graphs for spatial analysis and Graph Neural Networks"
  authors:
    - given-names: Yuta
      family-names: Sato
      email: y.sato@liverpool.ac.uk
      affiliation: University of Liverpool
  version: 0.1.2
  url: "https://github.com/c2g-dev/city2graph"
  year: 2025

GitHub Events

Total
  • Release event: 3
  • Watch event: 64
  • Delete event: 9
  • Issue comment event: 19
  • Push event: 203
  • Pull request event: 35
  • Fork event: 2
  • Create event: 11
Last Year
  • Release event: 3
  • Watch event: 64
  • Delete event: 9
  • Issue comment event: 19
  • Push event: 203
  • Pull request event: 35
  • Fork event: 2
  • Create event: 11

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 144 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 3
  • Total maintainers: 1
pypi.org: city2graph

A Python library for Geospatial Graph Neural Networks and GeoAI for Urban Analytics with PyTorch Geometric. Convert geospatial data to graphs for spatiotemporal analysis, urban mobility studies, and more.

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 144 Last month
Rankings
Dependent packages count: 8.8%
Stargazers count: 21.2%
Average: 27.8%
Forks count: 31.1%
Dependent repos count: 49.9%
Maintainers (1)
Last synced: 6 months ago

Dependencies

Dockerfile docker
  • jupyter/datascience-notebook latest build
docker-compose.yml docker
environment.yml pypi
pyproject.toml pypi
  • geopandas *
  • networkx *
  • shapely *