Static Maps

Alaska, Wild Places

This is a series of static and web maps all about Alaska's public lands.


Food Resources

Covers regional food resources in western Maryland as of 2009.


Basin Population

Introducing Graduated Dot Maps symbolizing population.


Burn Severity Analysis

This is as series of burn severity maps of Southern California fires in 2003.


Garrett County Roads

This is a map of county roads developed for county officials.


Rice Production

Thematic cartography covering rice production in southeast Asia.


Trailtown: Frostburg

Illustrates amenities near a trailhead in Frostburg, Maryland.


Thunder Run Rally

This one illustrates popular routes for the Thunder Run Motorcycle Rally.


Web Maps

Ship Navigation Tracks

The map shows ship navigation tracks for several ports on the west coast. The data can be filtered and displayed.

Public Land in Alaska

I provided the back-end development of a web map depicting public lands in northern Alaska. A draggable marker can be moved to any geographic coordinate in Alaska and dynamically updates the input field.

Columbia River Basin

An inveractive SVG map, the map depicts dams in the Columbia River Basin. Each symbol is clickable and shows the power capacity for each dam.

BestPlaces Crime Mapping

Built on Carto, all maps on are dynamic choropleth visualizations, which means that the classes are recalculated on pan/zoom and the legend values are adjusted accordingly.

Responsive Historic Preservation Web App

This is a GPS enabled, fully responsive Historic Preservation app that displays photos and information about sites on the State and National Historic Register in La Grande, Oregon. The app is built on Leaflet, Bootstrap, Bootleaf and uses geoJson data.


Graduated Dot Maps

Graduated Dot Maps were initially developed as part of my Master's thesis research. I wrote a tool that automates development, which was originally written in Python but has since been ported to Java. The algorithm uses computer graphics algorithms, a variant of Lloyd's Algorithm, and DBSCAN point clustering to simplify dot maps. First, Dots are placed based on a sample of point locations. Once placed, coalescing dots are replaced by a larger dots of a higher value. This procedure is repeated until three classes of dots are generated.

Scripting & Databases

Repetitive processing tasks are common and necessary with spatial and non-spatial data. I leverage an array of libraries and databases to assist in the development and management of spatial data and maps. Libraries include, but are not limited to ArcPY, GDAL/OGR, Shapely, PostGIS and Mapnik.


Web based visualization is a constantly evolving field with many optional libraries, tools and data formats. I use PyGal to automate the development of SVG graphics, Leaflet/Mapbox.js/Carto to display and style data on multi-scale web maps, and use typical languages for web development (HTML, CSS, Javascript, jQuery).