{"adoption": {"forks": 197, "observed_at": "2026-08-28T04:05:46.917087+00:00", "stars": 1872}, "canonical_url": "https://ross.abutalabs.com/products/city2graph", "card": {"archived": false, "artifact_type": "library", "description": "Transform geospatial relations into graphs for Graph Neural Networks and spatial network analysis", "domain": ["machine-learning", "data-science"], "enriched": true, "function": ["geospatial", "machine-learning", "data-science", "parser"], "health_score": 99, "homepage": "https://city2graph.net", "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["c2g-dev/city2graph"], "name": "c2g-dev/city2graph", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-18T10:22:38+00:00", "repo": "c2g-dev/city2graph", "stars": 1872, "tags": ["graph-neural-networks", "pytorch-geometric", "urban-analytics", "gis", "network-analysis", "gtfs", "mobility", "spatial-graphs", "geopandas", "networkx", "geoai", "urban-morphology", "geospatial", "maps", "transportation"], "topics": ["network-analysis", "spatial-analysis", "geographical-information-system", "graph-neural-networks", "pytorch-geometric", "geographic-data-science", "graph-representation-learning", "mobility", "transportation", "gis", "urban-morphometrics", "gnn", "overturemaps", "geospatial-analysis", "geoai", "geospatial", "python", "good-first-issue", "city2graph", "urban"], "urls": [], "use_cases": ["convert openstreetmap buildings and streets into graphs for gnn training", "build stop-to-stop transit graphs from gtfs feeds", "turn origin-destination mobility matrices into weighted spatial graphs", "compute knn delaunay or queen contiguity spatial weights", "convert geodataframes to pytorch geometric heterodata tensors", "urban morphology and street network analysis", "spatial knowledge graphs for geoai applications"], "what_it_is": "City2Graph is a Python library that converts geospatial data such as buildings, streets, GTFS transit feeds, and origin-destination matrices into spatial and heterogeneous graphs. It bridges GeoPandas, NetworkX, and PyTorch Geometric so the same data supports both network analysis and Graph Neural Network workflows.", "when_to_avoid": ["you need raster or satellite imagery processing rather than vector graphs", "you need production gnn training infrastructure rather than graph construction", "you work outside python or need non-geospatial graph databases"], "when_to_choose": ["you need to bridge geospatial vector data with graph neural networks", "you work with gtfs, gbfs, or od flow data and want graph representations", "you want one library spanning geopandas, networkx, and pytorch geometric", "you do urban analytics, transportation, or geoai research in python"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/city2graph", "repo": "c2g-dev/city2graph", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:46.917087+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:14:57.143338+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "517aa60ab0986fb497163f03abead61b040d70f89ad70b3323dcc7bc53588ddc", "fetched_at": "2026-08-28T04:05:46.917087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/c2g-dev/city2graph"}, {"content_hash": "547a44e4bcf21e350b078983f369cf733f89ecc45ba85bd839c20c49ea7ddfc1", "fetched_at": "2026-08-29T10:54:28.257797+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/city2graph/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 42, "rhythm": 95}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 593, "days_push": 15, "days_rel": 32, "gap_med": 11.5, "n_releases_24m": 17}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}