diff --git a/README.md b/README.md
index 4dc095200..7337282ea 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,10 @@ Golang module to load the meta data csv files.
Golang module to configure and describe instrument responses.
+## tides
+
+Golang module to configure and describe tsunami gauge tidal parameters.
+
## tools
Golang tools to manage and process the meta data.
diff --git a/test.sh b/test.sh
index 740b6bb78..e8b47b8a7 100755
--- a/test.sh
+++ b/test.sh
@@ -10,6 +10,7 @@ error_handler () {
trap error_handler ERR
go test ./meta
+go test ./tides
go test ./tests
go test ./tools/stationxml
go test ./tools/altus
diff --git a/tides/README.md b/tides/README.md
new file mode 100644
index 000000000..a03254605
--- /dev/null
+++ b/tides/README.md
@@ -0,0 +1,113 @@
+
+
+# tides
+`import "github.com/GeoNet/delta/tides"`
+
+* [Overview](#pkg-overview)
+* [Index](#pkg-index)
+* [Subdirectories](#pkg-subdirectories)
+
+## Overview
+Package tides provides an embeddable mechanism for providing tidal constituents for given gauge sites
+that can be used for tide predication.
+
+
+
+
+## Index
+* [type Constituent](#Constituent)
+ * [func (c Constituent) String() string](#Constituent.String)
+* [type Tide](#Tide)
+ * [func Lookup(code string) *Tide](#Lookup)
+ * [func (t Tide) Zone() float64](#Tide.Zone)
+
+
+#### Package files
+[auto.go](/src/github.com/GeoNet/delta/tides/auto.go) [tides.go](/src/github.com/GeoNet/delta/tides/tides.go)
+
+
+
+
+
+
+## type [Constituent](/src/target/tides.go?s=451:534#L14)
+``` go
+type Constituent struct {
+ Name string
+ Amplitude float64
+ Lag float64
+}
+```
+Constitutent stores the calculated amplotude and lag for a named tidal phase, the amplitude
+and lag are given in units of meters and degrees respectively.
+
+
+
+
+
+
+
+
+
+
+### func (Constituent) [String](/src/target/tides.go?s=607:643#L21)
+``` go
+func (c Constituent) String() string
+```
+String provides a standard representation of the tidal constituent.
+
+
+
+
+## type [Tide](/src/target/tides.go?s=1024:1202#L29)
+``` go
+type Tide struct {
+ Code string
+ Network string
+ Number string
+ TimeZone float64
+ Latitude float64
+ Longitude float64
+ Crex string
+
+ Constituents []Constituent
+}
+```
+Tide provides the general parameters needed to predict tides at a given site and the
+associated tidal consitituents. The TimeZone, Latitude, and Longitude are expected
+to be the parameters used to generated the tidal prediction constituents and may
+differ from the geographic values recorded elsewhere.
+
+
+
+
+
+
+
+### func [Lookup](/src/target/tides.go?s=1508:1538#L49)
+``` go
+func Lookup(code string) *Tide
+```
+Lookup will return a Tide pointer for the requested site code.
+A nil pointer will be returned if a code cannot be found.
+
+
+
+
+
+### func (Tide) [Zone](/src/target/tides.go?s=1311:1339#L43)
+``` go
+func (t Tide) Zone() float64
+```
+Zone provides a conversion of the time zone parameter for use with common tidal
+prediction software.
+
+
+
+
+
+
+
+
+- - -
+Generated by [godoc2md](http://godoc.org/github.com/davecheney/godoc2md)
diff --git a/tides/auto.go b/tides/auto.go
new file mode 100644
index 000000000..f0b4a8838
--- /dev/null
+++ b/tides/auto.go
@@ -0,0 +1,2414 @@
+package tides
+
+/*
+ * WARNING: CODE GENERATED AUTOMATICALLY.
+ *
+ * To update: run "go generate" in the tide directory and
+ * commit any changes to the generated files.
+ *
+ * THIS FILE SHOULD NOT BE EDITED BY HAND.
+ *
+ */
+
+var _tides = map[string]Tide{
+
+ "AUCT": {
+ Code: "AUCT",
+ Network: "TG",
+ Number: "363",
+ TimeZone: 180,
+ Latitude: 36.5,
+ Longitude: 174.47,
+ Crex: "-3683144 17478654 AUCT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 186.2448,
+ Lag: 0,
+ },
+
+ {
+ Name: "SA",
+ Amplitude: 3.8781,
+ Lag: 112.03,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 1.7004,
+ Lag: 129.97,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 2.3003,
+ Lag: 170.28,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 7.033,
+ Lag: 175.54,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.7139,
+ Lag: 144.26,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.9473,
+ Lag: 149.14,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 3.2652,
+ Lag: 157.63,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 23.3629,
+ Lag: 172.04,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 4.5124,
+ Lag: 175.16,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.8018,
+ Lag: 121.68,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 114.3039,
+ Lag: 204.7,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 1.0073,
+ Lag: 215.52,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 2.7755,
+ Lag: 223.51,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 1.4558,
+ Lag: 310.15,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 17.6408,
+ Lag: 276.08,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 4.2893,
+ Lag: 264.95,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 1.3673,
+ Lag: 203.22,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 1.3465,
+ Lag: 340.68,
+ },
+
+ {
+ Name: "MN4",
+ Amplitude: 0.6515,
+ Lag: 99.46,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 2.5989,
+ Lag: 116.36,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 1.3002,
+ Lag: 217.92,
+ },
+
+ {
+ Name: "2MN6",
+ Amplitude: 0.7282,
+ Lag: 249.37,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 1.2431,
+ Lag: 288.19,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.4797,
+ Lag: 303.58,
+ },
+
+ {
+ Name: "M8",
+ Amplitude: 0.5229,
+ Lag: 232.85,
+ },
+ },
+ },
+
+ "CHIT": {
+ Code: "CHIT",
+ Network: "TG",
+ Number: "352",
+ TimeZone: 180,
+ Latitude: 44.02,
+ Longitude: 176.22,
+ Crex: "-4402404 -17636748 CHIT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 281.9627,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 0.5506,
+ Lag: 346.94,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.1752,
+ Lag: 340.81,
+ },
+
+ {
+ Name: "NO1",
+ Amplitude: 0.5028,
+ Lag: 81,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 1.8459,
+ Lag: 71.91,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 1.3109,
+ Lag: 57.42,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 10.7514,
+ Lag: 100.13,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 46.9906,
+ Lag: 136.69,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 1.9529,
+ Lag: 236.94,
+ },
+
+ {
+ Name: "MO3",
+ Amplitude: 0.2862,
+ Lag: 260.88,
+ },
+
+ {
+ Name: "2MK5",
+ Amplitude: 0.2592,
+ Lag: 292.52,
+ },
+ },
+ },
+
+ "CHST": {
+ Code: "CHST",
+ Network: "TG",
+ Number: "407",
+ TimeZone: 180,
+ Latitude: 41.54,
+ Longitude: 171.26,
+ Crex: "-4190301 17143411 CHST",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 241.3055,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 1.1179,
+ Lag: 19.86,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 3.006,
+ Lag: 45.04,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 2.0385,
+ Lag: 171.85,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 3.3697,
+ Lag: 262.96,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 3.2984,
+ Lag: 274.32,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 22.0065,
+ Lag: 287.35,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 4.2226,
+ Lag: 289.84,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 106.9059,
+ Lag: 308.06,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 3.0678,
+ Lag: 324.78,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 1.6444,
+ Lag: 1.58,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 27.6077,
+ Lag: 346.51,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 7.8118,
+ Lag: 338.56,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.532,
+ Lag: 136.75,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 0.791,
+ Lag: 22.5,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 1.0329,
+ Lag: 104.47,
+ },
+ },
+ },
+
+ "CPIT": {
+ Code: "CPIT",
+ Network: "TG",
+ Number: "313",
+ TimeZone: 180,
+ Latitude: 40.55,
+ Longitude: 176.13,
+ Crex: "-4089929 17623168 CPIT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 156.3866,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 0.8068,
+ Lag: 9.99,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 3.0819,
+ Lag: 26.65,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.0222,
+ Lag: 93.39,
+ },
+
+ {
+ Name: "S1",
+ Amplitude: 0.4633,
+ Lag: 228.36,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 3.1159,
+ Lag: 99.48,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.582,
+ Lag: 62.77,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.2475,
+ Lag: 78.61,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.26,
+ Lag: 79.39,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 14.3866,
+ Lag: 105.5,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.7041,
+ Lag: 112.94,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.5816,
+ Lag: 43.96,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 63.2718,
+ Lag: 146.91,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.4427,
+ Lag: 162.88,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 2.2918,
+ Lag: 197.26,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.7059,
+ Lag: 291.38,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 2.7174,
+ Lag: 228.36,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 0.4287,
+ Lag: 172.82,
+ },
+
+ {
+ Name: "MO3",
+ Amplitude: 0.2572,
+ Lag: 324.87,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.4612,
+ Lag: 156.92,
+ },
+
+ {
+ Name: "SO3",
+ Amplitude: 0.1932,
+ Lag: 74.78,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.3169,
+ Lag: 277.67,
+ },
+
+ {
+ Name: "MN4",
+ Amplitude: 0.2732,
+ Lag: 106.69,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.4454,
+ Lag: 146.35,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 0.0943,
+ Lag: 165.66,
+ },
+
+ {
+ Name: "S4",
+ Amplitude: 0.1067,
+ Lag: 206.41,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 0.1033,
+ Lag: 93.61,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.1234,
+ Lag: 183.87,
+ },
+ },
+ },
+
+ "GBIT": {
+ Code: "GBIT",
+ Network: "TG",
+ Number: "371",
+ TimeZone: 180,
+ Latitude: 36.11,
+ Longitude: 175.29,
+ Crex: "-3618905 17548887 GBIT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 576.5416,
+ Lag: 0,
+ },
+
+ {
+ Name: "SA",
+ Amplitude: 6.2418,
+ Lag: 128.1,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 1.3198,
+ Lag: 125.51,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.6012,
+ Lag: 161.65,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 5.7465,
+ Lag: 169.47,
+ },
+
+ {
+ Name: "J1",
+ Amplitude: 0.473,
+ Lag: 190.1,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.5373,
+ Lag: 111.62,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.0005,
+ Lag: 133.47,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.2433,
+ Lag: 132.77,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 15.8293,
+ Lag: 162.8,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 3.1929,
+ Lag: 163.77,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.652,
+ Lag: 132.08,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 78.2303,
+ Lag: 194.67,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.248,
+ Lag: 216.42,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 2.0753,
+ Lag: 274.03,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.9781,
+ Lag: 298.31,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 11.3867,
+ Lag: 265.12,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 2.7357,
+ Lag: 252.56,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.5029,
+ Lag: 187.16,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.4444,
+ Lag: 331.2,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.2162,
+ Lag: 235.47,
+ },
+ },
+ },
+
+ "GIST": {
+ Code: "GIST",
+ Network: "TG",
+ Number: "78",
+ TimeZone: 180,
+ Latitude: 38.4,
+ Longitude: 178.02,
+ Crex: "-3867541 17802288 GIST",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 122.83,
+ Lag: 0,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 1.2133,
+ Lag: 84.85,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.5217,
+ Lag: 155.55,
+ },
+
+ {
+ Name: "S1",
+ Amplitude: 1.2203,
+ Lag: 258.04,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 4.124,
+ Lag: 157.74,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.6472,
+ Lag: 70,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.005,
+ Lag: 97.72,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.0504,
+ Lag: 100.01,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 14.1895,
+ Lag: 123.49,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.7409,
+ Lag: 130.76,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.7865,
+ Lag: 73.77,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 64.0412,
+ Lag: 163.89,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 2.433,
+ Lag: 201.14,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.7684,
+ Lag: 294.53,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 4.963,
+ Lag: 254.9,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 0.92,
+ Lag: 234.57,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.4629,
+ Lag: 167,
+ },
+ },
+ },
+
+ "KAIT": {
+ Code: "KAIT",
+ Network: "TG",
+ Number: "106",
+ TimeZone: 180,
+ Latitude: 42.25,
+ Longitude: 173.42,
+ Crex: "-4241288 17370277 KAIT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 107.6,
+ Lag: 0,
+ },
+
+ {
+ Name: "2Q1",
+ Amplitude: 0.3485,
+ Lag: 348.01,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 1.0443,
+ Lag: 21.05,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 3.7728,
+ Lag: 39.91,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.2025,
+ Lag: 84.03,
+ },
+
+ {
+ Name: "S1",
+ Amplitude: 0.7756,
+ Lag: 249.61,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 3.5816,
+ Lag: 92.16,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.5174,
+ Lag: 36.21,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.1596,
+ Lag: 58.33,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.3646,
+ Lag: 66.39,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 14.5616,
+ Lag: 95.19,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.8618,
+ Lag: 99.84,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.8941,
+ Lag: 349.09,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 64.718,
+ Lag: 134.03,
+ },
+
+ {
+ Name: "H2",
+ Amplitude: 0.7224,
+ Lag: 356.63,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.4588,
+ Lag: 140.08,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 1.7848,
+ Lag: 189.49,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.7229,
+ Lag: 283.32,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 2.5611,
+ Lag: 169.44,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 0.9921,
+ Lag: 130.57,
+ },
+
+ {
+ Name: "MO3",
+ Amplitude: 0.3681,
+ Lag: 339.22,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.3884,
+ Lag: 154.79,
+ },
+
+ {
+ Name: "SO3",
+ Amplitude: 0.282,
+ Lag: 68.01,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.3675,
+ Lag: 288.98,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.179,
+ Lag: 171.97,
+ },
+ },
+ },
+
+ "LOTT": {
+ Code: "LOTT",
+ Network: "TG",
+ Number: "357",
+ TimeZone: 180,
+ Latitude: 37.33,
+ Longitude: 178.1,
+ Crex: "-3755040 17815904 LOTT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 322.4234,
+ Lag: 0,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 1.6056,
+ Lag: 133.28,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 2.2381,
+ Lag: 169.35,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 5.7158,
+ Lag: 174.41,
+ },
+
+ {
+ Name: "J1",
+ Amplitude: 0.5407,
+ Lag: 198.32,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 1.8528,
+ Lag: 123.64,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.0458,
+ Lag: 123.04,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 15.4855,
+ Lag: 150.11,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 3.0762,
+ Lag: 155,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 69.4474,
+ Lag: 183.62,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 0.6569,
+ Lag: 196.08,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 9.0037,
+ Lag: 264.37,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 2.0797,
+ Lag: 249.37,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.4583,
+ Lag: 163.47,
+ },
+ },
+ },
+
+ "MNKT": {
+ Code: "MNKT",
+ Network: "TG",
+ Number: "90",
+ TimeZone: 180,
+ Latitude: 37.03,
+ Longitude: 174.31,
+ Crex: "-3704657 17451175 MNKT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 271.5374,
+ Lag: 0,
+ },
+
+ {
+ Name: "MSM",
+ Amplitude: 2.4209,
+ Lag: 132.22,
+ },
+
+ {
+ Name: "MM",
+ Amplitude: 2.7595,
+ Lag: 92.85,
+ },
+
+ {
+ Name: "MSF",
+ Amplitude: 1.6804,
+ Lag: 236.47,
+ },
+
+ {
+ Name: "MF",
+ Amplitude: 2.0731,
+ Lag: 57.15,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 1.4126,
+ Lag: 94.86,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.8264,
+ Lag: 190.15,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 5.6148,
+ Lag: 197.2,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.7489,
+ Lag: 252.48,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.8021,
+ Lag: 291.88,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 20.5731,
+ Lag: 268.13,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 4.2849,
+ Lag: 259.92,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 108.9206,
+ Lag: 284.95,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 3.7672,
+ Lag: 301.64,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 1.8093,
+ Lag: 353.76,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 28.7419,
+ Lag: 331.9,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 7.9585,
+ Lag: 322.77,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 1.9089,
+ Lag: 62.72,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 0.9103,
+ Lag: 117.11,
+ },
+
+ {
+ Name: "2MN6",
+ Amplitude: 0.5579,
+ Lag: 158.3,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 0.9071,
+ Lag: 184.18,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.8261,
+ Lag: 243.29,
+ },
+
+ {
+ Name: "2SM6",
+ Amplitude: 0.2891,
+ Lag: 293.05,
+ },
+ },
+ },
+
+ "NAPT": {
+ Code: "NAPT",
+ Network: "TG",
+ Number: "97",
+ TimeZone: 180,
+ Latitude: 39.29,
+ Longitude: 176.55,
+ Crex: "-3947566 17692007 NAPT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 93.5663,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 0.6303,
+ Lag: 2.84,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.4184,
+ Lag: 29.76,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.0036,
+ Lag: 119.36,
+ },
+
+ {
+ Name: "S1",
+ Amplitude: 1.1244,
+ Lag: 248.57,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 3.1537,
+ Lag: 118.67,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.4664,
+ Lag: 67.53,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 1.938,
+ Lag: 88.99,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.3182,
+ Lag: 90.11,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 15.4426,
+ Lag: 118.8,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.9327,
+ Lag: 122.53,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.6002,
+ Lag: 76.42,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 68.055,
+ Lag: 155.7,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 0.9891,
+ Lag: 190.43,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.7463,
+ Lag: 289.92,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 4.074,
+ Lag: 242.7,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 0.6126,
+ Lag: 210.04,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.4546,
+ Lag: 155.78,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.3699,
+ Lag: 287.81,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.3403,
+ Lag: 191.09,
+ },
+ },
+ },
+
+ "NCPT": {
+ Code: "NCPT",
+ Network: "TG",
+ Number: "162",
+ TimeZone: 180,
+ Latitude: 34.25,
+ Longitude: 173.02,
+ Crex: "-3441483 17304870 NCPT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 432.9637,
+ Lag: 0,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.0779,
+ Lag: 159.53,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 2.5027,
+ Lag: 179.24,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 7.4575,
+ Lag: 189.91,
+ },
+
+ {
+ Name: "J1",
+ Amplitude: 0.5498,
+ Lag: 210.11,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 1.9818,
+ Lag: 163.88,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 1.976,
+ Lag: 166.19,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 16.4199,
+ Lag: 188.52,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 3.1869,
+ Lag: 193.02,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 79.8633,
+ Lag: 218.03,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.6805,
+ Lag: 238.69,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 1.1228,
+ Lag: 240.05,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 15.2094,
+ Lag: 280.14,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 3.8989,
+ Lag: 268.37,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.2933,
+ Lag: 194.32,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.3195,
+ Lag: 3.12,
+ },
+ },
+ },
+
+ "OTAT": {
+ Code: "OTAT",
+ Network: "TG",
+ Number: "362",
+ TimeZone: 180,
+ Latitude: 45.49,
+ Longitude: 170.39,
+ Crex: "-4581435 17062939 OTAT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 111.9086,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 0.9754,
+ Lag: 37.07,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.8872,
+ Lag: 51.83,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 0.9447,
+ Lag: 91.55,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 2.6964,
+ Lag: 90.12,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.3992,
+ Lag: 27.22,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.3698,
+ Lag: 41.01,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.0833,
+ Lag: 48.64,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 17.78,
+ Lag: 70.29,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 3.4956,
+ Lag: 73.37,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.6899,
+ Lag: 13.77,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 77.428,
+ Lag: 99.4,
+ },
+
+ {
+ Name: "H2",
+ Amplitude: 0.4902,
+ Lag: 327.52,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.8605,
+ Lag: 78.8,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 2.5239,
+ Lag: 94.93,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 9.6171,
+ Lag: 110.44,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 3.1924,
+ Lag: 98.01,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.5901,
+ Lag: 294.85,
+ },
+
+ {
+ Name: "MN4",
+ Amplitude: 0.8293,
+ Lag: 196.54,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 1.1298,
+ Lag: 200.29,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 0.4152,
+ Lag: 198.34,
+ },
+
+ {
+ Name: "2MN6",
+ Amplitude: 0.9237,
+ Lag: 264.7,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 1.5875,
+ Lag: 299.93,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.4971,
+ Lag: 311.97,
+ },
+
+ {
+ Name: "M8",
+ Amplitude: 0.2221,
+ Lag: 83.27,
+ },
+ },
+ },
+
+ "PUYT": {
+ Code: "PUYT",
+ Network: "TG",
+ Number: "355",
+ TimeZone: 180,
+ Latitude: 46.05,
+ Longitude: 166.35,
+ Crex: "-4608478 16658941 PUYT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 622.0381,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 1.3092,
+ Lag: 15.22,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 3.5668,
+ Lag: 55.65,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 0.7953,
+ Lag: 112.15,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 2.8795,
+ Lag: 132.31,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.7567,
+ Lag: 272.75,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.5772,
+ Lag: 286.01,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.8693,
+ Lag: 295.34,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 17.5359,
+ Lag: 316.89,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 3.2478,
+ Lag: 316.79,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.6575,
+ Lag: 273.18,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 78.2863,
+ Lag: 337.96,
+ },
+
+ {
+ Name: "H2",
+ Amplitude: 0.7376,
+ Lag: 234.65,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.7338,
+ Lag: 333.63,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 1.3218,
+ Lag: 352.56,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.9637,
+ Lag: 29.05,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 18.704,
+ Lag: 14,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 5.1745,
+ Lag: 3.54,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.2856,
+ Lag: 191.52,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.338,
+ Lag: 208.78,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.2844,
+ Lag: 192.89,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.2441,
+ Lag: 136.69,
+ },
+ },
+ },
+
+ "RBCT": {
+ Code: "RBCT",
+ Network: "TG",
+ Number: "367",
+ TimeZone: 180,
+ Latitude: 29.17,
+ Longitude: -177.54,
+ Crex: "-2928002 -17789440 RBCT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 394.7686,
+ Lag: 0,
+ },
+
+ {
+ Name: "MM",
+ Amplitude: 2.4847,
+ Lag: 69.9,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.9761,
+ Lag: 208.52,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 5.7027,
+ Lag: 228.32,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.7986,
+ Lag: 124.25,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 12.4652,
+ Lag: 160.72,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 51.0005,
+ Lag: 195.61,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 7.1953,
+ Lag: 291.88,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.4157,
+ Lag: 205.91,
+ },
+
+ {
+ Name: "MN4",
+ Amplitude: 0.2634,
+ Lag: 204.55,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.3722,
+ Lag: 246.23,
+ },
+ },
+ },
+
+ "RFRT": {
+ Code: "RFRT",
+ Network: "TG",
+ Number: "198",
+ TimeZone: 180,
+ Latitude: 29.15,
+ Longitude: -177.55,
+ Crex: "-2925114 -17790384 RFRT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 272.0115,
+ Lag: 0,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.1801,
+ Lag: 204.63,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.781,
+ Lag: 113.24,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 5.941,
+ Lag: 211.88,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 1.2662,
+ Lag: 128.22,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 1.565,
+ Lag: 127.41,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 11.2711,
+ Lag: 161.39,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.1586,
+ Lag: 164.4,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 53.2427,
+ Lag: 195.03,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 8.2156,
+ Lag: 280.72,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 1.9792,
+ Lag: 274.41,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.415,
+ Lag: 191.37,
+ },
+ },
+ },
+
+ "SUMT": {
+ Code: "SUMT",
+ Network: "TG",
+ Number: "370",
+ TimeZone: 180,
+ Latitude: 43.34,
+ Longitude: 172.46,
+ Crex: "-4357010 17277383 SUMT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 11.2714,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 0.7754,
+ Lag: 48.24,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 2.5452,
+ Lag: 51.28,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.4832,
+ Lag: 100.01,
+ },
+
+ {
+ Name: "S1",
+ Amplitude: 1.0575,
+ Lag: 212.93,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 4.6079,
+ Lag: 94.68,
+ },
+
+ {
+ Name: "EPS2",
+ Amplitude: 0.6091,
+ Lag: 40.74,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 2.6123,
+ Lag: 59.35,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 2.9501,
+ Lag: 60.91,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 19.1924,
+ Lag: 89.65,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 3.6012,
+ Lag: 93.93,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 83.4363,
+ Lag: 125.55,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 1.8929,
+ Lag: 160.28,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 5.4494,
+ Lag: 151.84,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 1.826,
+ Lag: 121.83,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.5647,
+ Lag: 278.57,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.5722,
+ Lag: 72.95,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 0.3989,
+ Lag: 132.34,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 0.6521,
+ Lag: 80.38,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.6001,
+ Lag: 148.12,
+ },
+ },
+ },
+
+ "TAUT": {
+ Code: "TAUT",
+ Network: "TG",
+ Number: "73",
+ TimeZone: 180,
+ Latitude: 37.39,
+ Longitude: 176.11,
+ Crex: "-3764109 17618118 TAUT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 103.8549,
+ Lag: 0,
+ },
+
+ {
+ Name: "SA",
+ Amplitude: 3.8358,
+ Lag: 111.75,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 1.3311,
+ Lag: 132.24,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 1.6652,
+ Lag: 176.73,
+ },
+
+ {
+ Name: "S1",
+ Amplitude: 0.5511,
+ Lag: 247.93,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 5.3781,
+ Lag: 180.96,
+ },
+
+ {
+ Name: "J1",
+ Amplitude: 0.3675,
+ Lag: 212.91,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 1.7845,
+ Lag: 141.53,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 1.6915,
+ Lag: 158.27,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 14.2833,
+ Lag: 165.09,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.7682,
+ Lag: 166.84,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 70.1175,
+ Lag: 199.04,
+ },
+
+ {
+ Name: "LDA2",
+ Amplitude: 0.7923,
+ Lag: 213.96,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 2.4379,
+ Lag: 220.38,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.7983,
+ Lag: 311.91,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 8.73,
+ Lag: 278.6,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 2.0518,
+ Lag: 267.65,
+ },
+
+ {
+ Name: "MSN2",
+ Amplitude: 0.1916,
+ Lag: 116.25,
+ },
+
+ {
+ Name: "MO3",
+ Amplitude: 0.2406,
+ Lag: 37.16,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.458,
+ Lag: 193,
+ },
+
+ {
+ Name: "MK3",
+ Amplitude: 0.3188,
+ Lag: 162.97,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.3649,
+ Lag: 321.24,
+ },
+
+ {
+ Name: "MN4",
+ Amplitude: 0.8921,
+ Lag: 172.11,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 1.9453,
+ Lag: 203.79,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 0.4649,
+ Lag: 293.63,
+ },
+
+ {
+ Name: "2MK5",
+ Amplitude: 0.1509,
+ Lag: 230.46,
+ },
+
+ {
+ Name: "2MN6",
+ Amplitude: 0.6261,
+ Lag: 232.01,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 1.2038,
+ Lag: 267.17,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.2655,
+ Lag: 348.54,
+ },
+
+ {
+ Name: "M8",
+ Amplitude: 0.2489,
+ Lag: 199.77,
+ },
+ },
+ },
+
+ "WLGT": {
+ Code: "WLGT",
+ Network: "TG",
+ Number: "71",
+ TimeZone: 180,
+ Latitude: 41.17,
+ Longitude: 174.47,
+ Crex: "-4128448 17477985 WLGT",
+ Constituents: []Constituent{
+
+ {
+ Name: "Z0",
+ Amplitude: 108.3282,
+ Lag: 0,
+ },
+
+ {
+ Name: "Q1",
+ Amplitude: 0.9496,
+ Lag: 6.46,
+ },
+
+ {
+ Name: "O1",
+ Amplitude: 3.1988,
+ Lag: 28.22,
+ },
+
+ {
+ Name: "P1",
+ Amplitude: 0.9666,
+ Lag: 83.63,
+ },
+
+ {
+ Name: "K1",
+ Amplitude: 2.538,
+ Lag: 88.25,
+ },
+
+ {
+ Name: "2N2",
+ Amplitude: 1.5607,
+ Lag: 63.52,
+ },
+
+ {
+ Name: "MU2",
+ Amplitude: 1.8484,
+ Lag: 68.29,
+ },
+
+ {
+ Name: "N2",
+ Amplitude: 12.1684,
+ Lag: 96.37,
+ },
+
+ {
+ Name: "NU2",
+ Amplitude: 2.2328,
+ Lag: 101.88,
+ },
+
+ {
+ Name: "H1",
+ Amplitude: 0.5161,
+ Lag: 125.27,
+ },
+
+ {
+ Name: "M2",
+ Amplitude: 49.1058,
+ Lag: 136.28,
+ },
+
+ {
+ Name: "H2",
+ Amplitude: 0.5215,
+ Lag: 107.7,
+ },
+
+ {
+ Name: "L2",
+ Amplitude: 0.7445,
+ Lag: 151.97,
+ },
+
+ {
+ Name: "T2",
+ Amplitude: 0.7202,
+ Lag: 316.02,
+ },
+
+ {
+ Name: "S2",
+ Amplitude: 2.5238,
+ Lag: 351.12,
+ },
+
+ {
+ Name: "K2",
+ Amplitude: 0.966,
+ Lag: 28.22,
+ },
+
+ {
+ Name: "MO3",
+ Amplitude: 0.2923,
+ Lag: 359.52,
+ },
+
+ {
+ Name: "M3",
+ Amplitude: 0.6959,
+ Lag: 174.18,
+ },
+
+ {
+ Name: "SO3",
+ Amplitude: 0.3806,
+ Lag: 93.1,
+ },
+
+ {
+ Name: "MK3",
+ Amplitude: 0.346,
+ Lag: 141.6,
+ },
+
+ {
+ Name: "SK3",
+ Amplitude: 0.4333,
+ Lag: 213,
+ },
+
+ {
+ Name: "MN4",
+ Amplitude: 0.3199,
+ Lag: 217.66,
+ },
+
+ {
+ Name: "M4",
+ Amplitude: 0.9474,
+ Lag: 252.51,
+ },
+
+ {
+ Name: "MS4",
+ Amplitude: 0.5105,
+ Lag: 314.85,
+ },
+
+ {
+ Name: "2MN6",
+ Amplitude: 0.2465,
+ Lag: 46.05,
+ },
+
+ {
+ Name: "M6",
+ Amplitude: 0.45,
+ Lag: 98.33,
+ },
+
+ {
+ Name: "2MS6",
+ Amplitude: 0.4391,
+ Lag: 159.8,
+ },
+ },
+ },
+}
diff --git a/tides/generate/main.go b/tides/generate/main.go
new file mode 100644
index 000000000..09d981958
--- /dev/null
+++ b/tides/generate/main.go
@@ -0,0 +1,125 @@
+package main
+
+import (
+ "bytes"
+ "flag"
+ "fmt"
+ "os"
+ "text/template"
+
+ "github.com/GeoNet/delta/internal/metadb"
+ "github.com/GeoNet/delta/meta"
+)
+
+const tmpl = `
+package tides
+
+/*
+ * WARNING: CODE GENERATED AUTOMATICALLY.
+ *
+ * To update: run "go generate" in the tide directory and
+ * commit any changes to the generated files.
+ *
+ * THIS FILE SHOULD NOT BE EDITED BY HAND.
+ *
+ */
+
+
+var _tides = map[string]Tide{
+{{ range $s := .}}
+"{{$s.Gauge.Code}}": {
+Code: "{{$s.Gauge.Code}}",
+Network: "{{$s.Gauge.Network}}",
+Number: "{{$s.Gauge.Number}}",
+TimeZone: {{$s.Gauge.TimeZone}},
+Latitude: {{$s.Gauge.Latitude}},
+Longitude: {{$s.Gauge.Longitude}},
+Crex: "{{$s.Gauge.Crex}}",
+Constituents: []Constituent{
+{{ range $c := $s.Constituents}}
+{
+Name: "{{$c.Name}}",
+Amplitude: {{$c.Amplitude}},
+Lag: {{$c.Lag}},
+},
+{{end}}
+},
+},
+{{ end }}
+}
+
+`
+
+// Tide represents a model of the tidal parameters at a recording station
+// together with the installed datalogger pairs, allowing for multiple sensors
+// at the same time but different locations.
+type Tide struct {
+ Gauge meta.Gauge
+ Constituents []meta.Constituent
+}
+
+func main() {
+
+ flag.Usage = func() {
+ fmt.Fprintf(os.Stderr, "\n")
+ fmt.Fprintf(os.Stderr, "Provide an auto generated go tide file\n")
+ fmt.Fprintf(os.Stderr, "\n")
+ fmt.Fprintf(os.Stderr, "Usage:\n")
+ fmt.Fprintf(os.Stderr, "\n")
+ fmt.Fprintf(os.Stderr, " %s [options]\n", os.Args[0])
+ fmt.Fprintf(os.Stderr, "\n")
+ fmt.Fprintf(os.Stderr, "General Options:\n")
+ fmt.Fprintf(os.Stderr, "\n")
+ flag.PrintDefaults()
+ }
+
+ var base string
+ flag.StringVar(&base, "base", "..", "base of delta files on disk")
+
+ flag.Parse()
+
+ // load delta meta helper
+ db := metadb.NewMetaDB(base)
+
+ // build the set of known tidal
+ tides := make(map[string]Tide)
+
+ // recover linz tide gauge sites
+ gauges, err := db.Gauges()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "problem loading gauges from db %s: %v\n", base, err)
+ os.Exit(1)
+ }
+
+ // for each linz gauge site
+ for _, gauge := range gauges {
+
+ // and the associated linz tidal constituents
+ constituents, err := db.GaugeConstituents(gauge.Code)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "problem loading constituents from db %s [%s]: %v\n", base, gauge.Code, err)
+ os.Exit(1)
+ }
+
+ // remember this tide
+ tides[gauge.Code] = Tide{
+ Gauge: gauge,
+ //Station: *station,
+ Constituents: constituents,
+ }
+ }
+
+ tmpl, err := template.New("config").Parse(string(tmpl))
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "problem compiling template: %v\n", err)
+ os.Exit(1)
+ }
+
+ var res bytes.Buffer
+ if err := tmpl.Execute(&res, tides); err != nil {
+ fmt.Fprintf(os.Stderr, "problem parsing template: %v\n", err)
+ os.Exit(1)
+ }
+
+ fmt.Fprintln(os.Stdout, res.String())
+}
diff --git a/tides/tides.go b/tides/tides.go
new file mode 100644
index 000000000..6ca1da140
--- /dev/null
+++ b/tides/tides.go
@@ -0,0 +1,54 @@
+// Package tides provides an embeddable mechanism for providing tidal constituents for given gauge sites
+// that can be used for tide predication.
+package tides
+
+import (
+ "fmt"
+ "strings"
+)
+
+//go:generate bash -c "go run generate/*.go | gofmt -s > auto.go; test -s auto.go || rm auto.go"
+
+// Constitutent stores the calculated amplotude and lag for a named tidal phase, the amplitude
+// and lag are given in units of meters and degrees respectively.
+type Constituent struct {
+ Name string
+ Amplitude float64
+ Lag float64
+}
+
+// String provides a standard representation of the tidal constituent.
+func (c Constituent) String() string {
+ return fmt.Sprintf("%s/%g/%g", c.Name, c.Amplitude, c.Lag)
+}
+
+// Tide provides the general parameters needed to predict tides at a given site and the
+// associated tidal consitituents. The TimeZone, Latitude, and Longitude are expected
+// to be the parameters used to generated the tidal prediction constituents and may
+// differ from the geographic values recorded elsewhere.
+type Tide struct {
+ Code string
+ Network string
+ Number string
+ TimeZone float64
+ Latitude float64
+ Longitude float64
+ Crex string
+
+ Constituents []Constituent
+}
+
+// Zone provides a conversion of the time zone parameter for use with common tidal
+// prediction software.
+func (t Tide) Zone() float64 {
+ return (360.0 - t.TimeZone) / 15.0
+}
+
+// Lookup will return a Tide pointer for the requested site code.
+// A nil pointer will be returned if a code cannot be found.
+func Lookup(code string) *Tide {
+ if t, ok := _tides[strings.ToUpper(code)]; ok {
+ return &t
+ }
+ return nil
+}
diff --git a/tides/tides_test.go b/tides/tides_test.go
new file mode 100644
index 000000000..6c30d0750
--- /dev/null
+++ b/tides/tides_test.go
@@ -0,0 +1,26 @@
+package tides
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestTide(t *testing.T) {
+ for _, g := range _tides {
+ t.Run("check gauge: "+g.Code, func(t *testing.T) {
+ r := Lookup(g.Code)
+ if r == nil {
+ t.Fatalf("unable to lookup tide: %s", g.Code)
+ }
+ if !reflect.DeepEqual(&g, r) {
+ t.Errorf("unable to match tide: expected %v, found %v", g, r)
+ }
+ })
+ }
+
+ t.Run("check bad gauge", func(t *testing.T) {
+ if g := Lookup("XXXX"); g != nil {
+ t.Fatal("shouldn't be able to lookup XXXX")
+ }
+ })
+}