diff --git a/geomagio/ObservatoryMetadata.py b/geomagio/ObservatoryMetadata.py
new file mode 100644
index 0000000000000000000000000000000000000000..b297363514b1781529c67e5b81d26f4555a659a6
--- /dev/null
+++ b/geomagio/ObservatoryMetadata.py
@@ -0,0 +1,877 @@
+"""Factory that loads metadata for an observatory"""
+
+
+# default metadata for the 14 USGS observatories.
+DEFAULT_METADATA = {
+    'BDT': {
+        'metadata': {
+            'station_name': 'Boulder Test',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '40.137',
+            'geodetic_longitude': '254.764',
+            'elevation': '1682',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 5527,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'BOU': {
+        'metadata': {
+            'station_name': 'Boulder',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '40.137',
+            'geodetic_longitude': '254.764',
+            'elevation': '1682',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 5527,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'BRW': {
+        'metadata': {
+            'station_name': 'Barrow',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '71.322',
+            'geodetic_longitude': '203.378',
+            'elevation': '12',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 16000,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'data_interval_type': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'BSL': {
+        'metadata': {
+            'station_name': 'Stennis Space Center',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '30.350',
+            'geodetic_longitude': '270.365',
+            'elevation': '8',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 1530,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'CMO': {
+        'metadata': {
+            'station_name': 'College',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '64.874',
+            'geodetic_longitude': '212.140',
+            'elevation': '197',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 16876,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        }
+    },
+    'DED': {
+        'metadata': {
+            'station_name': 'Deadhorse',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '70.356',
+            'geodetic_longitude': '211.207',
+            'elevation': '10',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 13200,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'FRD': {
+        'metadata': {
+            'station_name': 'Fredericksburg',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '38.205',
+            'geodetic_longitude': '282.627',
+            'elevation': '69',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 210942,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'FRN': {
+        'metadata': {
+            'station_name': 'Fresno',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '37.091',
+            'geodetic_longitude': '240.282',
+            'elevation': '331',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 9250,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'GUA': {
+        'metadata': {
+            'station_name': 'Guam',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '13.588',
+            'geodetic_longitude': '144.867',
+            'elevation': '140',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 1157,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'HON': {
+        'metadata': {
+            'station_name': 'Honolulu',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '21.316',
+            'geodetic_longitude': '202.000',
+            'elevation': '4',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 6920,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'NEW': {
+        'metadata': {
+            'station_name': 'Newport',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '48.265',
+            'geodetic_longitude': '242.878',
+            'elevation': '770',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 12133,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'SHU': {
+        'metadata': {
+            'station_name': 'Shumagin',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '55.348',
+            'geodetic_longitude': '199.538',
+            'elevation': '80',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 13974,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'SIT': {
+        'metadata': {
+            'station_name': 'Sitka',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '57.058',
+            'geodetic_longitude': '224.674',
+            'elevation': '24',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 16523,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'SJG': {
+        'metadata': {
+            'station_name': 'San Juan',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '18.113',
+            'geodetic_longitude': '293.849',
+            'elevation': '424',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 209800,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'TUC': {
+        'metadata': {
+            'station_name': 'Tucson',
+            'agency_name': 'United States Geological Survey (USGS)',
+            'geodetic_latitude': '32.174',
+            'geodetic_longitude': '249.267',
+            'elevation': '946',
+            'sensor_orientation': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'declination_base': 7258,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45) ',
+                'filter_comments': ['Vector 1-minute values are computed' +
+                    ' from 1-second values using the INTERMAGNET gaussian' +
+                    ' filter centered on the minute. Scalar 1-minute values' +
+                    ' are computed from 1-second values using the' +
+                    ' INTERMAGNET gaussian filter centered on the minute. ']
+            },
+            'second': {
+                'data_interval_type': 'Average 1-Second'
+            }
+        }
+    },
+    'BLC': {
+        'metadata': {
+            'station_name': 'Bake Lake',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '64.300',
+            'geodetic_longitude': '264.000',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'BRD': {
+        'metadata': {
+            'station_name': 'Brandon',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '49.600',
+            'geodetic_longitude': '262.900',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'CBB': {
+        'metadata': {
+            'station_name': 'Cambridge Bay',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '69.200',
+            'geodetic_longitude': '255.000',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'EUA': {
+        'metadata': {
+            'station_name': 'Eureka',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '55.300',
+            'geodetic_longitude': '282.300',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'FCC': {
+        'metadata': {
+            'station_name': 'Fort Churchill',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '58.800',
+            'geodetic_longitude': '265.900',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'HAD': {
+        'metadata': {
+            'station_name': 'Hartland',
+            'agency_name': 'British Geological Survey (BGS)',
+            'geodetic_latitude': '51.000',
+            'geodetic_longitude': '355.500',
+            'elevation': '0',
+            'sensor_orientation': 'HDZF',
+            'reported': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'HER': {
+        'metadata': {
+            'station_name': 'Hermanus',
+            'agency_name': 'National Research Foundation',
+            'geodetic_latitude': '-34.400',
+            'geodetic_longitude': '19.200',
+            'elevation': '0',
+            'sensor_orientation': 'HDZF',
+            'reported': 'HDZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'IQA': {
+        'metadata': {
+            'station_name': 'Iqaluit',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '63.800',
+            'geodetic_longitude': '291.500',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'MEA': {
+        'metadata': {
+            'station_name': 'Meanook',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '54.600',
+            'geodetic_longitude': '246.700',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'OTT': {
+        'metadata': {
+            'station_name': 'Ottowa',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '45.400',
+            'geodetic_longitude': '284.500',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'RES': {
+        'metadata': {
+            'station_name': 'Resolute Bay',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '74.700',
+            'geodetic_longitude': '265.100',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'SNK': {
+        'metadata': {
+            'station_name': 'Sanikiluaq',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '62.400',
+            'geodetic_longitude': '245.500',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'STJ': {
+        'metadata': {
+            'station_name': 'Saint John\'s',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '47.600',
+            'geodetic_longitude': '307.300',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'VIC': {
+        'metadata': {
+            'station_name': 'Victoria',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '48.600',
+            'geodetic_longitude': '236.600',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    },
+    'YKC': {
+        'metadata': {
+            'station_name': 'Yellow Knife',
+            'agency_name': 'Geological Survey of Canada (GSC)',
+            'geodetic_latitude': '62.400',
+            'geodetic_longitude': '245.500',
+            'elevation': '0',
+            'sensor_orientation': 'XYZF',
+            'reported': 'XYZF',
+            'sensor_sampling_rate': 0.01,
+            'is_gin': False,
+            'is_intermagnet': False,
+            'conditions_of_use': 'The Conditions of Use for data provided' +
+                    ' through INTERMAGNET and acknowledgement templates' +
+                    ' can be found at www.intermagnet.org'
+        },
+        'interval_specific': {
+            'minute': {
+                'data_interval_type': 'filtered 1-minute (00:15-01:45)'
+            },
+            'second': {
+                'data_interval_type': ''
+            }
+        }
+    }
+}
+
+
+DEFAULT_INTERVAL_SPECIFIC = {
+        'minute': {'data_interval_type': 'filtered 1-minute (00:15-01:45) '},
+        'second': {'data_interval_type': 'Average 1-Second'}
+}
+
+
+class ObservatoryMetadata(object):
+    """Helper class for providing all the metadata needed for a geomag
+          timeseries.
+    Notes
+    -----
+    Currently the only method is set_metadata.  Eventually this will probably
+    pull from a database, or maybe a config file.
+    """
+
+    def __init__(self, metadata=None, interval_specific=None):
+        self.metadata = metadata or DEFAULT_METADATA
+        self.interval_specific = interval_specific or \
+                DEFAULT_INTERVAL_SPECIFIC
+
+    def set_metadata(self, stats, observatory, channel, type, interval):
+        """Set timeseries metadata (aka a traces stats)
+
+        Parameters
+        ----------
+        stats : obspy.core.trace.stats
+            the class associated with a given obspy trace, which contains
+            it's metadata
+        observatory : string
+            the observatory code to look up.
+        channel : str
+            single character channel {H, E, D, Z, F}
+        type : {'variation', 'quasi-definitive'}
+            data type.
+        interval : {'minute', 'second'}
+            data interval.
+
+        Returns
+        -------
+        obspy.core.trace.stats
+          the combined stats and the default metadata.
+        """
+        stats['channel'] = channel
+        stats['data_interval'] = interval
+        stats['data_type'] = type
+        # copy in standard metadata
+        metadata = self.metadata[observatory]['metadata']
+        for key in metadata:
+            stats[key] = metadata[key]
+        # copy in interval specific metadata
+        interval_specific = self.interval_specific
+        if 'interval_specific' in self.metadata[observatory]:
+            interval_specific = \
+                self.metadata[observatory]['interval_specific']
+        # stats['data_interval_type'] = data_interval_type[interval]
+        for key in interval_specific[interval]:
+            stats[key] = interval_specific[interval][key]