Working With Thurston County Political Boundary Data

I've spent years pulling and cleaning Thurston County election precinct data, and I keep seeing people ask about the same old workflow that breaks at the same old points. Here is how to actually get it done without spending three days wrestling with shapefiles. The official county GIS portal lives at thurstoncountywa.gov/gis. The dataset you want is under the Elections layer group. It is not where most people expect it. You will find it nested under "State & Local Government" in the web map index, not in the main quick-access bar. I spent two weeks looking in the wrong section last year before someone on the state election board mailing list pointed me at it. From there you can download the precinct boundaries as a shapefile, GeoJSON, or Feature Service. The Feature Service is your best bet for anything interactive. It refreshes within a week of certification. The shapefiles are snapshots and they go stale fast. If you download a shapefile in April and try to use it for an August run, the boundary numbers will not match what the auditors have on file. I learned that the hard way during the 2024 cycle when my ward-level totals were off by roughly four hundred votes because a precinct had been split after the file was pulled.

Thurston County Odyssey Charting The Uncharted Political Waters Of Capital Olympia

That phrase describes the kind of analysis people do when they layer census redistricting data over current political precinct maps to spot mismatches between where people live and how the electoral geography is drawn. It is useful for understanding shifts around the Capitol area and the eastern part of the county near Yelm. It is also something beginners routinely mess up because they treat precincts and legislative districts as the same thing. They are not. A single state house district can contain seven or eight voting precincts in Thurston County, and some precincts cross county lines entirely. The workflow I use starts with QGIS. Open the Feature Service URL directly instead of downloading. Set the coordinate reference system to WGS 84 / UTM Zone 10N, which is EPSG:32610. That is the local standard for Thurston County parcel and boundary data. If you skip that step and stay in decimal degrees, your distance calculations will be garbage and your overlay operations will drift. I also pull the county's official legend layer so the precinct IDs line up with what the auditor publishes. Mismatches happen when the GIS team updates a boundary and the legend file does not sync on the same revision date. Next I join the voter registration tallies from the Auditor's monthly reports. Those come as CSVs with precinct-level columns. The join key is the PrecinctID field. Make sure it is formatted as text before you join, not numeric, because the precinct codes include leading zeros and some records use a different numbering scheme than others. If you do not cast the field to text, QGIS will skip thousands of rows silently. You will think the join worked because no error pops up, and then you will wonder why half your precincts show null values.

After the join, I run a quick spatial verification against the auditor's certified district map. This catches the edge cases where a new development pushed a handful of addresses into a different voting precinct without a corresponding legend update. In one instance I found a subdivision off Harrison Road that had been moved to a different precinct six months earlier, but the county map layer still showed the old boundary. I flagged it through the auditor's GIS help desk and got a corrected feature class within four business days. The tricky part comes when you want to go beyond precincts and look at legislative district alignments. Thurston County has portions of multiple state House and Senate districts, and the boundaries do not follow precinct lines at all. They are drawn on paper and then applied over the voting geography. If you are trying to map political behavior at the legislative level, you need the official redistricting shapefile from the Washington State Redistricting Commission, not the precinct data. Those are published after each decennial census and again when the legislature draws new lines. The most recent cycle updated district borders effective for the 2022 elections, and the 2024 cycle introduced minor adjustments for population shifts around the Lacey and Tumwater areas. One counter-intuitive thing most people miss: precinct data in Thurston County is actually released in two different systems. The Auditor maintains the voter-facing precinct map for ballot purposes. The County Engineering department maintains a separate boundary layer for road and parcel references. They are not perfectly aligned. If you are doing anything that involves physical addresses or street-level analysis, use the Engineering layer and reconcile it yourself. Otherwise you will hit cases where a property sits inside one voting precinct but is mapped outside it in the parcel layer, and your centroid calculations will be wrong.

Get the Full Details

Why Is Olympia The Capital Of Washington? - Best Hotels Home
Why Is Olympia The Capital Of Washington? - Best Hotels Home

Another pitfall involves the Olympia city limits overlap. The city annexed several parcels in thesoutheast corridor over the last few cycles, and those parcels changed voting precincts but not legislative districts. If you are analyzing election results over time, do not assume a stable geographic unit. What looked like District 43 precinct activity in 2019 may not match the same precincts in 2024 because the map shifted under you. For the actual analysis piece, I usually aggregate to the precinct level first, compute partisan lean or turnout metrics, then dissolve by legislative district if that is what you need. Doing it the other way around loses you the precinct resolution and you cannot go back. I also keep a changelog of every download date and source revision number. When someone challenges a number months later, you need to prove which version of the boundary data you were using. There is no apology that sounds better than citing the exact layer ID from the feature service. If you need an automated way to pull this data regularly, the county offers a REST endpoint that returns JSON. I wrote a small Python script using requests and geopandas to fetch the latest layer, reproject it, and merge it with the Auditor's CSV export. It runs once a week and writes the result to a local SQLite database. Takes about nine minutes end to end on a normal machine. You can find similar scripts on GitHub under the open data tags for Thurston County. The county does not host an official download package with a single button, but the pieces are all publicly accessible if you know where to look.

The honest downside is that none of this is well documented. The GIS team is competent but understaffed, and the documentation for their web maps is scattered across three different portal pages. There is no API key system, no ticket queue, and no release notes. You learn the quirks through trial and error. Some of the older shapefiles still reference a coordinate system called NAD_1983_StatePlane_Washington_South_FIPS_4603, which is valid but not what QGIS expects by default. You have to manually assign it and transform it, or your polygons will appear somewhere in the Pacific Ocean until you catch the mistake. My recommendation is to start simple, validate against a known result, and only then expand the scope. Pull one precinct, verify its centroid matches a parcel you know exists, and check that the voter count aligns with the Auditor's published monthly report. Once that checks out, layer in the next piece. Rushing the joins is the fastest way to produce nonsense maps that look convincing enough to share and damaging enough to waste everyone's time correcting.