Skip to content
Cuyahoga County Geojson Integration Project
Project Overview
This notebook creates a unified spatial dataset of Cuyahoga County municipalities and Cleveland SPA neighborhoods.
Key outcomes
- Merge county municipal boundaries and Cleveland Strategic Planning Areas (SPAs) into one dataset.
- Label geographies as Cleveland Core vs Cuyahoga Suburban.
- Produce clean visualizations and export final data for GIS tools and Tableau.
Outputs
cuyahoga.geojson— Simplified Cuyahoga municipal boundaries (standardized columns).cuyahoga_neighborhoods.geojson— Unified Cleveland + suburban boundaries.cuyahoga_neighborhoods_df.xlsx— Geometry-free table for Tableau/Excel.
Imports & Load GeoJSON Files — Read spatial layers into GeoDataFrames
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
# Load spatial layers (adjust paths if needed)
cuyahoga = gpd.read_file('Cuyahoga_Municipal_Boundaries.geojson')
cleveland = gpd.read_file('Cleveland_SPA_Neighborhoods.geojson')
Explore County & Cleveland SPA Data — Preview attributes
cuyahoga.head() # preview cuyahoga mapcleveland.head() # preview cleveland mapInspect Columns — Confirm schemas for a clean merge
print("Cuyahoga columns:", list(cuyahoga.columns))
print("Cleveland columns:", list(cleveland.columns))Visualize Cuyahoga — County municipal map
ax = cuyahoga.plot(figsize=(10, 10), edgecolor='k', color='lightgrey')
ax.set_title('Cuyahoga County — Municipal Boundaries')
plt.show()Prepare Simplified Cuyahoga — Rename, add labels for MetroRegion/County
This step filters the Cuyahoga County GeoDataFrame to include only the municipality name and geometry columns, renaming MUNI_NAME to SPANM for consistency with the Cleveland dataset. It then adds two new fields — MetroRegion, labeling “Cleveland” as Cleveland Core and all other municipalities as Cuyahoga Suburban — and County, which is set to “Cuyahoga” for all records.
# Keep only name + geometry; standardize column name to SPANM to match Cleveland
cuyahoga2 = cuyahoga[['MUNI_NAME', 'geometry']].rename(columns={'MUNI_NAME':'SPANM'})
# Label Cleveland vs Suburban (Cleveland = Cleveland Core; all else = Cuyahoga Suburban)
cuyahoga2 = cuyahoga2.assign(
MetroRegion=cuyahoga2['SPANM'].apply(lambda muni: 'Cleveland Core' if muni == 'Cleveland' else 'Cuyahoga Suburban'),
County='Cuyahoga'
)
cuyahoga2.head()Export Simplified County Layer — GeoJSON for reuse
cuyahoga2.to_file("cuyahoga.geojson", driver="GeoJSON")
"Exported: cuyahoga.geojson"