Beijing-like Pollution Levels in the Northern Cascades – Aug 9

IMG_2097

Low visibility (my guess is < 5 miles)

The partner and I were up in the Methow Valley for a(n AMAZING!) wedding a few days ago. We had some time to spare, so we decided to wind our way slowly over the North Cascade Highway, aka Washington “SR-20”. One of the most scenic highways in the nation, it offers 400 miles of byways along the gorgeous rivers, ridges, and forests of the Cascades. It’s well-traveled, but rarely is there much traffic– heck, it’s in the middle of a national forest! So it was a bit of a let down when the breathtaking vistas that started our journey down in Winthrop slowly faded away into a deep white smog.

The route we drove (from East to West) on August 9th, through some of the thickest smog I've ever seen in the US.

The route we drove (from East to West) on August 9th, through some of the thickest smog I’ve ever seen in the US.

But I was prepared! We expected a bit of plumage (usage?) from the nearby Wolverine and Goode fires, so before we left, I packed up one of the lab’s DustTraks– a device that measures respirable particulate matter (PM2.5)– and an extra battery. I pulled it out somewhere around Mazama, WA (see map with estimate below), about 40 miles before Diablo Lake and the first real corridor of deep walls in the pass. Prepared? Perhaps. Expecting concentrations on par with Beijing in the Winter? Not a chance.

Let’s see some data!

The data. PURPLE represents PCF-adjusted minute-by-minute averages from the DustTrak in our car; ORANGE and DARK GREEN are nearby federal reference monitors; and BLUE is Seattle for comparison. The X-Axis is time, but also serves as a in indicator of distance along our driving route shown above. The peak concentrations correspond with the top of the pass.

The data. BLUE are the data from our DustTrak “. Seattle, Winthrop, and two other nearby sites are shown for comparison. The Y-axis is PM2.5 concentration in ug/m3 (ah! I can’t believe I forgot to label on the plot! … but I’m too lazy to fix it) and the federal 24-hour outdoor ambient standard is demarcated by the dashed black line. The X-Axis is time, but also serves as a in indicator of distance along our driving route shown above. The peak concentrations correspond with the top of the pass.

Note that the DustTrak is corrected using a standard forest fire correction factor (0.59, or 1/1.7) published by McNamara, et. al. in 2011. You may notice that our window of data collection is just a blip on this chart. That’s because the local reference monitors record

Federal reference monitoring sites and nearby fires. NOTE: this map is from today, and so fire location and quantity is not perfectly representative of August 9th, though it is relatively similar.

Federal reference monitoring sites and nearby fires (Winthrop not shown). NOTE: this map is from today, and so fire location and quantity is not perfectly representative of August 9th, though it is relatively similar.

(and broadcast) in hour averages, but our car ride was only ~ 45 minutes. I just wanted to show some context from nearby sensor nodes. It does bring up an interesting point, though, that the hourly averages from those reference monitors are NOWHERE near the concentrations measured at the height of the pass. And who would expect them to be? The closest reference monitors are many miles away, and well outside of the local topography (i.e. the narrow valley corridors). It certainly is worth noting that the population density in this area is quite low, so placing a monitor along the pass is admittedly not the best use of limited gov. funds. Still, it’s a good example of a major weakness (perhaps funding related!) in our nation’s air quality monitoring network: its sensor nodes are few and far between. Around the time we hit the top (of the pass), ambient concentrations had breached 300 ug/m3. That’s nearly 9x the EPA 24-hour standard of 35 ug/m3, which is already a bit lenient– even Oakland violates it only 2-3 times per year.

Air pollution levels matter. Especially at these levels. Millions of folks die every year from exposures to PM2.5 that are likely far lower than what we witnessed in the Cascades. While I’ve been quick to grasp the importance of forest fires as a source of occupational exposures in fire fighters (yikes!), I don’t think it ever hit me how far their smoke plumes could travel and how much of an impact they could have on the general population. This trip was a good ol’ kick in the pants, and it’ll stick with me for a while.

For all of the downfalls of the FRM sensor network, NOAA's air quality models seem to do a pretty great job of predicting bad air quality. Note the tiny dot of red (Heavy Smoke) in North Central Washington... that's us!

For all of the downfalls of the FRM sensor network, NOAA’s air quality models seem to do a pretty great job of predicting bad air quality. Note the tiny dot of red (Heavy Smoke) in North Central Washington… that’s us!

Posted in Energy & Health | Tagged | Leave a comment

Sticking burning things in your mouth is a bad idea… so is sticking them in your kitchen.

In his keynote speech at the 2013 Clean Cooking Forum in Cambodia, Kirk R. Smith likens smoke emissions from the types of solid fuel use employed in the homes of nearly 4 billion people to burning 400 cigarettes. Dang. That’s alotta smoke.

Would You Let 400 People Smoke in Your Kitchen?

The WordPress “Insert Media” function doesn’t seem to want to let me post the specific video of Dr. Smith, so here’s the full set of videos from the Clean Cooking Forum.

 

Posted in Uncategorized | Leave a comment

It’s been how long?

27 Years. It’s been 27 years since the world experienced a month that was cooler than average. Yikes.

http://www.itsbeen27years.com

Posted in Uncategorized | Tagged | Leave a comment

A Solar Impulse Worth Satisfyin’

The Solar Impulse takes flight. Note the full wingspan is plastered with solar panels. Sick. (Source: ksj.MIT.edu)

The Solar Impulse takes flight. Note the full wingspan is plastered with solar panels. Sick. (Source: ksj.MIT.edu)

So… apparently there have been some phenomenal advancements in solar-powered flight in the last few years– especially with a Swiss team called Solar Impulse, which plans to flit around the world next summer. Most of the arguments against solar flight are some variation on the enormous energy need for propelling a craft as massive as an airplane, the low capacity (and serious mass/weight) of current battery tech, and the phenomenally convenient energy density (and consequent transportability) of fossil fuels. Cloudy skies probably don’t help either.

Anyways, check this baby out:

  1. 2009: Test flight airborne for 28 seconds, 3ft from the ground. $20 million budget.
  2. 2010: First 24+ Hour Flight, and First Time >28,000 ft. Average speed: 26 mph. Note the ability to fly at night. Super lightweight carbon-fiber materials  (less mass to propel), glider-like shape (less work for the propellers to do), a robust set of batteries, and extreme engine efficiency help with that.
  3. 2012: Plans to fly across the globe! Fingers crossed.

Sooo quiet. Listen to that baby purr.

Some problems that come to mind right off the bat:

  • A glider’s not quite suited for turbulent weather. Could this be worked around?
  • Currently pretty-darn slow– likely a battery energy-density issue. Could ionospheric beams helps us out with that? (I kid… but it’d be awesome)
  • Not designed to carry the loads necessary in military, shipping, air-travel industries.

And the benefits?

  • Far fewer negative externalities (air, water, and noise pollution, etc.).
  • Investment from airlines palatable due to tremendous savings in fuel costs… that is, if we can bypass the negatives above.
  • Such investment would help the PV learning curve along, bringing down prices for all solar products. (For more on the PV learning curve, checkout grist.)
  • It’s super freaking rad.
Posted in Uncategorized | Leave a comment

A Twitter Analysis of Ulaanbaatari Air, or: My First Foray into Coding… Maybe Not So Fruitful.

While the powers at be have sworn me to secrecy, I can probably sneak by with letting you know that I’ve spent the last month or two here at Cal prepping for an air quality project in Mongolia’s capital city: Ulaanbaatar (UB).

Now Ulaanbaatar is no ordinary study site– if UB were a stout, it’d be short, cold, and hazy with a dry finish. Its average wintertime temps approach -20°C, mountain walls tower several thousand feet above it, and annual rainfall hovers just below 8 inches. Easily one of the harshest capitals on Earth. To put it more succinctly, UB’s winters are looooong, its precipitation is seldom, and its temperature inversions are frequent. The result is an eight-month heating period during which large quantities of air pollution are created by heavy coal use (heating & electricity gen.) and left suspended in the air.

In fact, the World Health Organization identifies the airshed here as one of the top ten most-polluted on the planet. Recent studies (though they are few) estimate local wintertime particulate (PM2.5) concentrations at up to 7 times the WHO annual guidelines. And the numbers are even greater in the poorer, peri-urban ger regions just outside of downtown proper.

All this to say: UB is an exciting spot for an energy/health wonk like meself.

Annnnnyways, I’ve been just devouring information about Mongolia these past few weeks– I’ll do anything I can to prep for my upcoming excursion into the harshweatherness (and exquisite natural beauty [and amazingly warm culture]) of UB. Which leads me to my first foray into coding. You see, a tweeter by the name of @UB_Air has begun tweeting daily average air quality readings. The actual figures are difficult to parse in a meaningful way from the source feed (an official UB webpage), and so I thought:”well hey, why don’t I try to write some code to index data from this UB_Air feed!? I could analyze it, and manipulate it, and plot it, and it would be sweet.” And so I did. Weeks later and one MedEpi final project later, I’d taught myself enough R code (and cajoled enough friends into helping me) to scrape/manipulate/plot a bit of data.

Screen Shot 2012-12-03 at 8.38.19 PM
… turns out somebody’s already figured out how to do this for the official source feed here: http://ubdata.cloudfoundry.com. Dang. (and awesome.) But it was an edifying project nonetheless.

Here’s the code, with a BIG shoutout to David Ruau at Brain Chronicle, whose R code for scraping the US Beijing Embassy’s twitter feed was ueber helpful and the backbone of my code (link to his code/site here):


library(twitteR)
library(ggplot2)

### Download tweets from UB_air Twitter Handle
tweets <- userTimeline(‘UB_air’,n=10000)
length(tweets)

### Create a function that allows you to target only those tweets with air quality data in them
PMGrep <- function(x) {
grep(“PM2.5 =”, x$getText(), value=T)
}

###Isolate contents of listed files in “aq” file
AQ <- unlist(lapply(tweets, PMGrep))

###Exclude redundant tweets. UB_Air tweets simultaneously in English and Mongolian. The result is duplicate reports. To ensure we are not double counting our data, we will exclude those made in Mongolian.
#The simplest way involves merely keeping only those tweets that maintain an English hashtag, #UBAir.
AQ<- AQ[grep(“#UBAir”, AQ)]

###Then ensure that we are only capturing data with time/date stamps
AQ<- AQ[grep(“/[0123456789]”, AQ)]

### Isolate time fragment of tweet as new variable “time”
PM25 <-AQ
time<- sub(“.*(\\d\\d/\\d\\d/\\d\\d\\d\\d \\d\\d:\\d\\d).*”,”\\1″,PM25, perl=T)

### Standardize format of time (posix time)
time <- strptime(time, format=”%m/%d/%Y %R”)

###Isolate PM data
#Isolate PM2.5 readings
PM<-substr(PM25, 1,11)

#Remove non-numeric values
PM <- as.character(sub(“PM2.5 = “, “\\1”, PM, perl=T))
PM <- as.numeric(sub(“[[:alpha:]]$”, “\\1”, PM, perl=T))

###Create a data frame of times and PM levels
data <- data.frame(PM=PM, time=time)
data <- data[order(data$time),]

###Descriptive Statistics
summary(data$PM)
summary(data$time)

###Plot
#Basic Plot
p <- ggplot(data=data, aes(x=time, y=PM, group=1)) +
theme(
panel.background = element_rect(fill = “transparent”, colour = “gray”)
) +
geom_line(colour=”black”, size=0.5) +
geom_point(colour=”black”, size =2, shape=21, fill=”white”) +
ylim(0, max(data$PM))+
xlab(“Time and Day”) + ylab(“PM2.5, 24 Hour Average”)
ggtitle(“24hr Air Quality Averages (PM2.5), Ulaanbaatar”)
p

#Add WHO guidelines
#source: http://www.who.int/mediacentre/factsheets/fs313/en/index.html
pw <- p +
geom_hline(aes(yintercept=25), colour=”dark red”,label=”WHO 24hr Guideline”) +
geom_hline(aes(yintercept=10), linetype =”dashed”,label=”WHO Annual Guideline”, colour=”dark red”) +
ggtitle(“24hr Air Quality Averages (PM2.5), Ulaanbaatar”)+
geom_text (aes(x2,y2, label = texthere),
data.frame(x2=strptime(“11/6/2012 00:00″, format=”%m/%d/%Y %R”), y2=20, texthere=”WHO 24hr Guideline”)) +
geom_text (aes(x2,y2, label = texthere),
data.frame(x2=strptime(“11/29/2012 00:00″, format=”%m/%d/%Y %R”), y2=5, texthere=”WHO Annual Guideline”))
pw

#Define average
pwa <- pw +
geom_hline(aes(yintercept=(mean(data$PM))), colour=”blue”,label=”Average 24hr Guideline”)
pwa

#Plot Model of PM v. Time (linear w/ 95% confidence regions)
modell <- pw +
geom_smooth(method=lm, colour=”blue”)
modell

#Plot Smoothed Model of PM v. Time (loess w/95% confidence regions)
models <- pw +
geom_point(shape=1, colour=”black”) +
geom_smooth(colour=”blue”)
models

Posted in Energy & Health, Mongolia | Tagged , , , , | Leave a comment

Energy, Health, and Climate

A blog about energy, health, and climate!

Posted in Uncategorized | Leave a comment