GIS | SPATIAL ANALYSIS | CARTOGRAPHY | WEB DEVELOPMENT

Nathan Young - GIS & Spatial Analysis

I use GIS to understand the natural world. I spent 9 years doing web development, so I'm comfortable with the parts that aren't mapping: figuring out what the data actually means, wrangling it into shape, automating the repetitive work, and building something people can actually use. The projects below are recent coursework and self-directed work.

Selected work

01 · Spatial Analysis + Web Map

West Coast Dam Removals

D3 R Python

Every recorded dam removal in California, Oregon and Washington, mapped against ESA critical habitat and recorded presence for 27 native fish species. The data pipeline is written in R and Python, and the map is drawn with D3. The Methods tab covers how each dam was matched to fish habitat, and the audit results are published with the code. A similar version of this project previously appeared on this site. I moved the project out of the Esri environment, built my own site, and expanded the area of study from Oregon to California, Oregon, and Washington.

Open the map View the code
02 · Policy Analysis + StoryMap

Executive Order 14225 in Oregon

ArcGIS Pro StoryMaps Overlay analysis

Executive Order 14225 directed federal agencies to expand timber production, and the USDA followed by opening 112.6 million acres of national forest to expedited review. Although there are many threads to follow in these actions, I chose to visualize a dataset published by the USDA, overlaid with the critical habitat layers of the Marbled Murrelet and the Northern Spotted Owl.

Open the StoryMap
03 · Field Data Collection

Oregon White Oak Survey

Field Maps ArcGIS Pro AGOL

A mobile field-data-collection tool for surveying individual Oregon white oak (Quercus garryana): tree condition, conifer encroachment, restoration priority, etc. The form uses attribute domains, conditional form logic, required fields, and photo attachments, with a schema modeled on Washington Department of Fish and Wildlife and BLM Salem District oak-woodland protocols.

Open in Field Maps View in AGOL

The Field Maps link opens the survey in the ArcGIS Field Maps mobile app.

04 · Data Science / Python

Osprey Migration Rest Stops

pandas scikit-learn DBSCAN ArcGIS Pro

Where do osprey (Pandion haliaetus) stop to rest during their migration? These locations are important for conservationists to protect, in addition to the species' summer and winter locations. Even though this study was intended for a different purpose, I wanted to see if I could use the data from it to detect these locations. I wrote a Python script that uses Net Squared Displacement to flag stationary segments and clusters them with DBSCAN to find shared stopovers. It identified 78 stopovers, 24 of them shared.

View the poster View the repo
05 · Spatial Statistics

Oregon Precipitation Trend Surface

ArcGIS Pro Geostatistical Analyst Python Moran's I

I fit polynomial trend surfaces (orders 1 through 5) to 428 NOAA precipitation normals across Oregon, the same technique that produces a near-perfect regional gradient for textbook examples like Kansas in Gimond's Intro to GIS and Spatial Analysis. Oregon refused to cooperate: R² plateaued around 0.41 even at higher orders, and the zero-centered residual map redrew the Cascades and Coast Range out of the leftover error. I ran Global Moran's I on the residuals to check whether that visual clustering was real, and it was: I ≈ 0.59, essentially unchanged from order 1 to order 3, since a low-order polynomial is nearly flat across any single station's nearest neighbors and can't absorb mountain-range-scale structure. I built a 3D scene in ArcGIS Pro (and a matching Python figure) with the fitted surface as a floating sheet and each station suspended at its measured precipitation, so the residual is a visible vertical gap. The finding: only about 40% of Oregon's rainfall pattern is explained by location alone; the rest is exactly the local, spatially autocorrelated structure that motivates kriging.

Global Moran's I, 428 stations (k = 8 nearest neighbors)
Field Moran's I z-score
raw ann_prcp_in 0.717 32.07
residuals, order 1 0.594 26.64
residuals, order 2 0.594 26.70
residuals, order 3 0.594 26.66

All p < 0.000001. Removing the trend barely moves the ladder: the trend surface operates at state scale, but Moran's I here is measuring neighbor-scale clustering, so a bendier surface can't touch it. The autocorrelation lives at mountain-range scale, not polynomial order.

Adapted from Manuel Gimond's Intro to GIS and Spatial Analysis, ch. 12, run on Oregon data instead of the book's Kansas example.

A seal balancing a spinning Earth on its nose

Open to GIS analyst and spatial-data roles in the Portland area and remote.