Weird Weather In Washington State

Authors

Masha Vernik

Camilla Green

Juan Martinez

NLU MS Computer Science Students

Weird Weather: Precipitation and Temperature Variability for Assessing Agricultural Vulnerability to Climate Change

Overview

As climate change is causing more frequent and extreme weather events like droughts, floods, and wildfires across the globe, another impact tends to fly under the radar: weather variability. There is building evidence that climate change is causing increasingly unpredictable precipitation and temperature patterns around the world (Pendergrass et al. 2017; Vargas Zeppetello and Battisti 2020).

This means that long-held beliefs around how much it will rain and when are becoming outdated and future rainfall patterns are more uncertain. It means that previous assumptions around when it will be warm and when it will be cold are disrupted. While a city-dweller might not mind if the spring rains come earlier or later or not at all, disruption in precipitation patterns has a big impact on people who earn their livelihoods from the land.

I learned this in my interviews with farmers in western Washington for my M.S. thesis (Vernik 2025). My research investigated the role of crop diversity in climate resilience among organic farms in western Washington. I drove across the area west of the Cascade mountains, known for lush green forests and rainy weather, asking farmers about how they experience and adapt to climate change. Nearly all of the twenty-eight farmers I interviewed mentioned unpredictable weather as a climate impact they’re feeling on their farms. One farmer shared:

“It’s unpredictable. You know, I don’t know. We can kind of count on having fairly consistent rain most of the way through June a lot of the times. But we’ve seen a couple of years where it’s been dry, and then there’s been years where I’ve been out here putting pumps on the river in like March and April, which is crazy.”

One of the vegetable farms Masha visited for her M.S. research on crop diversity and climate resilience. Many interviewed farmers reported dealing with unpredictable rain and temperature patterns. Photo credit: Masha Vernik One of the vegetable farms Masha visited for her M.S. research on crop diversity and climate resilience. Many interviewed farmers reported dealing with unpredictable rain and temperature patterns. 1

Unusual temperature and precipitation patterns are not isolated to western Washington. Other research also reports farmers experiencing variable weather patterns across the globe, from Ghana to India to the Southeastern United States and beyond (Shortridge 2019; Thimmegowda et al. 2025; Thornton et al. 2014; Yeleliere, Antwi-Agyei, and Guodaar 2023).

Being unable to predict weather patterns poses problems for farmers, especially those using rainfed agriculture who do not rely on irrigation for watering their crops. For example, a farmer may plant crops expecting rain in spring to water them, but if the rain doesn’t come when expected, those crops can fail. While a certain amount of variability is inherent to climate in general, climate change seems to be making naturally stochastic weather patterns even less predictable (Pendergrass et al. 2017).

Being able to identify areas with increasingly variable weather can guide future research in climate vulnerability and adaptation. It’s important to note that a system’s vulnerability is not only based on how much weather stress it is exposed to, but also how sensitive it is to that exposure and its capacity to adapt to changing conditions (Adger 2006). Nevertheless, weather stress is an important component to measure, and weather variability can contribute significantly to that stress.

This module will teach you how to calculate temperature and precipitation variability.

This module uses anomalies as a stepping stone to variability, where an anomaly is the difference between the temperature/precipitation for a county on a given day and the average for that day over the preceding 15 years. Higher anomalies indicate more unpredictable weather and can indicate the counties in which farmers may be exposed to increased variability. In other words, this code will tell us how strange the weather was in spring 2024, but it won’t tell us how variable the weather is year over year – multiple years would have to be combined to calculate this.

This module calculates anomalies for each day between May 1st and July 1st, 2024 for all counties in Washington state, but the code can be applied to any location for any time period where there is climatological data. Though outside the scope of this module, variability data could be integrated with socio-economic data to get a broader picture of vulnerability.

Note

When we use the following terms in this module, we refer to these definitions:

  • Normals: A county’s average temperature/precipitation for each day in May and June over 15 years (2009-2023)
  • Anomalies: Difference between the temperature/precipitation for a county for a given time period and the average for that time period over the preceding 15 years. In other words, how unpredictable the weather is for a single year.
  • Variability: Combined anomalies from many years. Or, how unpredictable the weather is over many years.
  • Vulnerability: “State of susceptibility to harm from exposure to stresses associated with environmental and social change and from the absence of capacity to adapt” (Adger 2006)

Objectives

In this lesson, we will demonstrate how to:

  • Access Google Earth Engine (GEE) and initialize the Python API
  • Import county data using U.S. Census TIGER/County data and visualize boundaries in Washington State
  • Retrieve temperature and precipitation data using the ERA5-Land Daily Aggregated database the GEE Data Catalog
  • Compute climatological normals (2009–2023) for each day in May and June for each county in Washington state
  • Calculate anomalies by subtracting 2024 temperature and precipitation data from normals data for each day in May and June for each county in Washington state
  • Visualize temperature and precipitation anomalies across Washington counties using interactive maps

Introduction

Getting Started with Google Earth Engine (GEE)

Google Earth Engine (GEE) is an online, cloud-based platform that allows you to access and analyze satellite imagery and global geospatial datasets.

GEE requires registration. Since this is for educational purposes, a pricing plan is not required for noncommercial registration. For more information accessing GEE, please visit Earth Engine Access.

Once you have registered and enabled the GEE API, we can now work with GEE in Python!

For more information, please see An Intro to the Earth Engine Python API

First of all, run the following cell to initialize the API. The output will contain instructions on how to grant this notebook access to Earth Engine using your account. To find out the project ID, Go to https://console.cloud.google.com/; In the top bar, click the dropdown next to the current project name. You’ll see a list of projects. The Project ID is in the second column.

import ee

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='PROJECT_ID') #replpace with your project ID
Hello from the Earth Engine servers!

The code above should generate a GEE token, which this application will request for you to paste.

Working with U.S. Census TIGER data

Python packages

This lesson uses the following Python packages to work with Google Earth Engine:

  • ee and earthengine-api – provide the Python interface to Google Earth Engine, enabling authentication, dataset access (e.g., TIGER counties, ERA5-Land), and cloud-based geospatial processing.
  • pandas – manages tabular data, making it easy to join county-level statistics, calculate anomalies, and export results.
  • numpy – supports efficient array-based numerical computations, useful for handling large climate datasets.
  • folium – creates interactive web maps for visualizing county boundaries and anomaly layers directly in the notebook.
  • matplotlib – generates static plots, such as time series of temperature and precipitation anomalies.
  • datetime – provides tools to work with calendar dates (e.g., mapping day-of-year values to actual dates).
  • branca.colormap – adds customized color scales to Folium maps, helping to represent anomaly values clearly.

Acquiring GEE Data

Together, these packages let us bridge GEE’s cloud-based geospatial data with Python’s data analysis tools, making it possible to calculate, store, and visualize climate and census information at the county level.

# import packages
import folium
import matplotlib.pyplot as plt
import pandas as pd
import datetime
import branca.colormap as cm

import matplotlib.dates as mdates

from datetime import datetime, timedelta

Once the Python packages are imported, we can start working with data on GEE. The following code will request U.S. Census Tiger boundaries as geospatial polygon features. In this case we are requesting the state of Washington (code 53).

# U.S. Census counties (2020)
counties = ee.FeatureCollection("TIGER/2018/Counties")

# Filter to Washington State (STATEFP = '53')ß
wa_counties = counties.filter(ee.Filter.eq("STATEFP", "53"))

After loading the boundary features, we can map WA county boundaries on GEE for a quick look:

# # Create the map
# Map1 = geemap.Map(center=[47.5, -120], zoom=6)

# # Add Washington counties layer
# Map1.addLayer(wa_counties, {}, "Washington Counties")

# # Display the map
# Map1


# Convert the Earth Engine FeatureCollection to GeoJSON
wa_counties_geojson = ee.FeatureCollection(wa_counties).getInfo()

# Create a folium map
Map1 = folium.Map(location=[47.5, -120], zoom_start=6)

# Add the counties as a GeoJSON overlay
folium.GeoJson(
    wa_counties_geojson,
    name="Washington Counties"
).add_to(Map1)

# Add layer control
folium.LayerControl().add_to(Map1)

# Display the map
Map1
Make this Notebook Trusted to load map: File -> Trust Notebook

Figure 1: This is a time series of the mean daily temperature anomaly across all counties in Washington. It shows that most days were colder than the ‘normal’ temperature for that day across the entire state.

Importing ERA5 Land Daily Aggregated image collection

The GEE Data Catalog is a great source for planetary-scale Earth science data.

From this catalog, we will be working with the ERA5-Land Daily Aggregated - ECMWF Climate Reanalysis.

Google Earth Engine stores the ERA-5 Land dataset as an “image collection”, which is a series of ‘images’ or gridded raster datasets, each representing climate variables in a given location at a particular time.

From the GEE Data catalog, we can import the ERA5-Land Daily Aggregated dataset from Google Earth Engine and prepare it by filtering for the years of interest, selecting key climate variables, and clipping the data to Washington State:

#Import data
era5 = ee.ImageCollection("ECMWF/ERA5_LAND/DAILY_AGGR")

# Filter to years and selected bands
era5 = era5.filterDate('2009-01-01', '2024-12-31').select('temperature_2m', 'total_precipitation_sum')

# Clip each image to Washington state (functionally map over the collection)
era5 = era5.map(lambda img: img.clip(wa_counties))

Filter Data from ERA5 depending on the days and years of interest and data availability. For this module, we are using 2024 as the focal year, and calculating normals from the preceding 15 years (2009 - 2023).

# Filter to list of years 

# Creating list of normals years for ERA 5 land
era5_hist = era5.filterDate('2009-01-01', '2023-12-31')


# Creating list of days for the year
era5_2024 = era5.filterDate('2024-01-01', '2024-12-31')

Calculate Normals from 2009 - 2023

We can define a function to calculate county-level averages for precipitation and temperature from GEE images. This function reduces each image over the county boundaries, assigns a county identifier, and ensures that calculations work even if the image projection scale is missing.

# Function to get average values for each county in a FeatureCollection
# Safer Avg function with fallback scale
# Safe average function with fixed scale and GEOID to county_id
def Avg(image, counties, fallback_scale=10000):
    # Safely get scale (if projection is valid)
    scale = ee.Number(fallback_scale)
    try:
        proj_scale = image.projection().nominalScale()
        scale = ee.Algorithms.If(proj_scale, proj_scale, scale)
    except:
        pass  # fallback already defined

    # Reduce image over counties
    stats = image.reduceRegions(
        collection=counties,
        reducer=ee.Reducer.mean(),
        scale=scale
    )

    # Ensure 'county_id' property is present (based on GEOID)
    def add_ids(f):
        return f.set('county_id', f.get('GEOID'))

    return stats.map(add_ids)

Next, we extract county identifiers and names from the TIGER counties dataset and use them to initialize empty DataFrames that will store temperature and precipitation values.

# Get both county GEOIDs and names
county_ids = wa_counties.aggregate_array('GEOID').getInfo()
county_names = wa_counties.aggregate_array('NAME').getInfo()

# Initialize DataFrames
temps_1 = pd.DataFrame({'county_id': county_ids, 'county_name': county_names})
precips_1 = pd.DataFrame({'county_id': county_ids, 'county_name': county_names})

After setting up the DataFrames, loop through selected days of the year to calculate county-level climatological averages of temperature and precipitation (2009–2023), storing the results in DataFrames for later comparison with observed 2024 values. In this example, we calculate normals for each day in May and June (May 1 to July 1, days 121 to 182), but you can calculate a fewer number of days for educational purposes to reduce processing time (e.g. May 1 to May 3, days 121 to 124).

# Loop through days of year (DOY 121–123, i.e., May 1–3 for testing)
for day in range(121, 182): 
    day_str = str(day)

    # 1. Get composite average for this DOY across all years
    day_data = era5_hist.filter(ee.Filter.calendarRange(day, day, 'day_of_year'))
    composite = day_data.mean()

    # 2. Reduce over counties
    reduced = composite.reduceRegions(
        collection=wa_counties,
        reducer=ee.Reducer.mean(),
        scale=10000  # ERA5 resolution
    )

    # Add county_id and county_name to each feature
    def add_county_info(f):
        return f.set({
            'county_id': f.get('GEOID'),
            'county_name': f.get('NAME')
        })

    reduced = reduced.map(add_county_info)

    # 3. TEMPERATURE EXTRACTION
    temp_data = reduced.map(lambda f: ee.Feature(None, {
        'county_id': f.get('county_id'),
        'county_name': f.get('county_name'),
        day_str: f.get('temperature_2m')
    })).reduceColumns(
        reducer=ee.Reducer.toList(3),
        selectors=['county_id', 'county_name', day_str]
    ).getInfo()['list']

    temp_df = pd.DataFrame(temp_data, columns=['county_id', 'county_name', day_str])
    temps_1 = pd.merge(temps_1, temp_df, on=['county_id', 'county_name'], how='left')

    # 4. PRECIPITATION EXTRACTION
    precip_data = reduced.map(lambda f: ee.Feature(None, {
        'county_id': f.get('county_id'),
        'county_name': f.get('county_name'),
        day_str: f.get('total_precipitation_sum')
    })).reduceColumns(
        reducer=ee.Reducer.toList(3),
        selectors=['county_id', 'county_name', day_str]
    ).getInfo()['list']

    precip_df = pd.DataFrame(precip_data, columns=['county_id', 'county_name', day_str])
    precips_1 = pd.merge(precips_1, precip_df, on=['county_id', 'county_name'], how='left')
county_ids = wa_counties.aggregate_array('GEOID').getInfo()
county_names = wa_counties.aggregate_array('NAME').getInfo()

# Create base DataFrames with both ID and name
temps_daily1 = pd.DataFrame({'county_id': county_ids, 'county_name': county_names})
precips_daily1 = pd.DataFrame({'county_id': county_ids, 'county_name': county_names})

Loop over each day in 2024 to extract daily temperature and precipitation values for every county in Washington. These values are stored in DataFrames (temps_daily1 and precips_daily1) to be compared against the long-term climatological normals. In this example, we calculate daily values for each day in May and June (May 1 to July 1, days 121 to 182), but you can calculate a fewer number of days for educational purposes to reduce processing time (e.g. May 1 to May 3, days 121 to 124)..

# Loop over each day in 2024 (example: DOY 121–123)
for doy in range(121, 182):#182

    
    date = datetime(2024, 1, 1) + timedelta(days=doy - 1)


    # Use DOY as string for column name
    doy_str = str(doy)

    # Get the image for the day
    img = era5_2024.filterDate(date.strftime('%Y-%m-%d')).first()

    if img is None:
        print(f"No image found for DOY {doy}")
        continue

    # Reduce to mean per county
    reduced = img.reduceRegions(
        collection=wa_counties,
        reducer=ee.Reducer.mean(),
        scale=10000
    )

    # Add county metadata
    def add_county_info(f):
        return f.set({
            'county_id': f.get('GEOID'),
            'county_name': f.get('NAME')
        })

    reduced = reduced.map(add_county_info)

    # ------- TEMPERATURE --------
    temp_data = reduced.map(lambda f: ee.Feature(None, {
        'county_id': f.get('county_id'),
        'county_name': f.get('county_name'),
        doy_str: f.get('temperature_2m')
    })).reduceColumns(
        reducer=ee.Reducer.toList(3),
        selectors=['county_id', 'county_name', doy_str]
    ).getInfo()['list']

    temp_df = pd.DataFrame(temp_data, columns=['county_id', 'county_name', doy_str])
    temps_daily1 = pd.merge(temps_daily1, temp_df, on=['county_id', 'county_name'], how='left')

    # ------- PRECIPITATION --------
    precip_data = reduced.map(lambda f: ee.Feature(None, {
        'county_id': f.get('county_id'),
        'county_name': f.get('county_name'),
        doy_str: f.get('total_precipitation_sum')
    })).reduceColumns(
        reducer=ee.Reducer.toList(3),
        selectors=['county_id', 'county_name', doy_str]
    ).getInfo()['list']

    precip_df = pd.DataFrame(precip_data, columns=['county_id', 'county_name', doy_str])
    precips_daily1 = pd.merge(precips_daily1, precip_df, on=['county_id', 'county_name'], how='left')

Calculating Anomalies from Precipitation and Temperature Data

We can observe daily temperature anomalies by computing how much the observed daily temperatures differ from the long-term climatological averages for each county. We can extract daily temperature and precipitation data and compare it to the normalized data calculated above.

This chart displays the difference between 2024 temperatures and the average 2009-2023 temperatures for each day in May and June. The column number represents the day of the year (e.g. 121 is May 1, 122 is May 2, etc.).

# Ensure both have same index and columns
obs = temps_daily1.set_index('county_id').copy()
clim = temps_1.set_index('county_id').copy()

# Extract day columns (e.g., '121'–'365')
day_cols = [col for col in obs.columns if col.isdigit() and col in clim.columns]

# Subset and align
obs_days = obs[day_cols].astype(float).sort_index()
clim_days = clim[day_cols].astype(float).sort_index()

# Subtract climatology from observed: get daily anomalies
temps_anomalies = obs_days - clim_days



# Convert DOY column names to datetime (2024 is a leap year)
new_columns = {
    col: datetime(2024, 1, 1) + timedelta(days=int(col) - 1)
    for col in temps_anomalies.columns
}

temps_anomalies = temps_anomalies.rename(columns=new_columns)

temps_anomalies.head()
2024-04-30 2024-05-01 2024-05-02 2024-05-03 2024-05-04 2024-05-05 2024-05-06 2024-05-07 2024-05-08 2024-05-09 ... 2024-06-20 2024-06-21 2024-06-22 2024-06-23 2024-06-24 2024-06-25 2024-06-26 2024-06-27 2024-06-28 2024-06-29
county_id
53001 -5.497249 -4.624398 -3.870438 -2.856332 1.465591 -1.644476 -4.648508 -4.667036 -4.255147 -0.782847 ... 2.316339 2.914441 4.098144 2.630508 -3.131191 0.369031 2.985374 -4.530305 -5.479516 -2.049092
53003 -5.542081 -5.544621 -4.568444 -2.375366 -0.207502 -1.233954 -3.873746 -4.434349 -4.132813 -0.083915 ... 2.970672 4.058526 4.064831 3.805904 0.210633 2.317443 4.487826 -3.038937 -4.549560 -1.272899
53005 -5.531265 -4.904690 -3.798700 -3.350230 1.729397 -3.208470 -4.720293 -5.039155 -4.525631 -0.792651 ... 2.625623 3.318214 4.225440 2.160751 -2.733761 0.708263 2.923497 -5.108097 -5.152670 -1.016737
53007 -4.404568 -4.427515 -2.366732 -0.684969 0.766420 -1.448638 -2.850548 -4.591914 -3.463391 1.562745 ... 2.159018 3.367146 2.998944 -0.698814 -3.327717 -0.212202 2.320405 -5.638859 -4.277051 0.132867
53009 -2.998318 -2.067569 -1.218782 0.626556 0.311184 0.043651 -1.857758 -2.475220 -1.651681 2.078279 ... 2.810520 3.882627 1.489877 -1.458762 -2.193350 -0.579422 -0.662901 -3.408296 -2.216497 -0.376786

5 rows × 61 columns

This chart displays the difference between 2024 precipitation amount and the average 2009-2023 precipitation for each day in May and June. The column number represents the day of the year (e.g. 121 is May 1, 122 is May 2, etc.).

# Ensure both have same index and columns
obs = precips_daily1.set_index('county_id').copy()
clim = precips_1.set_index('county_id').copy()

# Extract day columns (e.g., '121'–'365')
day_cols = [col for col in obs.columns if col.isdigit() and col in clim.columns]

# Subset and align
obs_days = obs[day_cols].astype(float).sort_index()
clim_days = clim[day_cols].astype(float).sort_index()

# Subtract climatology from observed: get daily anomalies
precips_anomalies = obs_days - clim_days

new_columns = {
    col: datetime(2024, 1, 1) + timedelta(days=int(col) - 1)
    for col in precips_anomalies.columns
}

precips_anomalies = precips_anomalies.rename(columns=new_columns)
 

precips_anomalies.head()
2024-04-30 2024-05-01 2024-05-02 2024-05-03 2024-05-04 2024-05-05 2024-05-06 2024-05-07 2024-05-08 2024-05-09 ... 2024-06-20 2024-06-21 2024-06-22 2024-06-23 2024-06-24 2024-06-25 2024-06-26 2024-06-27 2024-06-28 2024-06-29
county_id
53001 -0.000599 -0.000334 -0.000397 -0.000459 -0.001581 0.005306 0.002906 0.000243 -0.000881 -0.000203 ... -0.000436 -0.000041 -0.000035 -0.000410 -0.000263 -0.000129 -0.001113 -0.000097 -0.000133 -0.000055
53003 0.000802 0.001983 -0.001771 -0.001369 -0.002874 0.006837 0.002815 0.000983 -0.002382 -0.001014 ... -0.001885 0.000009 -0.000253 -0.001132 -0.001489 -0.001216 -0.001730 -0.000138 -0.000601 -0.000286
53005 -0.000170 -0.000247 -0.000128 -0.000378 -0.000956 0.008708 0.000395 0.000060 -0.000494 -0.000239 ... -0.000344 -0.000009 -0.000067 -0.000327 -0.000238 -0.000167 -0.000339 0.000008 -0.000129 -0.000104
53007 0.000179 0.000402 -0.002110 -0.001942 -0.002176 0.000096 0.002626 0.001002 -0.001538 -0.000499 ... -0.000087 -0.000546 0.000546 -0.001372 -0.001804 -0.001064 0.003098 0.004145 -0.000633 -0.000429
53009 0.003841 -0.002358 -0.005998 -0.004588 0.012545 0.001924 0.006162 0.000842 -0.002239 -0.001605 ... -0.000926 -0.000725 -0.000681 -0.001816 -0.002239 -0.002165 0.001264 0.002580 -0.001203 0.001293

5 rows × 61 columns

Once we have calculated anomalies for each day, the data can be used to plot a timeseries graph.

# List of anomaly DataFrames and their labels
anomalies_df = [
    ("Temperature", temps_anomalies),
    ("Precipitation", precips_anomalies)
]

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(12, 8), sharex=True)

for ax, (label, anomalies) in zip(axes, anomalies_df):

    # Select datetime columns only
    date_cols = pd.to_datetime(anomalies.columns, errors="coerce")
    mask = date_cols.notna()

    # Mean anomaly across counties for each date
    daily_mean = anomalies.loc[:, mask].mean(axis=0)
    daily_mean.index = date_cols[mask]
    daily_mean = daily_mean.sort_index()

    # Plot
    colors = ["red" if v < 0 else "blue" for v in daily_mean.values]
    ax.plot(daily_mean.index, daily_mean.values, color="gray", linewidth=1.5)
    ax.scatter(daily_mean.index, daily_mean.values, c=colors, edgecolor="black", s=40)
    ax.axhline(0, color="black", linestyle="--", linewidth=1)

    ax.set_title(f"Mean Daily {label} Anomalies Across All Counties (2024)")
    ax.set_ylabel("Anomaly")
    ax.grid(True)

# ---- X-axis: show dates ----
axes[-1].set_xlabel("Date")
axes[-1].xaxis.set_major_locator(mdates.DayLocator(interval=2))  # every 7 days
axes[-1].xaxis.set_major_formatter(mdates.DateFormatter("%b %d"))


fig.autofmt_xdate()  # rotate labels so they don't overlap
plt.tight_layout()
plt.show()

Figure 2: This is a time series of the mean daily precipitation anomaly across all counties in Washington. It shows that most days saw slightly below average precipitation than the ‘normal’ precipitation for that day, but when there was rainfall, it was much higher than average.

We can also use the data to calculate an average anomalies per county, and use GEE to plot the data on an interactive map:

precips_anomalies['avg_anomaly'] = precips_anomalies.mean(axis=1)
temps_anomalies['avg_anomaly'] = temps_anomalies.mean(axis=1)


precips_anomaly_result = precips_anomalies[['avg_anomaly']].copy()
precips_anomaly_result.index.name = 'county_id'

temps_anomaly_result = temps_anomalies[['avg_anomaly']].copy()
temps_anomaly_result.index.name = 'county_id'


temps_anomaly_result.head()
avg_anomaly
county_id
53001 -1.041279
53003 -0.279380
53005 -0.944297
53007 -1.352831
53009 -0.441217
# Step 1: Create EE dictionaries from each anomaly DataFrame
temps_anomaly_dict = ee.Dictionary(temps_anomaly_result['avg_anomaly'].to_dict())
precips_anomaly_dict = ee.Dictionary(precips_anomaly_result['avg_anomaly'].to_dict())

# Step 2: Define a function to set both anomalies to each county feature
def add_both_anomalies(feature):
    geoid = feature.get('GEOID')
    temp_val = temps_anomaly_dict.get(geoid)
    precip_val = precips_anomaly_dict.get(geoid)
    return feature.set({
        'avg_temp_anomaly': temp_val,
        'avg_precip_anomaly': precip_val
    })

# Step 3: Apply to the FeatureCollection
wa_counties_anomaly = wa_counties.map(add_both_anomalies)
# View the first feature (prints a dictionary of properties including avg_anomaly)
print(wa_counties_anomaly.first().getInfo())
{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-123.03842505513434, 47.52022697671061], [-123.03712338681052, 47.52022694173501], [-123.03649500317054, 47.52022694515167], [-123.03595643772823, 47.520226964995516], [-123.03546280327656, 47.52027182732147], [-123.03492416276187, 47.52027178186103], [-123.03478950261062, 47.520271853946085], [-123.03317374380099, 47.52027181311768], [-123.0320067111646, 47.520271817077706], [-123.02989721232956, 47.52027180022522], [-123.02801207378172, 47.52027182594219], [-123.02747352822992, 47.520271793599555], [-123.02689006454061, 47.52027178900823], [-123.02635149571962, 47.520271842063124], [-123.02585766573985, 47.52031671709755], [-123.0247356401448, 47.52031674486688], [-123.02316471624272, 47.520316707272535], [-123.02285062014514, 47.52031671842357], [-123.02231198353363, 47.520316687659246], [-123.02069613247596, 47.52031672675315], [-123.01957402990368, 47.52031672168074], [-123.0191701289741, 47.52031668187846], [-123.01782365155627, 47.520316722896105], [-123.0171054598988, 47.52031673219281], [-123.01571410370869, 47.52031667448163], [-123.01535499798868, 47.52031671736121], [-123.01504091289458, 47.52031670048769], [-123.01463691723552, 47.52031667308499], [-123.0139636267253, 47.52031672412305], [-123.01360462677366, 47.520316726504866], [-123.01320063371931, 47.520316692472974], [-123.01275180169262, 47.52031673936927], [-123.01239272675171, 47.52031667779809], [-123.01118091026429, 47.520316671295824], [-123.009071347284, 47.52031673967816], [-123.00866743939, 47.52031674370936], [-123.00803908260632, 47.52031672746135], [-123.00512164276857, 47.52031673063382], [-123.00296724896042, 47.52027178993289], [-123.00126171025268, 47.52027184362775], [-122.99901747596427, 47.52027181556992], [-122.99636943004647, 47.5202718285406], [-122.99417010586866, 47.52027184538572], [-122.99363148718054, 47.52027182271681], [-122.99340709271067, 47.520316707785724], [-122.99237481073507, 47.520361577496836], [-122.99174640863265, 47.52040651100711], [-122.98914317645531, 47.520541123794224], [-122.98730296149084, 47.520630856708884], [-122.98627066739556, 47.52067574724542], [-122.9852383758635, 47.52072062568522], [-122.9842061170649, 47.52081043364966], [-122.98317372658285, 47.52085532123667], [-122.9826351009234, 47.52085532331859], [-122.98115404411635, 47.52094507826118], [-122.9801216611719, 47.520989930082685], [-122.97697979354096, 47.52116947853384], [-122.97491522271201, 47.52130413262571], [-122.9722222040327, 47.52143877567782], [-122.97195292593332, 47.52143881915657], [-122.97163866171806, 47.521438805521925], [-122.97056154481214, 47.521483666165025], [-122.9698433814053, 47.52148365719856], [-122.96966384744141, 47.5214836309642], [-122.96948428752344, 47.52148369665016], [-122.96930479397194, 47.5215285199314], [-122.9691252341501, 47.52152858488409], [-122.96876616714266, 47.5215285291077], [-122.96840707461517, 47.521528564146806], [-122.96813780055882, 47.52152859589944], [-122.96777873514998, 47.52152853607277], [-122.96750946185563, 47.521528565892616], [-122.9671953179637, 47.52157344567276], [-122.96683615072533, 47.52157341524914], [-122.96652196960298, 47.52157344228745], [-122.96625269754192, 47.521573468246196], [-122.96589371166031, 47.52157345971966], [-122.96562436349983, 47.521573424719485], [-122.96531011693192, 47.52161833107506], [-122.96495113218825, 47.52161831868943], [-122.96459204505607, 47.52161833809175], [-122.96423295850465, 47.521618356021115], [-122.96387397550382, 47.52161833921824], [-122.96360462950626, 47.52161829800826], [-122.96329038327686, 47.52166319719529], [-122.96297620649507, 47.52166321151892], [-122.96266203015794, 47.521663224715006], [-122.96234785426557, 47.52166323678352], [-122.96198887392855, 47.521663212256506], [-122.9615848834242, 47.52166321709603], [-122.9601485888592, 47.521708081239865], [-122.95992415816175, 47.521752974779986], [-122.95880201211813, 47.52175296292], [-122.95835322447104, 47.5217978587188], [-122.95067819129652, 47.52202225839529], [-122.94740169493647, 47.52215691789656], [-122.94569622176498, 47.52224670033458], [-122.94340714463941, 47.52233641721794], [-122.94129767298769, 47.5224262183302], [-122.93968182510056, 47.52251597654807], [-122.93887385731122, 47.52251596331822], [-122.93680929865612, 47.52247111565765], [-122.93546272827507, 47.52242621323031], [-122.93474466072448, 47.52242625250348], [-122.93308401842393, 47.5224262284885], [-122.93268004650454, 47.522381340626175], [-122.93214144537168, 47.52238130921258], [-122.93200671151195, 47.522381348828574], [-122.93115402558878, 47.522381364824156], [-122.92967284313215, 47.52233647042852], [-122.92922405374972, 47.52233645858541], [-122.92778768180163, 47.522336436226], [-122.92706964617751, 47.52229156078626], [-122.92644123102866, 47.522291546271795], [-122.92536401040923, 47.5222915878865], [-122.92047174637702, 47.52215694004471], [-122.92015760046745, 47.52215689305077], [-122.91948428103863, 47.52215689716154], [-122.91908038774311, 47.522156949569876], [-122.91881114342655, 47.522156921955926], [-122.91697084305606, 47.52211204506486], [-122.91535508216644, 47.52206716815419], [-122.91243761519813, 47.52202228557632], [-122.90956516735737, 47.52197739391155], [-122.908487933417, 47.5219325014879], [-122.90790444748257, 47.52193247575588], [-122.90548070208692, 47.521887604383416], [-122.9050319142447, 47.52188765299967], [-122.90027433686105, 47.52184275486832], [-122.89421507206963, 47.52175299392324], [-122.88618094204789, 47.52166321982734], [-122.88326355513271, 47.521618320376135], [-122.87733898601128, 47.521483688787384], [-122.87442155645584, 47.52143880447054], [-122.87347896967167, 47.52143878408347], [-122.87222222377719, 47.521393900299636], [-122.86477151510842, 47.52130412519395], [-122.85682727677427, 47.521304113788354], [-122.85512165111236, 47.52130412993029], [-122.84973568483926, 47.52134898611371], [-122.84771594436143, 47.52134901845491], [-122.84520249663221, 47.52134899411273], [-122.84457414517554, 47.521349037665416], [-122.84408040364956, 47.521393932677825], [-122.84327246862588, 47.52139390046052], [-122.84304804967336, 47.52139392054547], [-122.84224019509192, 47.52139393793981], [-122.84111815568941, 47.52134901564375], [-122.84093854532958, 47.52134903537935], [-122.84048973500997, 47.521304151546296], [-122.84031022836758, 47.521304136874356], [-122.84004090398888, 47.521304176860994], [-122.83981641218384, 47.52130412951628], [-122.83977160631179, 47.521304123765205], [-122.83923298266204, 47.52125928815926], [-122.8390983859286, 47.52125924391321], [-122.83461005803403, 47.52107974268899], [-122.8319170289986, 47.520989922534014], [-122.83187212206747, 47.520989945840626], [-122.83169262383463, 47.52098991348041], [-122.83066021507614, 47.52094506144223], [-122.82810199358835, 47.52085529944834], [-122.82648609375977, 47.5208104232128], [-122.8250947736322, 47.520810388738575], [-122.82496016064144, 47.520810414986435], [-122.82311986751783, 47.52076554193462], [-122.82303016075726, 47.520765546398984], [-122.82280566288776, 47.52076554764566], [-122.82258126826241, 47.52076551522248], [-122.82244665695877, 47.52076553760395], [-122.82213245329358, 47.52076554089933], [-122.82168363924315, 47.52076556427579], [-122.82118994801485, 47.5207655109282], [-122.8208307819931, 47.52072064917947], [-122.82051668399824, 47.52072061357929], [-122.81997806531064, 47.520720663093556], [-122.81899066630743, 47.520720626612956], [-122.81809299618764, 47.520675760658804], [-122.81795838792914, 47.52067577613589], [-122.81732999527605, 47.52067574936746], [-122.8168362885093, 47.52067576370363], [-122.8163873832569, 47.52067579300616], [-122.8162976794455, 47.52067579057031], [-122.81620779605926, 47.52067576196958], [-122.81548972757686, 47.52063090034359], [-122.81481643962694, 47.52063087040213], [-122.81477153657853, 47.52063088493279], [-122.81450232451388, 47.52063090546369], [-122.81441262157134, 47.52063090109516], [-122.8141432303391, 47.520630894445404], [-122.81333534125491, 47.520630862518985], [-122.8131558333458, 47.520630884382356], [-122.81266208560235, 47.52058599697271], [-122.81050770299302, 47.52058598178733], [-122.81019354614111, 47.52054112317996], [-122.80269797783798, 47.5204513548574], [-122.80099247940457, 47.52040645260847], [-122.80103736702965, 47.52018208060158], [-122.80130669366304, 47.505684771845566], [-122.8013066304483, 47.501779922245795], [-122.80130659987685, 47.50160035212813], [-122.80130665300733, 47.50079244256142], [-122.80130656481218, 47.50043340237254], [-122.80130667326014, 47.500209003362876], [-122.80130668769996, 47.499849934365415], [-122.80130660351826, 47.49733649846848], [-122.80130663742068, 47.495451388605375], [-122.80130662459915, 47.494778118250316], [-122.80130654864524, 47.49257882505206], [-122.8013066140161, 47.49082839171822], [-122.80108217864051, 47.48701329013978], [-122.80103728976422, 47.486160535693585], [-122.80099250450874, 47.485307762900625], [-122.80094749892969, 47.48409587305793], [-122.80090262486068, 47.48351239456232], [-122.80090273110014, 47.481133613964786], [-122.80085781629748, 47.476241343388914], [-122.80076798618218, 47.47211206565914], [-122.80076799843383, 47.47058600990071], [-122.8007231906755, 47.46973326267297], [-122.800723179879, 47.46955371706201], [-122.80067829402961, 47.46407796527857], [-122.80063331484965, 47.46201330578956], [-122.80049876431976, 47.45029877389628], [-122.80049872623295, 47.44729162345622], [-122.80063337601419, 47.444867929246705], [-122.80067832218836, 47.44379070996596], [-122.80090267234232, 47.43934725487985], [-122.8009923967285, 47.437596806559434], [-122.80099237893737, 47.437551911608274], [-122.80112713742281, 47.43467939712111], [-122.80112706482723, 47.43449982822576], [-122.80126181450012, 47.43261477607752], [-122.80121688064558, 47.42920365423563], [-122.80112712257527, 47.42489481601631], [-122.80108218354523, 47.42139394971895], [-122.80108227049062, 47.420451402150206], [-122.80108224127065, 47.419419056782615], [-122.80108217129045, 47.41901512010661], [-122.80108219754032, 47.41811743627844], [-122.80108227131512, 47.41614258299244], [-122.80108219376932, 47.4144819320555], [-122.80112710803044, 47.41277630132898], [-122.80112711057865, 47.40864705096557], [-122.80117198529697, 47.40541545258911], [-122.80117195211469, 47.40505640428193], [-122.80117197443649, 47.404024106412166], [-122.80121681090333, 47.403934339428865], [-122.80121681738247, 47.403665029828524], [-122.80121687921314, 47.40357526897342], [-122.80108227512162, 47.403575292231395], [-122.79048982177287, 47.4035303935926], [-122.77976266358688, 47.403485498068186], [-122.7642330200785, 47.40344063945066], [-122.7640535701818, 47.4034406252331], [-122.76360465109613, 47.4034406409002], [-122.75938566582752, 47.403395743454574], [-122.75916124936873, 47.40339576913642], [-122.75839821581435, 47.40339572469488], [-122.75785957337142, 47.4033957438424], [-122.7575454495622, 47.40339570577675], [-122.74969087265687, 47.403530389012175], [-122.74434975635944, 47.403575263642054], [-122.74376625487216, 47.403575297387185], [-122.7428685482617, 47.40357526943772], [-122.73716841915858, 47.403665039707356], [-122.73137849295863, 47.40362013170733], [-122.72671064020919, 47.40348553126204], [-122.72563339022521, 47.403440620035575], [-122.72540898186787, 47.40344065117984], [-122.72527432238414, 47.40344059074746], [-122.72469084752262, 47.4034405892891], [-122.72451130104761, 47.403440618896525], [-122.72410737422997, 47.40344058394085], [-122.7230750779283, 47.403395701370364], [-122.7213246511548, 47.403395733310255], [-122.72029226945433, 47.40335085078297], [-122.7190356046994, 47.40335086220045], [-122.71890091498439, 47.4033059597364], [-122.71858668483956, 47.40326107454185], [-122.71782365698165, 47.403216212174826], [-122.7176442199052, 47.40321619478976], [-122.71750953944426, 47.40321621439818], [-122.71715049306493, 47.40326107591943], [-122.71670169605888, 47.40326109410009], [-122.71602832332552, 47.40326109083088], [-122.71548981091651, 47.40326109231184], [-122.71513073488549, 47.40326111338229], [-122.71504101734655, 47.40326110197683], [-122.7149511970928, 47.403261123365084], [-122.71414325403049, 47.403261088173814], [-122.7138740025303, 47.40330600779917], [-122.71369446324746, 47.40326109093397], [-122.71347006820427, 47.403261091451064], [-122.71329053178644, 47.403261098027265], [-122.71320071225699, 47.40326111761908], [-122.7125275293569, 47.403261113646685], [-122.71171959553388, 47.40330598039045], [-122.71122584850752, 47.40330599594337], [-122.71086677914965, 47.40330599952672], [-122.71059752889835, 47.403305984807176], [-122.71050771038658, 47.40330600163696], [-122.71032817622805, 47.403306002139665], [-122.70996910835713, 47.403306002040246], [-122.70965500152342, 47.40330597608516], [-122.70844304838322, 47.40335083403363], [-122.70736593096312, 47.40335086525386], [-122.70723125644852, 47.40335086905354], [-122.7068273361616, 47.40335084633288], [-122.70660284499007, 47.40335086212798], [-122.70597453210446, 47.40339574230847], [-122.70566032763101, 47.403395734903704], [-122.70552565403116, 47.40339573608134], [-122.7049422826003, 47.403395754079824], [-122.70426891766942, 47.40339575237149], [-122.70382014588613, 47.40339570452403], [-122.7026082757438, 47.40339570843223], [-122.70193508664477, 47.403440639627846], [-122.70166575453047, 47.40339570570558], [-122.70121696157479, 47.40339573650602], [-122.70103733197251, 47.403395750827286], [-122.70085780527589, 47.40339573191047], [-122.70018463198669, 47.40339572503636], [-122.69942155740998, 47.40344058396515], [-122.6991074382898, 47.403440612169085], [-122.69874828510247, 47.40344059892358], [-122.69672848073849, 47.40344061272478], [-122.69627969752867, 47.403440618217175], [-122.6949781142101, 47.403485502543944], [-122.69363167404596, 47.403485518078355], [-122.69241972897893, 47.40348550581626], [-122.6920158084419, 47.40348550675792], [-122.68950238810108, 47.40348550140114], [-122.68456521353251, 47.403440608769834], [-122.68402662113057, 47.40344063354999], [-122.67415234766105, 47.40344062970698], [-122.67096550110232, 47.403395729895635], [-122.66908044957238, 47.40339570960219], [-122.66580390955856, 47.403350839117145], [-122.66441262211825, 47.403305941737706], [-122.66409842548175, 47.40330596910705], [-122.66405347449283, 47.40330597009099], [-122.66396375143235, 47.40330599832178], [-122.66373938114678, 47.40330596334489], [-122.6624825780968, 47.40326107205266], [-122.6602833152476, 47.40321617426213], [-122.65341614664813, 47.40308157603016], [-122.65310196771318, 47.40308156390055], [-122.65099245588937, 47.4031264169641], [-122.64767120718818, 47.403126457071814], [-122.64610022780577, 47.40312640686285], [-122.64601040981691, 47.40312644949115], [-122.64565137046596, 47.403126461492434], [-122.6428237972031, 47.40317132146848], [-122.63990630982265, 47.4032162513967], [-122.6372133808282, 47.40321622941428], [-122.63712349026775, 47.403216203745004], [-122.63703377859444, 47.403216204370864], [-122.63501408007136, 47.40326109937008], [-122.63496913519758, 47.40326108541854], [-122.63465495510577, 47.40326109908117], [-122.63434077547207, 47.40326111161617], [-122.63398175440655, 47.40326107577329], [-122.63393680974856, 47.403261061291715], [-122.6338470993058, 47.40326105865333], [-122.63375728612293, 47.403261088714444], [-122.63335341593229, 47.40330598776942], [-122.6306603617249, 47.4033957078422], [-122.62985249158422, 47.403395722569215], [-122.62940357650308, 47.403440619804364], [-122.62895482661429, 47.403440648068525], [-122.62846105789505, 47.40344059755185], [-122.62801230997069, 47.403440620984334], [-122.62756339625305, 47.40348550886482], [-122.62711457365914, 47.40348546851189], [-122.62635156640351, 47.40353039494136], [-122.62608234014972, 47.40353039624174], [-122.62549884268752, 47.40353041033142], [-122.62522943866678, 47.403530382597395], [-122.62504992113573, 47.40353039218274], [-122.62469087751812, 47.4034855170005], [-122.62365864512516, 47.40348552292732], [-122.62105537112012, 47.40348550989988], [-122.62078604900202, 47.40348552768364], [-122.62074110686243, 47.403485506431046], [-122.61993324548133, 47.40348552162047], [-122.61867655541096, 47.40348553771297], [-122.61652214125412, 47.403485473490434], [-122.61468187409736, 47.40348550733725], [-122.61450236556232, 47.40348549528997], [-122.61423305164898, 47.40348549291329], [-122.61400867879259, 47.403485514440156], [-122.61355985774965, 47.40348549656471], [-122.6131109348596, 47.40348550915577], [-122.61293142763671, 47.403485493887146], [-122.61275192056384, 47.40348547825044], [-122.61225823781321, 47.40348548752902], [-122.6111810714585, 47.40348550464173], [-122.61041798039614, 47.403485523713016], [-122.60952032748544, 47.403485540813385], [-122.60013974336307, 47.40353041838029], [-122.59991538497852, 47.40353040379072], [-122.59969092403979, 47.40353042137821], [-122.59951132505476, 47.40353041134723], [-122.59937676670684, 47.403530400438804], [-122.59919716798476, 47.40353038976331], [-122.59901756941294, 47.40353037871936], [-122.59883814978626, 47.40353039377299], [-122.59870348907134, 47.403530414580786], [-122.59852389091249, 47.40353040252404], [-122.59829953421688, 47.40353038379332], [-122.59753644100307, 47.40357527634011], [-122.59677347277604, 47.403575235723615], [-122.59627979890196, 47.40357524688229], [-122.59434976986769, 47.403575304771046], [-122.59381116497984, 47.403575267186426], [-122.593048183203, 47.40357528607016], [-122.59300322158151, 47.40362014447811], [-122.59291350067055, 47.403620191874445], [-122.59161189460247, 47.40366504580721], [-122.59098357522316, 47.40366503681773], [-122.59017556314058, 47.40366502688651], [-122.59008584331183, 47.40366507138662], [-122.58995129044057, 47.40366504599836], [-122.58891890783148, 47.40366507574653], [-122.58838031541855, 47.40366500476904], [-122.58712359938535, 47.403620166553566], [-122.58680935698901, 47.403620133265186], [-122.58214158319684, 47.40357529713616], [-122.58160298216036, 47.403575276408645], [-122.58092966820685, 47.40353038449898], [-122.58025649762888, 47.40353040797355], [-122.57962800797003, 47.40353038291184], [-122.57922413820992, 47.4035304153063], [-122.57832643160621, 47.40353042120692], [-122.57666577927326, 47.403530385963535], [-122.57518465989465, 47.40348551811558], [-122.57002298292223, 47.40344060758777], [-122.56997812745342, 47.40344061951944], [-122.56634265416498, 47.403395751495175], [-122.56598356252941, 47.40339574543439], [-122.56522052663995, 47.403395738387665], [-122.56400864015643, 47.40344062291009], [-122.56234802188285, 47.40344059190605], [-122.56203386629835, 47.403440620878825], [-122.56149518793171, 47.40344060108992], [-122.56068728683118, 47.40344065406862], [-122.56064243331572, 47.40344066121735], [-122.56037311815668, 47.403395723523424], [-122.56028341136371, 47.40339573747437], [-122.56023855798128, 47.40339574441538], [-122.55992432989386, 47.40339570656152], [-122.55902665339163, 47.40339569844096], [-122.55835339731887, 47.4033957700914], [-122.5580391720009, 47.403395725471526], [-122.55799431908854, 47.40339573126278], [-122.55705173397088, 47.40344060302715], [-122.55696202847233, 47.40344061357659], [-122.55525638002462, 47.403440610664724], [-122.55485253023242, 47.40344062257933], [-122.55453828284534, 47.40344065735641], [-122.5533713371508, 47.403440588356986], [-122.55220437094583, 47.40344059575923], [-122.55103741110744, 47.40344058760723], [-122.55081305093009, 47.40344063109832], [-122.54650418175224, 47.403395781195265], [-122.53698902771188, 47.40335086763128], [-122.53698894206397, 47.40339576230138], [-122.53649517368322, 47.40438318510528], [-122.53640544373323, 47.404652477542975], [-122.5362259097351, 47.404921793422105], [-122.5357322788072, 47.405819449275185], [-122.53519359596842, 47.40671708668194], [-122.5338919830265, 47.40855729589215], [-122.53232103545479, 47.41044241475394], [-122.53079499145448, 47.41210307993799], [-122.53061547395717, 47.41228265306166], [-122.52994225093379, 47.41327003208832], [-122.52792245621919, 47.41614257195688], [-122.52765330181883, 47.41659143939964], [-122.52680042590247, 47.418117474403225], [-122.5258578867339, 47.42022699325763], [-122.52581303788027, 47.42040649354056], [-122.52451139854978, 47.4238625483394], [-122.52383811690719, 47.426196435071276], [-122.5235239628356, 47.42826105297858], [-122.52334442347443, 47.43046036028392], [-122.52334435408973, 47.43113361018519], [-122.52334442126843, 47.432839184121285], [-122.5233444223882, 47.433018741029755], [-122.52343413285638, 47.433557287179106], [-122.52361379109209, 47.43732751651349], [-122.52352401736812, 47.442040260322585], [-122.5234790014021, 47.442668608010116], [-122.52347907628868, 47.44352140347917], [-122.52338926262192, 47.44518208933556], [-122.52329957291408, 47.44621441902978], [-122.5231648859584, 47.4470222808238], [-122.52276098426161, 47.44971530625504], [-122.52177353734102, 47.45348552086823], [-122.52087582258083, 47.456447792303024], [-122.52020259879849, 47.45869193167086], [-122.52015770091049, 47.45887147850404], [-122.51943958831026, 47.461115678485804], [-122.51930498081443, 47.461429828866905], [-122.51926007547783, 47.46160938533631], [-122.51899074922142, 47.462237726474896], [-122.5189009330585, 47.462417272585476], [-122.51768906356301, 47.46488584492619], [-122.51652216544024, 47.46672604933041], [-122.51593862834314, 47.467578853012675], [-122.51414337195389, 47.470137185433735], [-122.51364959792414, 47.47081046135792], [-122.51162994557572, 47.473413690949826], [-122.5094754728816, 47.476061825893005], [-122.50790458573886, 47.47794687920666], [-122.50637850790972, 47.479787065853245], [-122.50543597772658, 47.480909181961046], [-122.50516670739519, 47.481268215808754], [-122.50310206302976, 47.48337779556351], [-122.50126190396307, 47.48526287527542], [-122.49816486510116, 47.488494482630244], [-122.49650423916347, 47.49046930126874], [-122.4955616360833, 47.4915914319819], [-122.49381124644302, 47.49410487320221], [-122.4934072209814, 47.49477810855087], [-122.49282379921513, 47.4960348699729], [-122.49273404150645, 47.49616950263343], [-122.49174655026783, 47.49760574885888], [-122.49111820918725, 47.498189288283335], [-122.49017566267214, 47.4990420516366], [-122.48981659745274, 47.499490890090264], [-122.48788661981945, 47.501914534085216], [-122.48649518759233, 47.504248499827966], [-122.4860014799686, 47.50519104630336], [-122.48559759044039, 47.50626826113339], [-122.48523855016005, 47.507704513346816], [-122.4851936144415, 47.508198189905364], [-122.48519364622032, 47.508826561227686], [-122.48519366170328, 47.510711663734305], [-122.48519367887047, 47.51084632940543], [-122.48505903390827, 47.511968416198016], [-122.48496917259526, 47.51237236524637], [-122.48492438815731, 47.51273144403504], [-122.48487944376573, 47.5130456278456], [-122.48461014839557, 47.5140330863535], [-122.48429598405848, 47.51502050130099], [-122.48335345400328, 47.517399305257065], [-122.48281480488588, 47.51834180851524], [-122.48182733587981, 47.519598589754374], [-122.48151314611076, 47.52000252253752], [-122.4800320147855, 47.52175298449982], [-122.47805723408871, 47.523548315985046], [-122.47689023304059, 47.52449083715245], [-122.47590271181083, 47.5252987388532], [-122.47406254844125, 47.52660035253941], [-122.47069633609635, 47.52790194678358], [-122.469843600971, 47.52821616001774], [-122.46858677903931, 47.528754772252114], [-122.4637394275215, 47.53090916835926], [-122.46194408426874, 47.531537499402795], [-122.45992431476756, 47.5319863677771], [-122.45965497632716, 47.53207612317098], [-122.45830848159315, 47.532749356797304], [-122.45512179490518, 47.534769142847274], [-122.45408949777114, 47.53544239799232], [-122.45233908308894, 47.53656444098624], [-122.45081304044618, 47.53746213453789], [-122.44991534004711, 47.53804558554285], [-122.44722241551237, 47.53988583206475], [-122.44699796745712, 47.54006537209525], [-122.44650420409697, 47.54046932675891], [-122.44601054895556, 47.54100787458797], [-122.44542700794007, 47.541860690065775], [-122.4451128823521, 47.54248906409743], [-122.44502305803867, 47.542713477590404], [-122.44484352936142, 47.54334186471459], [-122.44479867131108, 47.54441903245008], [-122.44434978017927, 47.54783016608799], [-122.44385616311507, 47.551779909707236], [-122.44390102071768, 47.55370985971248], [-122.44399076548477, 47.55447287141616], [-122.44430493768705, 47.55555011832745], [-122.44461910982963, 47.556447749059004], [-122.44475374118538, 47.556896575006434], [-122.44515773512143, 47.55774932844094], [-122.44574120337754, 47.55882658476023], [-122.44699793901894, 47.56075653668775], [-122.44847909830854, 47.56295579967423], [-122.45022956142498, 47.565603935528245], [-122.45081303004005, 47.56636692954978], [-122.45166586287823, 47.56748905698988], [-122.45242886349807, 47.568386718509004], [-122.45305720040469, 47.569104868099096], [-122.45323668438292, 47.56941904979226], [-122.45337138433712, 47.56959857162671], [-122.45399973445855, 47.570900173252625], [-122.45413438788358, 47.57130416220316], [-122.45449347509837, 47.57233643471889], [-122.45476276841457, 47.573682926233836], [-122.45480762573736, 47.57395221997232], [-122.45485249893984, 47.57476016760525], [-122.45476281142943, 47.57619641654553], [-122.45476273960075, 47.57637591433176], [-122.45471784721335, 47.57660038407367], [-122.4546281185952, 47.57722870248897], [-122.45408955362012, 47.57965240434903], [-122.45359579132852, 47.58122334917626], [-122.45314698371395, 47.582210744829425], [-122.45171062213122, 47.585083284982105], [-122.45139647731997, 47.585711647929244], [-122.45049885236418, 47.587417199710785], [-122.44969087732223, 47.58894323761554], [-122.44834438239566, 47.59123230684519], [-122.44789556879998, 47.592309482959045], [-122.4475814038594, 47.59329694613871], [-122.44731210066038, 47.59446388770649], [-122.44717742177343, 47.59558597222693], [-122.44699793627738, 47.597605734623485], [-122.4469530141534, 47.598099429284275], [-122.44686334020699, 47.59917663439569], [-122.44654916202492, 47.60276731211677], [-122.44619005554627, 47.60703123869326], [-122.44605541460601, 47.60801867422332], [-122.44650427551808, 47.61147466834139], [-122.44686330551376, 47.61241721550396], [-122.44731219917756, 47.61309048023214], [-122.44771607949286, 47.61421252507307], [-122.44789564614662, 47.61475114022292], [-122.44829953733591, 47.615693703159856], [-122.4486137432276, 47.616366977768365], [-122.44865864795813, 47.61645671050589], [-122.44865860820659, 47.61650158346353], [-122.44919730713843, 47.61753391600294], [-122.44955631054768, 47.618162237360615], [-122.45005003952797, 47.61901508392283], [-122.45139654331578, 47.62094506501048], [-122.45301227915834, 47.62287502380425], [-122.45377531619246, 47.62377269945368], [-122.454269048381, 47.62462549681922], [-122.45489744039112, 47.62655543267747], [-122.45498721774975, 47.62718383748239], [-122.4548973747405, 47.627632626345715], [-122.4545832340817, 47.62902403077722], [-122.45435881021145, 47.62965241177663], [-122.45417923486832, 47.63023587193671], [-122.45408955415046, 47.630684714675176], [-122.45386507739745, 47.631358001985646], [-122.45368551898225, 47.63203122242797], [-122.45350606128326, 47.632569789304775], [-122.45305716977691, 47.63454466978912], [-122.45283285909076, 47.63607071889286], [-122.45269812695095, 47.63876373230693], [-122.45265323446029, 47.639122762343355], [-122.45269815240144, 47.64235435409247], [-122.45283277992368, 47.64379059427129], [-122.45319190562765, 47.64625923022925], [-122.45323678707364, 47.64670805622523], [-122.45337135443012, 47.64765057833511], [-122.45408950283178, 47.651106610281396], [-122.45426897839137, 47.65200426543906], [-122.45435884766698, 47.65267752791386], [-122.45440366267498, 47.653261036587175], [-122.4552116037747, 47.65532564619006], [-122.45606438648338, 47.65770444008343], [-122.45673758818778, 47.659679321199235], [-122.45723130512036, 47.66134000736061], [-122.45808410913767, 47.663898330766266], [-122.45857784025928, 47.66560391346267], [-122.45938581828304, 47.669149701541215], [-122.4596100977334, 47.67112456600319], [-122.45974478033914, 47.672111971151665], [-122.45978968625457, 47.67242613605219], [-122.45969996508146, 47.67538848478119], [-122.4596998879157, 47.675792417526765], [-122.45969992205157, 47.675927071463256], [-122.45898179094561, 47.6809091028385], [-122.45857780632701, 47.68248002304855], [-122.45812895690959, 47.68378165314848], [-122.45799431538492, 47.684095832133686], [-122.4576352843794, 47.68517301316322], [-122.45750064220977, 47.68544235767314], [-122.45696203406696, 47.686519503907704], [-122.45610923257107, 47.68831486929119], [-122.4547627060242, 47.6904692489044], [-122.4544486303524, 47.69096296781943], [-122.45332656163195, 47.692668541783476], [-122.45301232206303, 47.69325201006443], [-122.45274297671783, 47.69379059047085], [-122.45157608224827, 47.69585524653923], [-122.45063353233452, 47.69751595887959], [-122.44987045316768, 47.69886244514146], [-122.44928701860087, 47.70011914238609], [-122.44892787460095, 47.700882180261466], [-122.44883813016247, 47.70101680098409], [-122.44852400776328, 47.70151057292152], [-122.44807517302458, 47.70227358674468], [-122.44690810682333, 47.70447283628706], [-122.44641446196228, 47.70519094283398], [-122.4456514764161, 47.70631304527194], [-122.4449333097677, 47.70707604838952], [-122.44430491587404, 47.70765955997135], [-122.4416119426656, 47.70945488602527], [-122.44004107501814, 47.71057694314485], [-122.43927800217098, 47.711250240330216], [-122.437437850145, 47.71304554272953], [-122.4370338932909, 47.71394321309247], [-122.4368991937282, 47.71430226501878], [-122.43662991215218, 47.71519994151722], [-122.43577714276725, 47.71798271862007], [-122.43532828295906, 47.71982292557779], [-122.43438570836615, 47.72435613825217], [-122.43407162825132, 47.726375892439634], [-122.4339817782194, 47.726734995866934], [-122.43344321477703, 47.72888932029212], [-122.43330856136517, 47.72933817499833], [-122.4332187333344, 47.729562591034], [-122.43268016908036, 47.73095401195377], [-122.43223130639016, 47.731941414706505], [-122.43200690587746, 47.732390237359056], [-122.42994227427118, 47.73526278401688], [-122.42715958979149, 47.745361537989915], [-122.42702489301668, 47.747515922712346], [-122.4270249044202, 47.74967033901316], [-122.42715958082094, 47.75191449973226], [-122.4273840036303, 47.75393421185189], [-122.42810212185175, 47.758108357048286], [-122.42814687708298, 47.75833277521357], [-122.42890995758434, 47.76080134647585], [-122.42944858805069, 47.762417204071134], [-122.4296281426823, 47.762865979530396], [-122.42976274148059, 47.76318017788054], [-122.43003209231811, 47.76376363343052], [-122.43025650637918, 47.7644369235389], [-122.43119900297077, 47.76645665294521], [-122.43276996647485, 47.769284287399685], [-122.434834566675, 47.77278518249113], [-122.4350141031949, 47.7730994308313], [-122.43721337286662, 47.77646563248441], [-122.43788664584736, 47.77749793495063], [-122.4381110233039, 47.77781214132209], [-122.43815595643524, 47.7779018631197], [-122.4398166486661, 47.780190942129934], [-122.44075917471702, 47.78216584822874], [-122.4414324346841, 47.78351232397532], [-122.4421056528338, 47.785352498447764], [-122.44219548834762, 47.78562183031661], [-122.44224033469995, 47.78571159656519], [-122.44291355795261, 47.789840892118185], [-122.4429136271085, 47.7932071246586], [-122.44286870631792, 47.79414966474519], [-122.4427340275901, 47.79504729618598], [-122.44250964851224, 47.79621426854538], [-122.44224029227416, 47.798458441492585], [-122.44179142442205, 47.79989470578818], [-122.44152214237194, 47.80070262701834], [-122.44120793541566, 47.801600276586], [-122.44089381782575, 47.80249790849085], [-122.44062448050816, 47.803126292764944], [-122.44044493717912, 47.803485380271454], [-122.44004104120951, 47.80447283046538], [-122.43963705757199, 47.80541538068158], [-122.43909847329306, 47.80658228665553], [-122.43887403287876, 47.807120899882364], [-122.43860478419896, 47.8076594911815], [-122.43842525841524, 47.80810838837948], [-122.43824569017352, 47.80851227591225], [-122.4379763745351, 47.809140695955485], [-122.43784173835412, 47.80941000065343], [-122.43761730390351, 47.809903686776245], [-122.43730312871403, 47.81066668298865], [-122.43698896578, 47.81133996300384], [-122.43685431567374, 47.81160927823036], [-122.43667483234768, 47.81196829443197], [-122.43640549624799, 47.812596661068824], [-122.43577711354833, 47.813988048663624], [-122.43546300304764, 47.81466133581226], [-122.43537315434287, 47.814975469639364], [-122.43523846696107, 47.81528966923704], [-122.43496917502902, 47.815962908524746], [-122.43465502032204, 47.81668108797354], [-122.43438567818207, 47.817444082200716], [-122.43398174963716, 47.818655942449894], [-122.43294953352299, 47.820675695140004], [-122.43259039552746, 47.82143871861547], [-122.4320966969631, 47.82256080110398], [-122.43079506213667, 47.82556798685027], [-122.42962812175257, 47.82808145418855], [-122.42976278343993, 47.82870977998882], [-122.43268017216931, 47.84204014343503], [-122.43357778891044, 47.843611047938346], [-122.43559766801273, 47.84621428312403], [-122.43829064187425, 47.84935608868191], [-122.44134266090299, 47.852453029913875], [-122.44443966614416, 47.85550511491474], [-122.4646370799153, 47.873009619800236], [-122.46670176132625, 47.87480494431654], [-122.4667017001047, 47.874849804039414], [-122.46688127971586, 47.875074203774986], [-122.46728516332377, 47.875433301838804], [-122.46840726293523, 47.87615145019067], [-122.46993322566094, 47.87745302831266], [-122.47056172866108, 47.8781262952007], [-122.4717286518252, 47.87933815143026], [-122.47285073730427, 47.88050508716531], [-122.4735240014732, 47.88149255816945], [-122.47442164229649, 47.88265951425157], [-122.47554379251427, 47.88414065077], [-122.47662092316035, 47.88548714754218], [-122.4777878488105, 47.887058056241884], [-122.47859573403557, 47.88818012476009], [-122.47967298650681, 47.889706146502405], [-122.48075015219115, 47.89163615532866], [-122.48155806522493, 47.89307245184825], [-122.48232106439474, 47.89459843883465], [-122.48303916667233, 47.89652842283363], [-122.48384716451064, 47.89836865808018], [-122.48474476145952, 47.900433306780364], [-122.48546292370716, 47.90200415421725], [-122.48600155109231, 47.90357509868255], [-122.48654011077645, 47.905370487679676], [-122.48739287994059, 47.90752486190184], [-122.48811110126144, 47.91053203932457], [-122.48878431074237, 47.91246197249879], [-122.48891897820036, 47.91282104991052], [-122.48900873632803, 47.91304548266319], [-122.48977176598005, 47.91502033743479], [-122.49084894815316, 47.91708499241688], [-122.4921953835554, 47.919553582399274], [-122.49358684435386, 47.92175286597404], [-122.4948884226775, 47.923368597596614], [-122.49623490554963, 47.92471512493318], [-122.49632472225174, 47.92480492367035], [-122.49820975495122, 47.9265105031499], [-122.4996460360916, 47.927946773802944], [-122.5012619140509, 47.9290239370355], [-122.50180048535181, 47.92969716775023], [-122.5032367253524, 47.93046021616506], [-122.50404465325667, 47.93090902236956], [-122.50521161883069, 47.93158228018064], [-122.50768013773764, 47.93261462712882], [-122.51064241607185, 47.933646906213674], [-122.51463704326488, 47.934679198896404], [-122.51719537537325, 47.93548712606073], [-122.5179584213791, 47.93575645926552], [-122.52240181577015, 47.93696827050617], [-122.52675547734215, 47.93813522597721], [-122.5356873865907, 47.94028965524104], [-122.53716848127213, 47.94087308748133], [-122.54466397508946, 47.94271335735324], [-122.55166579839803, 47.944284219766665], [-122.55709668205878, 47.945496094501], [-122.56472680743421, 47.947605578498624], [-122.5698435117626, 47.94953557413], [-122.5776981507689, 47.9525427766344], [-122.58146823485275, 47.95442785267311], [-122.58285969669251, 47.95514603293814], [-122.58465506611586, 47.95613345431548], [-122.5874826377241, 47.958063447295594], [-122.58900869977873, 47.95918553488195], [-122.59062452964966, 47.960352486116406], [-122.5937662920945, 47.962776210576415], [-122.59394583959775, 47.962910843934885], [-122.59870344733906, 47.96636682500364], [-122.60193508960256, 47.96888029598395], [-122.60534625173239, 47.97179771248314], [-122.60673756061384, 47.97296468152113], [-122.60983454101049, 47.971348870483745], [-122.61176448302751, 47.97063077474679], [-122.61468192797759, 47.96937404099089], [-122.61719536617025, 47.968251938771495], [-122.61845213117627, 47.96744401287878], [-122.6203372103606, 47.96596284286235], [-122.62217748138788, 47.9647510361822], [-122.62329953230312, 47.963898266589545], [-122.62419714839528, 47.96318012573119], [-122.62513974523984, 47.96250688348321], [-122.62626181918611, 47.96169895709436], [-122.62778778322951, 47.960442250539415], [-122.62985250668768, 47.95810831933879], [-122.63209667733281, 47.95550506700948], [-122.6333084213153, 47.95312626673493], [-122.6344754178831, 47.95133091388243], [-122.63555259893262, 47.94845841078308], [-122.63671966066286, 47.9446433157905], [-122.63712353506388, 47.943027503198216], [-122.63739286921921, 47.94168104259053], [-122.63734796033064, 47.938224977473986], [-122.63716843906978, 47.93638480781431], [-122.63707866378304, 47.93566664325906], [-122.63694400830641, 47.93508320949401], [-122.63636057018161, 47.93265951365166], [-122.63568726664323, 47.93014601674693], [-122.63487942712331, 47.92619627468694], [-122.63384709873178, 47.921977268969556], [-122.63214154151167, 47.91829679780833], [-122.63070526446634, 47.91515500053301], [-122.6290894455532, 47.91246196977461], [-122.62626177374209, 47.90882648199376], [-122.62496014122495, 47.90770437020348], [-122.62329949300674, 47.90644764956618], [-122.62168372180614, 47.90528066665096], [-122.61961910407625, 47.9042483500018], [-122.61809302964785, 47.90326091564154], [-122.61535514290429, 47.90222865208486], [-122.61320084179417, 47.90142072782924], [-122.61082194492121, 47.90043326987377], [-122.60902669973345, 47.89976004293859], [-122.60678246405907, 47.898907247446225], [-122.60494231499428, 47.897964708420574], [-122.60238386877496, 47.896348934475576], [-122.60085785828035, 47.89518197430503], [-122.59942153441652, 47.89392518461735], [-122.59856874645949, 47.892937769769624], [-122.59744673563094, 47.89127705787405], [-122.59735698316939, 47.89109754868284], [-122.59659399152622, 47.88957152972913], [-122.59556158736618, 47.88714781931474], [-122.59542699974193, 47.885307600227854], [-122.59538206669187, 47.88400599443631], [-122.5955167446948, 47.882300474313745], [-122.5959655714869, 47.88090908691643], [-122.59614514177717, 47.88041530164607], [-122.59659400817023, 47.879248369069124], [-122.59726721442487, 47.87736324957832], [-122.59789552000085, 47.87619628769624], [-122.5993766536696, 47.87480492192473], [-122.60575014593631, 47.87081027459629], [-122.62419720451855, 47.85963439375683], [-122.62626175500125, 47.85837762683334], [-122.6397267945883, 47.84913165385384], [-122.65364055536001, 47.83948178182675], [-122.66288657020125, 47.83292877383468], [-122.67114513604474, 47.82704912231088], [-122.67168372183525, 47.826690063425325], [-122.67608230056366, 47.82359308675502], [-122.68169267618102, 47.81968823934346], [-122.68537309333944, 47.81717476489738], [-122.68649516725088, 47.816366895302586], [-122.6868542718975, 47.81614248590649], [-122.69210565131567, 47.81232739903566], [-122.70265311928523, 47.80487674845193], [-122.70413438512325, 47.80379956727472], [-122.70575009929894, 47.80258767261914], [-122.71450236662571, 47.79563076070835], [-122.71638744808376, 47.79365595310418], [-122.71670160992673, 47.793341787391995], [-122.71854182164618, 47.791546403055], [-122.72186323270962, 47.787821139173644], [-122.72195294688937, 47.787686434314644], [-122.72370342526303, 47.785217890517245], [-122.72572313360692, 47.782210706246715], [-122.72720436618664, 47.779742096183824], [-122.72868546122236, 47.77740818047692], [-122.73092955723367, 47.773593090091275], [-122.73245567063806, 47.77094497481485], [-122.73326354979226, 47.769508767789205], [-122.73425095775833, 47.76744407262025], [-122.73523848033449, 47.764795974243604], [-122.73591173428538, 47.762910876914454], [-122.73757240299622, 47.75828790350909], [-122.7377070249287, 47.758018590314734], [-122.73869444690921, 47.75523586197475], [-122.7404897697766, 47.75186958971177], [-122.74147724119506, 47.750164014743866], [-122.74170159657754, 47.749804955065166], [-122.74268908019206, 47.74859309809052], [-122.74354178786946, 47.74724661333561], [-122.74381116685234, 47.746887528316975], [-122.74538205280204, 47.74486779734001], [-122.74565138557364, 47.74446382741808], [-122.74645931597678, 47.743431549282185], [-122.74820971772124, 47.74190553142059], [-122.74901756982983, 47.74123222265595], [-122.74933174980269, 47.74096297470303], [-122.75009481590878, 47.740155087373545], [-122.75126173487517, 47.739571547535114], [-122.75278781300936, 47.73826997093497], [-122.75530125558426, 47.73526274617782], [-122.75835333334564, 47.73162726725998], [-122.7602833212376, 47.72893420015946], [-122.76149509871819, 47.72695937960598], [-122.76171954244602, 47.726555427362314], [-122.76338023822566, 47.72341362575663], [-122.76432277605757, 47.72094504154407], [-122.76499599386024, 47.719194573783305], [-122.76575902249712, 47.71605270856073], [-122.76589366367695, 47.7134495084121], [-122.76589373137162, 47.70994860845737], [-122.76535511907002, 47.70743517497091], [-122.76463702117994, 47.70510122943879], [-122.76355978033318, 47.7031712684121], [-122.7624376694051, 47.70151053800535], [-122.76154008204986, 47.700343597583036], [-122.75983442022904, 47.6986380067703], [-122.75848802925995, 47.69666316361957], [-122.75772493623495, 47.69518201102596], [-122.7575005848197, 47.693790643084434], [-122.75750051801921, 47.692354365126974], [-122.75772503417477, 47.69078344465721], [-122.75862263973157, 47.688539248982124], [-122.76005884032875, 47.68620533158789], [-122.76149515331086, 47.684454856048056], [-122.76369440537385, 47.68216581347026], [-122.76499607338869, 47.68113352815732], [-122.76652206891963, 47.6799216724184], [-122.76872140264398, 47.67853032064256], [-122.77047186503604, 47.677542880356654], [-122.7721325400187, 47.67660030473195], [-122.77500509429214, 47.6752538236187], [-122.77908946679345, 47.673907316667155], [-122.78321866787542, 47.67274032922772], [-122.78505896496583, 47.6724261836982], [-122.78770698556582, 47.67197737728983], [-122.7921055237797, 47.671348982220536], [-122.79354188724913, 47.67125920412992], [-122.7958757887557, 47.67103479140803], [-122.79856876954071, 47.670900159876226], [-122.80211451675248, 47.670900163104676], [-122.80601934389618, 47.67094500455868], [-122.80839813664153, 47.67098988693066], [-122.81239277548339, 47.67094500869718], [-122.81589368711352, 47.67072058745741], [-122.8193945608473, 47.67054107521515], [-122.82285057145381, 47.67027174801497], [-122.82639637924048, 47.66991270949066], [-122.82976257460821, 47.66964339840028], [-122.83523838720362, 47.668835545664415], [-122.84434975513138, 47.66726459920661], [-122.84973571628178, 47.66605273458901], [-122.85189011768097, 47.66537950724605], [-122.85458311172538, 47.66461649550567], [-122.85880211245137, 47.662955785868455], [-122.8629763041559, 47.66093603883283], [-122.86804804008304, 47.65819818456098], [-122.86854179848198, 47.65788399905077], [-122.87114497983077, 47.65631306381911], [-122.87258129134592, 47.65541541116469], [-122.87536409141447, 47.653575170994614], [-122.87626167859855, 47.65294683552258], [-122.87908932487092, 47.65070264292928], [-122.88532811131105, 47.64603477693316], [-122.89345196708584, 47.640334629390786], [-122.8969079496915, 47.638449510680964], [-122.899601029674, 47.63719278123823], [-122.90305707957238, 47.635980924965935], [-122.90525638940395, 47.63530770420335], [-122.90803905073724, 47.634589531523275], [-122.91127064951905, 47.63391628513417], [-122.91499598338417, 47.63292888110666], [-122.91845196288344, 47.63189656892385], [-122.92226712821831, 47.63063985998647], [-122.92527432908179, 47.629427990123574], [-122.92868546750334, 47.62785708565505], [-122.9316477002721, 47.626375950247485], [-122.93339812046429, 47.62529873679119], [-122.93402646773998, 47.62480500090794], [-122.93649515975274, 47.622560842172014], [-122.93806603359923, 47.62076553067168], [-122.93999599201767, 47.61708504478664], [-122.94219524840626, 47.613270006242935], [-122.94394577345479, 47.610756547117795], [-122.94690797909279, 47.608467476573004], [-122.94699776004157, 47.608422630504066], [-122.95063325631585, 47.60631308172454], [-122.9506781361221, 47.606268194088045], [-122.95117193349408, 47.60599888208461], [-122.95148609347888, 47.60586422567961], [-122.95211442424963, 47.60563983754773], [-122.95224911499089, 47.6055949355167], [-122.95233888593144, 47.60555008676611], [-122.95238376336306, 47.605505198989796], [-122.95292237682213, 47.605280787958385], [-122.95368538158856, 47.60487686168092], [-122.95377519366355, 47.60487684585862], [-122.95458310427036, 47.60447286114861], [-122.95557049455796, 47.60406896310495], [-122.95628863432786, 47.6037547450856], [-122.95664765971455, 47.60362011381635], [-122.95700678650708, 47.60348544816921], [-122.95781461654238, 47.60317123581925], [-122.95889189400599, 47.60281218283947], [-122.96059746603765, 47.602183823058056], [-122.96346997029605, 47.601151487870624], [-122.9650857382688, 47.60056807073836], [-122.96580380550617, 47.60029872083014], [-122.96629757346422, 47.6000743394241], [-122.96768898357443, 47.599490846423386], [-122.96782369051186, 47.59940106475843], [-122.96934967964118, 47.59854824407748], [-122.96970875659865, 47.59836877306004], [-122.970741000396, 47.59769547501169], [-122.97105521778373, 47.59747111200122], [-122.97181832257462, 47.596977369864284], [-122.97208756508886, 47.59675291828824], [-122.97289543124006, 47.59616945985898], [-122.97442150185584, 47.594822963600485], [-122.97451123381714, 47.594778102643495], [-122.97496004587289, 47.59432926706579], [-122.97531911947303, 47.593925294427535], [-122.97540898732495, 47.59383554339972], [-122.97585777331108, 47.59329694055679], [-122.97630651381539, 47.592803197153486], [-122.97644125305565, 47.59262370382077], [-122.97675545811728, 47.59226462707613], [-122.97702470464972, 47.59186070376991], [-122.97724914335019, 47.591591345943215], [-122.97738372771823, 47.5913669754894], [-122.97751838089611, 47.59118742675647], [-122.9777428899813, 47.5909181305319], [-122.97855074844952, 47.58984094422975], [-122.97935862302153, 47.58871883017067], [-122.97953812409358, 47.588449551033094], [-122.97994215858303, 47.587866044386026], [-122.97998702143379, 47.58777630816037], [-122.98052556746521, 47.58701330310711], [-122.98057050197593, 47.58696838517824], [-122.98074993995141, 47.58665420413913], [-122.98075007215128, 47.586609320760516], [-122.98200672985331, 47.58441005377681], [-122.9827697765757, 47.58279420806612], [-122.98402651486343, 47.580146120735904], [-122.98460993011572, 47.57897915719625], [-122.98465487610078, 47.57888940167471], [-122.9849690552657, 47.57826100644516], [-122.98523833861479, 47.577857108194685], [-122.98622571292547, 47.576286152250326], [-122.98703373965003, 47.57516408217445], [-122.98829043093896, 47.57332383084204], [-122.98878406494926, 47.57260571924381], [-122.9889188352057, 47.57238131910408], [-122.98914319860195, 47.57211200636823], [-122.98950226549553, 47.57157340173324], [-122.98963690711315, 47.571393874690415], [-122.99031020131062, 47.57049621309607], [-122.99039992946254, 47.570361596256554], [-122.99048969922292, 47.57031670890068], [-122.99098346762426, 47.56973321805735], [-122.9910282699822, 47.569688344249236], [-122.99125276972616, 47.569463901256576], [-122.99152200777513, 47.56914969203556], [-122.9917015562262, 47.56901508336692], [-122.99197078830024, 47.568700875717575], [-122.99210547209572, 47.568566248155776], [-122.99232985758182, 47.56834184100839], [-122.99273382296974, 47.56793790117301], [-122.99309292036875, 47.56753394413789], [-122.99354183470987, 47.56712999285824], [-122.9939008015246, 47.56677090449003], [-122.99403551298803, 47.56659135533853], [-122.99434964986473, 47.56627723365605], [-122.99461901347388, 47.56600789270042], [-122.99479847562822, 47.56582839656849], [-122.99497796240765, 47.56564880836683], [-122.995247280362, 47.56542439198421], [-122.99627956449702, 47.56452674496806], [-122.9967734271491, 47.564033035483256], [-122.9977607921118, 47.563135380367136], [-122.99847893908714, 47.562462109821475], [-122.99915210571154, 47.561788860499206], [-123.00094750855448, 47.5600833229936], [-123.0011270191153, 47.5599486284255], [-123.0022940266696, 47.55882655834599], [-123.00305702355031, 47.558063552139906], [-123.0032814779358, 47.55788401575243], [-123.00395468048546, 47.55725564300252], [-123.00467284669283, 47.55653751589227], [-123.00489721096676, 47.55631309992455], [-123.0055704438888, 47.555729616158814], [-123.00655796241018, 47.554742210623104], [-123.00714135076383, 47.55420356338052], [-123.00767995346581, 47.553664965862296], [-123.00884691793604, 47.5525877677913], [-123.00920602971638, 47.55222868545009], [-123.00969971512343, 47.551734997337086], [-123.01005879205532, 47.55142082791215], [-123.01055254159185, 47.55097201960808], [-123.01329044909075, 47.5483687608829], [-123.01607318998504, 47.54567574944855], [-123.02285054523453, 47.53925741784454], [-123.0234339980812, 47.5387188556851], [-123.02388284400315, 47.538270021894895], [-123.0246459109948, 47.53755188011327], [-123.02469074989592, 47.53750698609824], [-123.02527426427434, 47.53692350160446], [-123.02576790712868, 47.53647467790432], [-123.02653099221224, 47.53571171036687], [-123.02684519441972, 47.535442404535154], [-123.02742857528145, 47.534903766710485], [-123.02783261269374, 47.53449980788252], [-123.02837121477714, 47.53400612573372], [-123.02895473785216, 47.53342262634014], [-123.02931373932712, 47.53310843259257], [-123.03272482900368, 47.528305938959825], [-123.03272482392931, 47.528261050372365], [-123.03303909356598, 47.52781223717755], [-123.03842505513434, 47.52022697671061]]]}, 'id': '00000000000000000030', 'properties': {'ALAND': 1023381117, 'AWATER': 442114809, 'CBSAFP': '14740', 'CLASSFP': 'H1', 'COUNTYFP': '035', 'COUNTYNS': '01529223', 'CSAFP': '500', 'FUNCSTAT': 'A', 'GEOID': '53035', 'INTPTLAT': '+47.6396874', 'INTPTLON': '-122.6496358', 'LSAD': '06', 'METDIVFP': '', 'MTFCC': 'G4020', 'NAME': 'Kitsap', 'NAMELSAD': 'Kitsap County', 'STATEFP': '53', 'avg_precip_anomaly': 0.0002113129441720934, 'avg_temp_anomaly': -1.0692871368338706}}
# Convert FeatureCollection to GeoJSON
geojson = wa_counties_anomaly.getInfo()

# Extract temperature anomaly values
temp_vals = [f['properties'].get('avg_temp_anomaly') for f in geojson['features'] if f['properties'].get('avg_temp_anomaly') is not None]
temp_min, temp_max = min(temp_vals), max(temp_vals)

# Create colormap for temperature
temp_colormap = cm.LinearColormap(['red', 'white', 'green'], vmin=temp_min, vmax=temp_max)
temp_colormap.caption = 'Avg Temperature Anomaly (°C)'

# Create folium map for temperature
Map_temp = folium.Map(location=[47.5, -120], zoom_start=6)
temp_colormap.add_to(Map_temp)

# Style function for temperature
def temp_style(feature):
    val = feature['properties'].get('avg_temp_anomaly')
    color = 'gray' if val is None else temp_colormap(val)
    return {
        'fillOpacity': 0.7,
        'weight': 1,
        'color': 'black',
        'fillColor': color
    }

# Add layer
folium.GeoJson(
    geojson,
    name='Temperature Anomaly',
    style_function=temp_style,
    tooltip=folium.GeoJsonTooltip(fields=['avg_temp_anomaly'], aliases=['Temp Anomaly (°C):'])
).add_to(Map_temp)

folium.LayerControl().add_to(Map_temp)
Map_temp
Make this Notebook Trusted to load map: File -> Trust Notebook

Figure 3: This map shows that most of Washington experienced colder than average temperatures in May and June 2024, with the exception of most of the coastal counties in western Washington and the southwestern region of the state.

# Extract precipitation anomaly values
precip_vals = [f['properties'].get('avg_precip_anomaly') for f in geojson['features'] if f['properties'].get('avg_precip_anomaly') is not None]
precip_min, precip_max = min(precip_vals), max(precip_vals)

# Create colormap for precipitation
precip_colormap = cm.LinearColormap(['brown', 'white', 'green'], vmin=precip_min, vmax=precip_max)
precip_colormap.caption = 'Avg Precipitation Anomaly (mm)'

# Create folium map for precipitation
Map_precip = folium.Map(location=[47.5, -120], zoom_start=6)
precip_colormap.add_to(Map_precip)

# Style function for precipitation
def precip_style(feature):
    val = feature['properties'].get('avg_precip_anomaly')
    color = 'gray' if val is None else precip_colormap(val)
    return {
        'fillOpacity': 0.7,
        'weight': 1,
        'color': 'black',
        'fillColor': color
    }

# Add layer
folium.GeoJson(
    geojson,
    name='Precipitation Anomaly',
    style_function=precip_style,
    tooltip=folium.GeoJsonTooltip(fields=['avg_precip_anomaly'], aliases=['Precip Anomaly (mm):'])
).add_to(Map_precip)

folium.LayerControl().add_to(Map_precip)
Map_precip
Make this Notebook Trusted to load map: File -> Trust Notebook

Figure 4: This map shows that western Washington generally experienced a wetter than average spring in 2024, and eastern Washington had a drier than average spring that year.

# Convert EE FeatureCollection to GeoJSON
geojson = wa_counties_anomaly.getInfo()  # Only safe for small datasets

# Create base folium map
Map = folium.Map(location=[47.5, -120], zoom_start=6)

# -------------------- TEMPERATURE ANOMALY LAYER --------------------

# Extract temperature anomaly values
temp_vals = [f['properties'].get('avg_temp_anomaly') for f in geojson['features'] if f['properties'].get('avg_temp_anomaly') is not None]
temp_min, temp_max = min(temp_vals), max(temp_vals)

# Create colormap for temperature
temp_colormap = cm.LinearColormap(['#32CD32', 'gray', 'purple'], vmin=temp_min, vmax=temp_max)
temp_colormap.caption = 'Avg Temperature Anomaly (°C)'
temp_colormap.add_to(Map)

# Define style function for temperature
def temp_style(feature):
    val = feature['properties'].get('avg_temp_anomaly')
    color = 'gray' if val is None else temp_colormap(val)
    return {
        'fillOpacity': 0.7,
        'weight': 1,
        'color': 'black',
        'fillColor': color
    }

# Add temp layer
folium.GeoJson(
    geojson,
    name='Temperature Anomaly',
    style_function=temp_style, 
).add_to(Map)


# -------------------- PRECIPITATION ANOMALY LAYER --------------------

# Extract precipitation anomaly values
precip_vals = [f['properties'].get('avg_precip_anomaly') for f in geojson['features'] if f['properties'].get('avg_precip_anomaly') is not None]
precip_min, precip_max = min(precip_vals), max(precip_vals)

# Create colormap for precipitation
precip_colormap = cm.LinearColormap(['coral', 'gray',  '#0571b0'], vmin=precip_min, vmax=precip_max)
precip_colormap.caption = 'Avg Precipitation Anomaly (mm)'
precip_colormap.add_to(Map)

# Define style function for precipitation
def precip_style(feature):
    val = feature['properties'].get('avg_precip_anomaly')
    color = 'gray' if val is None else precip_colormap(val)
    return {
        'fillOpacity': 0.7,
        'weight': 1,
        'color': 'black',
        'fillColor': color
    }

# Add precip layer
folium.GeoJson(
    geojson,
    name='Precipitation Anomaly',
    style_function=precip_style,
    tooltip=folium.GeoJsonTooltip(
    fields=['avg_temp_anomaly', 'avg_precip_anomaly'],
    aliases=['Temp Anomaly (°C):', 'Precip Anomaly (mm):']
)
).add_to(Map)


# -------------------- FINAL MAP SETUP --------------------

folium.LayerControl().add_to(Map)
Map
Make this Notebook Trusted to load map: File -> Trust Notebook

Figure 5: This map overlays average temperature and precipitation anomalies of Washington’s counties showing the compounding anomalies that can impact farming.

Discussion

The chart visualizing temperature anomalies over time (Figure 1) shows that there were more colder than average days of spring 2024 than warmer than average days across the entire state. The map visualizing temperature anomalies (Figure 3) also suggests that overall, Washington saw a colder than average spring 2024, with the exception of the coastal and southwestern portions of the state. The aras of the state with the largest temperature anomalies were clustered in the central counties of the state, with generally colder than average temperatures.

The time series chart visualizing precipitation anomalies (Figure 2) suggests that most days saw slightly below average precipitation levels, but the few days that did experience precipitation saw much higher than average rainfall across the entire state. However, the map (Figure 4) shows that the precipitation anomalies are spatially dependent: while Western Washington experienced a wetter than average spring, the eastern side of the state saw a drier than average spring in 2024. This cautions us against aggregating data at very high scales (i.e. across the entire state), because you might miss out on spatial trends at lower scales.

Conclusion

Through this module, you calculated precipitation and temperature anomalies for counties in Washington state in May and June 2024, compared to the average precipitation and temperature values for that time period over the preceding 15 years. While this module calculates anomalies for a single year, these anomalies can be combined together from multiple years to assess how variable the climate is over longer time spans. Counties where anomalies are high each year can be said to have highly variable and unpredictable weather, whereas areas with lower anomalies each year may have relatively stable climates.

These indicators of climatic variability could be used to guide further analyses of climate vulnerability in agriculture. For example, farmers could be interviewed in counties with stable vs. variable climates and assess differences in how farmers are experiencing and coping with climate change. Climate variability could further be combined with other variables to gain a more holistic picture of vulnerability, like dependence on rainfed agriculture, availability of irrigation, and access to financial, social, and natural capital.

In this lesson you learned…

  • That increasingly variable precipitation and temperature trends are an issue for farmers in western Washington and across the globe
  • How to calculate climatological anomalies for a single year, by:
    • Working with Google Earth Engine
    • Downloading county boundaries using U.S. Census TIGER data
    • Downloading precipitation and rain data using the ERA5-Land dataset
    • Calculating average daily precipitation and temperature data over 15 years for each county (‘normals’)
    • Calculating anomalies for daily climate data compared to the 15-year average (‘normals’)
    • Visualizing temperature anomalies using graphs and chloropleth maps

References

Adger, W. Neil. 2006. “Vulnerability.” Global Environmental Change 16 (3): 268–81. https://doi.org/10.1016/j.gloenvcha.2006.02.006.
Pendergrass, Angeline G., Reto Knutti, Flavio Lehner, Clara Deser, and Benjamin M. Sanderson. 2017. “Precipitation Variability Increases in a Warmer Climate.” Scientific Reports 7 (1): 17966. https://doi.org/10.1038/s41598-017-17966-y.
Shortridge, J. 2019. “Observed Trends in Daily Rainfall Variability Result in More Severe Climate Change Impacts to Agriculture.” Climatic Change 157 (3): 429–44. https://doi.org/10.1007/s10584-019-02555-x.
Thimmegowda, M. N., M. H. Manjunatha, L. Huggi, S. K. Bal, M. A. Sarath Chandran, D. V. Soumya, and R. Jayaramaiah. 2025. “Impact of Rainfall Variability on Major Crops Using the Deficient Rainfall Impact Parameter (DRIP): A Case Study over Karnataka, India.” Meteorological Applications 32 (2): e70032. https://doi.org/10.1002/met.70032.
Thornton, Philip K., Polly J. Ericksen, Mario Herrero, and Andrew J. Challinor. 2014. “Climate Variability and Vulnerability to Climate Change: A Review.” Global Change Biology 20 (11): 3313–28. https://doi.org/10.1111/gcb.12581.
Vargas Zeppetello, Laurence R., and David S. Battisti. 2020. “Projected Increases in Monthly Midlatitude Summertime Temperature Variance over Land Are Driven by Local Thermodynamics.” Geophysical Research Letters 47 (19): e2020GL090197. https://doi.org/10.1029/2020GL090197.
Vernik, M. 2025. “Resilience and Adaptation to Climate Change Among Organic Farmers in the United States: A Mixed Methods Investigation.” Master's thesis, University of Washington; ProQuest Dissertations Publishing.
Yeleliere, Emmanuel, Philip Antwi-Agyei, and Luke Guodaar. 2023. “Farmers Response to Climate Variability and Change in Rainfed Farming Systems: Insight from Lived Experiences of Farmers.” Heliyon 9 (9): e19656. https://doi.org/10.1016/j.heliyon.2023.e19656.

Footnotes

  1. Photo credit: Masha Vernik↩︎