Spatial Analysis GIS / ArcGIS Pro / Python

Spatial Analysis

Five analyses where the question could only be answered by looking at where.

Hotspot Analysis Geocoding Network Analysis Multi-Criteria Overlay Spatial Statistics Cartography Python
(01)Point Pattern Analysis

Motor Vehicle Collisions in Kitchener

Eight years of Waterloo Region Police collision records aggregated into a hexagonal grid to find where crashes actually concentrate. The hotspots track the King Street corridor and align closely with the ION LRT route and its stops — and a Moran's I test confirms that clustering is statistically significant rather than chance.

0.495
Moran's I
19.13
z-score
< 0.001
p-value
0.65 km²
Hexagon size
2015–22
Study period

ArcGIS Pro · XY Table to Point · Generate Tessellation · Clip · Summarize Within · Spatial Autocorrelation (Moran's I) · Natural Breaks (Jenks)

Graduated symbol map of motor vehicle collisions in Kitchener, 2015 to 2022, with the ION LRT route overlaid.
Total motor vehicle collisions by hexagon, City of Kitchener, 2015–2022. Data: Waterloo Region Police Services and City of Kitchener Open Data.
(02)Geocoding · Temporal Animation

Geocoding 24 Years of Building Permits

Built a Point Address locator from the City of Kitchener's civic address points, geocoded the full building permit dataset, then animated new construction year by year to show the city's growth footprint pushing outward into Huron South, Doon South and Grand River South. The 3.71% that failed to match turned out to be structural rather than an error: new-construction permits are issued before the address exists in the reference layer.

96.29%
Match rate
75,267
Permits geocoded
25,870
New construction
24
Animation frames
1999–2022
Study period

ArcGIS Pro · Create Locator (Point Address) · Geocode Addresses · Rematch · Definition Query · Time Slider · Animation · SQL expressions

Map of new construction building permits across Kitchener, 1999 to 2022, with three neighbourhood inset maps.
New construction building permits, City of Kitchener, 1999–2022, with insets for Huron South, Grand River South and Doon South / Pioneer Park. Data: City of Kitchener Open Data.
(03)GIS + Python

NBA Shot Efficiency, Mapped

The same spatial question answered twice, in two toolchains. First in ArcGIS Pro: a hexagonal grid over a georeferenced court, shots spatially joined to each cell, field goal percentage calculated per zone and differenced against the team average. Then rebuilt in Python to compare Stephen Curry against Nikola Jokić — position shapes everything, with Curry's efficiency spread across the arc and Jokić's concentrated in the paint.

450 u
Hexagon size
2
Toolchains
≥ 5
Shots per cell threshold
2021–22
Season

ArcGIS Pro · Generate Tessellation · Spatial Join · Select by Attributes · Field Calculator · Python · Jupyter · pandas · matplotlib hexbin

Hexagonal map of Stephen Curry's field goal percentage by court zone for the 2021-22 season, shaded red to green.
Stephen Curry field goal percentage by court zone, 2021–22. Red indicates low efficiency, green high. Data: NBA shot locations.
(04)Network Analysis

Where Should the Next Fire Station Go?

The Region of Waterloo had two candidate sites for a new fire station and rural response gaps to close. I built a road network dataset with travel times derived from segment length and posted speed, applied one-way restrictions, then ran service areas and location-allocation across four scenarios. New Hamburg cleared more than twice as many underserved calls as Elmira — though neither site alone fully closes the rural gap.

203 → 98
Calls outside 10 min
4
Scenarios modelled
2 / 5 / 10
Drive-time bands (min)
3.01 → 2.83
Avg. response (min)

ArcGIS Pro · Network Analyst · Network Dataset · Service Area · Location-Allocation · travel-mode configuration · one-way restrictions

Fire response coverage map for the Region of Waterloo showing 2, 5 and 10 minute drive-time service areas with the proposed New Hamburg station.
Recommended scenario — 17 stations including New Hamburg, with 2, 5 and 10-minute drive-time service areas. Red points are calls still outside 10-minute coverage. Data: Region of Waterloo Open Data.
(05)Multi-Criteria Decision Analysis

Siting a Wind Farm in Bruce County

Six criteria — wind resource, and setbacks from dwellings, built-up land, roads, forest and airports — each reclassified onto a common 30 m grid and combined in a weighted overlay, with weights drawn from siting literature and Ontario Regulation 359/09 rather than split evenly. Both recommended sites were then verified independently against every regulated setback, not just their aggregate suitability score, and the weighting was stress-tested at 20% and 50% wind.

554 km²
High suitability
13.3%
Of county area
6
Weighted criteria
30 m
Cell size
550 m
Regulated setback

ArcGIS Pro · Spatial Analyst · Euclidean Distance · Reclassify · Weighted Overlay · Region Group · Raster Calculator · sensitivity testing

Weighted overlay suitability raster for wind farm siting across Bruce County, Ontario, with two recommended sites marked.
Final weighted overlay suitability surface for Bruce County with both recommended sites. Data: Bruce County Open Spatial Data, Ontario GeoHub, Canadian Wind Atlas.