Falmouth Meteotsunami (6/13/2013)

Falmouth experienced a meteotsunami on the afternoon of Thursday, June 13, 2013. See Woods Hole gauge data, below.

Looking quickly at some other buoys and gauges you can see this from Long Island to Chatham, but Woods Hole/Falmouth appears to have been the focal point. Chuck Martinsen from Falmouth DNR has great security camera video of Falmouth Inner Harbor that shows the current ripping in and out and water level bouncing up and down about 2-3 ft over the course of an hour or so. I’ll share some out tomorrow. He also reports Cotuit marshes being flooded and exposed several times as well. The WBNERR folks see it in their Menauhant gauge, too.

Chuck is interested in learning more, including whether the currents in the local harbors might have been sufficient to mobilize (contaminated) sediments. Anybody got time to explain to him what’s going on?

The atmos pressure at various buoys and gauges is also pretty telling.

And if you look at the 24 hour radar loop you can see the frontal passage forcing.
http://www.intellicast.com/National/Radar/Yesterday.aspx


In [1]:
from datetime import datetime
import pandas as pd
from owslib.sos import SensorObservationService
from owslib.fes import FilterCapabilities
from owslib.ows import OperationsMetadata

Get water levels from CO-OPS


In [2]:
coops=SensorObservationService('http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?service=SOS&request=GetCapabilities&version=1.0.0')

In [3]:
getob = coops.get_operation_by_name('getobservation')

In [4]:
getob.parameters


Out[4]:
{'dataType': {'values': ['PreliminarySixMinute',
   'PreliminaryOneMinute',
   'VerifiedSixMinute',
   'VerifiedHourlyHeight',
   'VerifiedHighLow',
   'VerifiedDailyMean',
   'SixMinuteTidePredictions',
   'HourlyTidePredictions',
   'HighLowTidePredictions']},
 'epoch': {'values': ['Current', 'Superseded']},
 'eventTime': {'values': ['eventTime element']},
 'observedProperty': {'values': ['air_temperature',
   'air_pressure',
   'sea_water_electrical_conductivity',
   'currents',
   'sea_water_salinity',
   'water_surface_height_above_reference_datum',
   'sea_surface_height_amplitude_due_to_equilibrium_ocean_tide',
   'sea_water_temperature',
   'winds',
   'harmonic_constituents',
   'datums',
   'relative_humidity',
   'rain_fall',
   'visibility']},
 'offering': {'values': ['urn:ioos:station:NOAA.NOS.CO-OPS:stationid',
   'urn:ioos:network:NOAA.NOS.CO-OPS:networkid']},
 'procedure': {'values': ['procedure element']},
 'responseFormat': {'values': ['text/csv',
   'text/tab-separated-values',
   'text/xml;schema="ioos/0.6.1"',
   'application/ioos+xml;version=0.6.1',
   'application/vnd.google-earth.kml+xml']},
 'result': {'values': ['VerticalDatum==urn:ioos:def:datum:noaa::IGLD',
   'VerticalDatum==urn:ioos:def:datum:noaa::MHHW',
   'VerticalDatum==urn:ioos:def:datum:noaa::MHW',
   'VerticalDatum==urn:ioos:def:datum:noaa::MLLW',
   'VerticalDatum==urn:ioos:def:datum:noaa::MLW',
   'VerticalDatum==urn:ioos:def:datum:noaa::MSL',
   'VerticalDatum==urn:ioos:def:datum:noaa::MTL',
   'VerticalDatum==urn:ogc:def:datum:epsg::5103',
   'VerticalDatum==urn:ioos:def:datum:noaa::STND']},
 'service': {'values': ['SOS']},
 'timeZone': {'values': ['GMT', 'LST']},
 'unit': {'values': ['Meters', 'Feet']},
 'version': {'values': ['1.0.0']}}

In [5]:
contents = coops.contents

In [6]:
print coops.offerings[1].name
#print contents.keys()
print contents['station-8447930']


urn:ioos:network:NOAA.NOS.CO-OPS:CurrentsActive
Offering id: station-8447930, name: urn:ioos:station:NOAA.NOS.CO-OPS:8447930

In [7]:
import urllib2
df = pd.read_csv(url,index_col='date',parse_dates=True)  # skip the units row


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-10d5cf36567b> in <module>()
      1 import urllib2
----> 2 df = pd.read_csv(url,index_col='date',parse_dates=True)  # skip the units row

NameError: name 'url' is not defined

In [8]:
response = coops.get_observation(offerings=['urn:ioos:station:NOAA.NOS.CO-OPS:8447930'],
                                 responseFormat='text/csv',
                                 observedProperties=['water_surface_height_above_reference_datum'],
                                 eventTime='2013-06-13T00:00:00Z/2013-06-14T00:00:00Z')

In [9]:
df = pd.read_csv(coops.get_observation(offerings=['urn:ioos:station:NOAA.NOS.CO-OPS:8447930'],
                                 responseFormat='text/csv',
                                 observedProperties=['water_surface_height_above_reference_datum'],
                                 eventTime='2013-06-13T00:00:00Z/2013-06-14T00:00:00Z')),index_col='date',parse_dates=True)  # skip the units row


  File "<ipython-input-9-aa0b78d2643b>", line 4
    eventTime='2013-06-13T00:00:00Z/2013-06-14T00:00:00Z')),index_col='date',parse_dates=True)  # skip the units row
                                                                                             ^
SyntaxError: invalid syntax

In [10]:
url='http://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS?request=GetObservation&service=SOS&responseFormat=text/csv&version=1.0.0&offering=urn:ioos:station:NOAA.NOS.CO-OPS:8447930&observedProperty=water_surface_height_above_reference_datum&eventTime=2013-06-13T00:00:00Z/2013-06-14T00:00:00Z'
# Load the CSV data directly into Pandas
df = pd.read_csv(url,index_col='date_time',parse_dates=True)  # skip the units row 
wf=df['water_surface_height_above_reference_datum (m)']
wf.plot()


Out[10]:
<matplotlib.axes.AxesSubplot at 0x59fdb90>

Get Air Pressure and Wind Speed from NDBC


In [11]:
ndbc=SensorObservationService('http://sdf.ndbc.noaa.gov/sos/server.php?request=GetCapabilities&service=SOS')

In [12]:
id=ndbc.identification
id.title


Out[12]:
'National Data Buoy Center SOS'

In [13]:
contents = ndbc.contents
network = contents['network-all']
network.description


Out[13]:
'All stations on the NDBC SOS server'

In [14]:
id.title


Out[14]:
'National Data Buoy Center SOS'

In [15]:
rfs = network.response_formats

In [16]:
print '\n'.join(rfs)


text/xml;subtype="om/1.0.0"
text/csv
text/tab-separated-values
application/vnd.google-earth.kml+xml
text/xml;schema="ioos/0.6.1"
application/ioos+xml;version=0.6.1

In [17]:
station = contents['station-46084']

In [18]:
station.id


Out[18]:
'station-46084'

In [19]:
getob = ndbc.get_operation_by_name('getobservation')

In [20]:
getob.parameters


Out[20]:
{'observedProperty': {'values': ['air_temperature',
   'air_pressure_at_sea_level',
   'sea_water_electrical_conductivity',
   'currents',
   'sea_water_salinity',
   'sea_floor_depth_below_sea_surface',
   'sea_water_temperature',
   'waves',
   'winds']},
 'responseFormat': {'values': ['text/xml;subtype="om/1.0.0"',
   'text/csv',
   'text/tab-separated-values',
   'application/vnd.google-earth.kml+xml',
   'text/xml;schema="ioos/0.6.1"',
   'application/ioos+xml;version=0.6.1']}}

In [21]:
print filter


<built-in function filter>

In [ ]: