A showcase of geospatial data science and software development projects demonstrating expertise in spatial analysis, web development, and systems programming.
Click a project title to expand its details.
Building Classification for Emergency Management
Remote Sensing
Machine Learning
Geospatial Analysis
Python
Project Overview:
Developed a machine learning pipeline to automatically classify 136,534 Minneapolis building footprints into three FEMA Public Assistance Program categories (residential, commercial, public) using multi-modal remote sensing data. The system achieves 96.79% accuracy and is designed to accelerate disaster response resource allocation.
Data Sources: NAIP (0.3m resolution), Sentinel-2 (10–20m), Microsoft US Building Footprints, Hennepin County parcels
GIS Integration: ArcGIS Pro, ESRI Story Map
Project Components:
Feature Engineering: Engineered 23 features across four categories — NAIP spectral (9), Sentinel-2 spectral (8), morphological (4), and spatial context (2)
Ground Truth Labeling: Two-stage hierarchical labeling from Hennepin County parcel data using ownership keywords and land use codes
Class Imbalance Handling: Applied class weighting (up to 24x for minority classes), improving public building recall from 36% to 81%
Model Comparison: Trained and evaluated Random Forest, Linear SVM, and XGBoost; Random Forest selected with 96.79% test accuracy
Spatial Outputs: Exported classified buildings as GeoPackage and Shapefile for downstream GIS analysis
Key Findings:
Coarse-resolution Sentinel-2 neighborhood context (37% feature importance) vastly outweighed fine-resolution NAIP roof detail (2.4%), showing building type is driven more by location than appearance
Building size and shape (area, perimeter, compactness) accounted for 27% of model importance
Unweighted models hit 97% accuracy but only 36% recall on public buildings; class weighting recovered 81% recall with only a 0.23% accuracy trade-off
Key Skills Demonstrated: Multi-source remote sensing data integration, supervised machine learning and model selection, class imbalance mitigation, zonal statistics and spatial feature extraction, geospatial data processing at scale (136k+ features), scientific communication via ESRI Story Map
Visualization: Interactive maps and dashboards in ArcGIS
Project Components:
Data Cleaning: Processed and standardized datasets from multiple sources
QAQC: Validated data accuracy and completeness
Model Development: Built risk assessment model combining environmental and demographic factors
Visualization: Created compelling visualizations to communicate heat risk findings
SQL Integration: Implemented SQL database for efficient data storage and querying
Key Skills Demonstrated: Multi-source data integration, spatial modeling and analysis, team collaboration on complex geospatial project, database design and management, scientific communication
Suitable - Suitability Analysis Web Application
Web Application Development
Multi-Criteria Analysis
Geospatial Analysis
Python
Project Overview:
Developed Suitable, an interactive web application that allows users to perform multi-criteria suitability analysis on their own geospatial datasets through an intuitive interface, without requiring GIS expertise or coding knowledge.
Architecture: Object-oriented design with modular components
Application Components:
Models: Project class (manages overall analysis project state), Criterion class (represents individual suitability criteria)
Components: DataLoader (handles uploading and processing of geospatial files), SuitabilityAnalyzer (performs multi-criteria analysis), ResultsExporter (exports analysis results to various formats)
Utilities: file_utils (file validation and geodataframe handling), map_utils (interactive map display and layer management), boundary_utils (study area boundary processing)
Key Features:
File Upload support for shapefiles, GeoJSON, and other vector formats
Custom study area boundary definition
Criterion Builder to add multiple criteria, define scoring methods, and assign weights
Interactive Map with real-time visualization of input datasets and results
Results Export to shapefiles or GeoJSON
Session Management to save and restore project state
Key Skills Demonstrated: Full-stack web development with Streamlit, object-oriented programming in Python, interactive web mapping with Folium, user experience (UX) design, software architecture and modular design, geospatial data processing and analysis
GeoChat - Conversational GIS Interface
Natural Language Processing
API Integration
Interactive Mapping
Python
Project Overview:
Created GeoChat, a Jupyter notebook-based application providing a natural language interface for geospatial data interaction. Users can perform common GIS operations through conversational commands rather than specialized syntax.
Data Management: Load existing files, download files from web URLs, list available datasets
Location-Based Features: Navigate to locations with natural language, find points of interest near locations
Spatial Analysis: Create buffers around features, calculate areas of geographic regions, measure distances between locations, get driving directions
Visualization: Interactive map display with automatic updates, points of interest mapping with appropriate icons, route visualization for driving directions
Example Commands: "go to New York City", "show parks", "calculate area", "buffer by 5 km", "measure distance from Denver to Seattle", "show route from Miami to Orlando"
Key Skills Demonstrated: Natural language processing (pattern matching, intent recognition), API integration (OpenStreetMap, Overpass, OSRM), interactive widget development with ipywidgets, user interface design for non-technical users, geospatial analysis automation, making GIS accessible to broader audiences
SynerGIS - Parallel Spatial Join Library (Rust)
Systems Programming
Parallel Computing
Python Interoperability
Rust
Python
Project Overview:
Developed SynerGIS, a high-performance Rust library for parallel spatial join operations, designed to be called from Python. The project demonstrates performance optimization through parallelization and low-level systems programming.
Key Libraries: geo and geo-types (geometric operations), rayon (data parallelism), rstar (R-tree spatial indexing), criterion (benchmarking)
Key Features:
Parallel Spatial Joins: Leverages multi-core CPUs for significant performance gains
R-tree Indexing: Uses spatial indexing (rstar) for efficient spatial queries
Memory Efficiency: Low-level memory management in Rust
Python Interoperability: Seamless integration with Python geospatial workflows via PyO3
Use Cases: Large-scale spatial join operations, performance-critical geospatial analysis, integration into Python data science workflows
Key Skills Demonstrated: Systems programming in Rust, parallel computing and concurrency, spatial algorithms and data structures (R-trees), cross-language interoperability (Rust-Python), performance optimization and benchmarking, low-level memory management, high-performance computing for geospatial applications
Minneapolis Neighborhoods Amenities Dashboard
Web GIS
Data Visualization
Automated Data Collection
Python
ArcGIS
Project Overview:
Created an interactive ArcGIS Dashboard providing a comprehensive view of all Minneapolis neighborhoods and their associated amenities to help users explore family-friendly, lively, and quiet areas.
Technical Implementation:
Platform: ArcGIS Online Dashboard
Data Source: OpenStreetMap via Overpass API
Processing: Python (ArcPy, Jupyter Notebook)
Key Libraries: arcpy, requests, geopandas
Amenity Categories: Bars, Restaurants, Cafes, Arts Centers, Music Venues, Schools, Kindergartens, Community Centers, Parks, Gyms
Key Features:
Interactive Map: Users can click on neighborhoods to see contained amenities
Amenity Details: Click on individual points to learn more about specific locations
Zoom Functionality: Explore specific neighborhoods in detail
Filtering: Filter by neighborhood characteristics
Comprehensive Coverage: All Minneapolis neighborhoods included
Key Skills Demonstrated: Web GIS dashboard design, API integration (Overpass API for OpenStreetMap data), Python automation with ArcPy, spatial analysis and geoprocessing, user-centered design for interactive mapping