, 6 min, 1087 words
Tags: adventuring anacortes-kayak-tours programming gis
Guiding in the San Juans, current is an ever-present force. Tidal currents here are part of life, and bring an additional level of challenge and fun to paddling in the area. Ebb and flood, ebb and flood – a natural rhythm to days here. Every day before hitting the water, I check the currents and use them to make a plan for the day. For day trips, that's fairly straightforward – there's only a few places I care about the current, and I know off the top of my head which direction currents move when it's flooding (broadly speaking, when the tide is rising) and ebbing (when the tide is dropping).
When I first started guiding multiday trips, I was faced with the challenge of keeping many more currents straight in my head. Following the lead of some experienced guides, I started marking up my chart with arrows designating the flood and ebb directions. With the help of these arrows, I can keep current directions straight in my head, so when an app says "Bellingham Channel will be ebbing at two knots this morning," I know if that will help or hinder me.
In the course of planning a personal expedition recently, I was confronted with the question of how to find these tidal directions on my own. I no longer had a trusty experienced guide to tell me about where the flood would push me, and I was venturing into waters I'd never even seen before.
After a fair bit of poking around, I stumbled upon a NOAA webpage that gives current directions and speeds for most (all?) current stations in the Pacific Northwest. This was exactly the data I wanted: it told me the direction the current moves at a max flood and at a max ebb. In practice, everything is more complicated: the current direction changes slowly as it builds and then slackens. But this was at least enough to get me started.
Here's a tiny sample of the data this page provides:
Station | Latitude | Longitude | Flood speed | Flood dir | Ebb speed | Ebb dir |
Bellingham Channel | 48° 33.62' | 122° 39.82' | 1.2 | 045 | 2.2 | 185 |
Essentially this gives three pieces of information for the Bellingham Channel station.
So to read this out, Bellingham Channel is located at a specific lat/long and ebbs (on average) a little faster than it floods. When ebbing, it moves mostly south and a tiny bit west, while floods move nicely northeast.
From here, it was time to boot up a Jupyter notebook and dig into the data! I wanted to construct a map of all the current stations in the area. Just to spoil the story, here's the result! I present tide directions in the San Juans.
Current directions in the San Juans!
DISCLAIMER: Not intended for navigation or planning purposes, no warranty etc., don't do stupid stuff. Also, because this uses GADM, it cannot be used for commercial applications – feel free to reproduce (for free) as long as you provide a link to this page and credit Zeph Arvanitis/wxyzeph.com
As usual in any data science endeavor, the hardest part of this was finding the data. I discussed the current station data above, but I still had to find info about the shapes of these islands! I played with a few different sources of geodata, but in the end GADM was the best match for what I wanted. By downloading the geopackage format for the US, I was able to select only the specific counties in Washington that I cared about. (Strangely, Canada didn't come with such divisions, so I actually plot all of Canada and then crop most of it out for the above map.)
The other fun bit was setting the scale factor – geopandas at first tried to make one degree of latitude the same scale as one degree of longitude. Since longitude lines get closer together as you move away from the equator, this produced an obviously distorted map. Luckily with just a small amount of trig and the handy set_aspect
function in matplotlib, I could scale longitudes to the correct (or at least least incorrect) aspect ratio.
Finally, a little work with quiver
allowed me to plot lots of arrows at once, producing the map above!
I'm happy to provide the quick-and-dirty code used to produce this graphic, if you're interested. Email me at firstname dot lastname on gmail and I'll send you the Jupyter notebook. As long as you promise not to judge me for still using python 2.7, that is. :) (EDIT: At long last, I upgraded to python 3, so you can request this notebook even if you're a 2.7-judger.)
Above all, the thing I took away from this experience is that working with geospatial data is fun! As usual, finding the raw data to work with is hard, but it's neat to produce a really relevant graphic.
Other than that, I find it fascinating how rarely ebb and flood directly oppose one another, and how in some places they actually move at nearly ninety degrees to one another, rather than 180 as you might expect. For example, up north of Orcas Island, there are a few stations, including Parker Reef, where you can see the current curve around Sucia Island.
In my planning process, this graphic came in handy several times. I hope it can be useful to others too!