-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsref_vio.py
492 lines (462 loc) · 35.1 KB
/
sref_vio.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
from __future__ import print_function, division
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from scipy import stats
import scipy
from scipy.spatial import cKDTree
from datetime import datetime
from datetime import timedelta
import urllib2
import json
import StringIO
import seaborn as sns
import statsmodels.api as sm
import matplotlib.patches as mpatches
import os, shutil, sys
startTime = datetime.now()
#json objects try "requests"
def retrieveurl(url,var='Total-SNO',tt='03',stn='BOS'):
mem,dat,valid = [],[],[]
mkey = stn+'-'+tt+'-'+var #partial key match
ll = len(mkey)
#print(mkey)
try:
response = urllib2.urlopen(url) #response
cod = 0
#print(dd,response)
except urllib2.HTTPError, e:
print(e.code,dd)
cod = e.code
if cod != 404:
data = {}
#with open(response.readlines(), "r") as lines:
lines = response.readlines()
for line in lines:
parts = line.split(":")
key = parts[0]
if key[0:ll] == mkey:
mem.append(key[ll+1:-1])
vals = ":".join(parts[1:])
data[key] = json.loads(vals[:-2])
dat.append(data[key]['data'][-1][1])
#convert epoch seconds to date string #1000 is for milliseconds conversion
tmp = datetime.utcfromtimestamp(data[key]['data'][-1][0]/1000).strftime('%Y%m%d_%H')
valid.append(tmp)
#print(key[0:ll])
#print(mem,dat)
#print(valid)
return mem,dat,valid
def retrieve(url,var='Total-QPF',tt='03',stn='BOS'):
mem,dat,valid = [],[],[]
mkey = stn+'-'+tt+'-'+var #partial key match
ll = len(mkey)
#print(mkey)
data = {}
with open(url,"r") as lines:
for line in lines:
parts = line.split(":")
key = parts[0]
if key[0:ll] == mkey:
mem.append(key[ll+1:-1])
vals = ":".join(parts[1:])
data[key] = json.loads(vals[:-2])
dat.append(data[key]['data'][-1][1])
#convert epoch seconds to date string #1000 is for milliseconds conversion
tmp = datetime.utcfromtimestamp(data[key]['data'][-1][0]/1000).strftime('%Y%m%d_%H')
valid.append(tmp)
#print(key[0:ll])
#print(mem,dat)
#print(valid)
return mem,dat,valid
allwfos = [[35.04,-106.82,"ABQ"],[45.42,-98.37,"ABR"],[36.98,-77,"AKQ"],[42.75,-73.8,"ALB"],[35.29,-101.64,"AMA"],
[45.07,-83.57,"APN"],[43.87,-91.25,"LSE"],[42.22,-75.98,"BGM"],[46.77,-100.67,"BIS"],[33.57,-86.75,"BHM"],
[43.55,-116.19,"BOI"],[39.92,-105.12,"BJC"],[42.36,-70.99,"BOS"],[25.92,-97.38,"BRO"],[44.47,-73.15,"BTV"],
[42.93,-78.65,"BUF"],[45.81,-108.63,"BIL"],[33.86,-81.05,"CAE"],[46.87,-68.02,"CAR"],[32.89,-80.04,"CHS"],
[41.42,-81.85,"CLE"],[27.9,-97.45,"CRP"],[41.25,-76.92,"IPT"],[41.21,-104.77,"CYS"],[37.77,-99.97,"DDC"],
[46.8,-92.2,"DLH"],[41.44,-93.65,"DSM"],[42.23,-83.33,"DTW"],[41.61,-90.57,"DVN"],[39.12,-94.6,"MKC"],
[40.98,-124.1,"ACV"],[31.82,-106.28,"ELP"],[29.64,-98.46,"SAT"],[24.55,-81.78,"EYW"],[33.34,-84.57,"FFC"],
[47.95,-97.19,"GFK"],[35.13,-111.67,"FLG"],[43.65,-96.78,"FSD"],[32.87,-97.03,"DFW"],[48.22,-106.63,"GGW"],
[40.97,-98.32,"GRI"],[39.12,-108.53,"GJT"],[39.39,-101.69,"GLD"],[44.56,-88.19,"GRB"],[42.79,-85.5,"GRR"],
[34.9,-82.22,"GSP"],[43.65,-70.32,"PWM"],[29.65,-95.28,"HOU"],[36.77,-119.72,"FAT"],[34.65,-86.77,"HSV"],
[37.75,-97.58,"ICT"],[34.35,-77.87,"ILM"],[39.42,-83.77,"ILN"],[39.85,-89.67,"SPI"],[39.81,-86.37,"IND"],
[40.98,-85.19,"FWA"],[32.51,-90.17,"JAN"],[30.5,-81.7,"JAX"],[37.6,-83.32,"JKL"],[41.13,-100.72,"LBF"],
[30.14,-93.11,"LCH"],[30.05,-90.03,"NEW"],[40.83,-115.78,"EKO"],[38.18,-85.73,"SDF"],[41.98,-87.9,"ORD"],
[33.93,-118.43,"LAX"],[38.86,-90.48,"STL"],[33.7,-101.92,"LBB"],[38.86,-77.04,"DCA"],[34.68,-92.18,"LIT"],
[32.02,-102.18,"MAF"],[35.06,-89.98,"MEM"],[25.8,-80.3,"MIA"],[42.37,-122.87,"MFR"],[35.07,-77.05,"EWN"],
[42.95,-87.9,"MKE"],[28.1,-80.65,"MLB"],[30.68,-88.25,"MOB"],[44.88,-93.23,"MSP"],[46.47,-84.37,"ANJ"],
[35.82,-83.98,"TYS"],[46.92,-114.08,"MSO"],[37.62,-122.38,"SFO"],[40.77,-73.9,"LGA"],[36.14,-86.68,"BNA"],
[47.56,-117.63,"GEG"],[35.36,-97.61,"OKC"],[41.3,-95.9,"OMA"],[37.07,-88.77,"PAH"],[40.5,-80.22,"PIT"],
[45.7,-118.94,"PDT"],[39.88,-75.25,"PHL"],[42.87,-112.65,"PIH"],[45.58,-122.6,"PDX"],[33.43,-112.02,"PHX"],
[38.29,-104.43,"PUB"],[35.87,-78.78,"RDU"],[39.5,-119.78,"RNO"],[43.07,-108.47,"RIW"],[38.37,-81.6,"CRW"],
[37.32,-79.97,"ROA"],[47.44,-122.31,"SEA"],[37.36,-93.33,"SGF"],[32.73,-117.17,"SAN"],[32.47,-93.82,"SHV"],
[31.38,-100.46,"SJT"],[40.85,-111.98,"SLC"],[38.44,-121.55,"SAC"],[30.56,-84.37,"TLH"],[27.97,-82.53,"TPA"],
[47.45,-111.41,"GTF"],[39.07,-95.62,"TOP"],[36.2,-95.79,"TUL"],[32.1,-110.92,"TUS"],[43.98,-103.01,"RAP"],
[36.08,-115.16,"LAS"]]
allstn = [[26.88,-101.43,"MMV"],[28.63,-106.08,"MCU"],[29.08,-110.93,"MHO"],[50.02,-110.72,"YXH"],
[49.63,-112.8,"YQL"],[33.58,-85.85,"ANB"],[34.27,-86.86,"3A1"],[33.17,-86.77,"EET"],[34.86,-86.56,"MDQ"],
[33.22,-87.62,"TCL"],[31.87,-86.02,"TOI"],[32.62,-85.43,"AUO"],[33.97,-86.08,"GAD"],[31.32,-85.45,"DHN"],
[32.90,-85.95,"ALX"],[34.70,-87.48,"MSL"],[34.47,-85.72,"4A9"],[32.22,-86.32,"MGM"],[31.42,-87.04,"GZH"],
[35.83,-90.65,"JBR"],[36.37,-92.47,"BPK"],[36.27,-93.15,"HRO"],[34.18,-91.93,"PBF"],[35.25,-93.09,"RUE"],
[35.94,-89.83,"HKA"],[33.64,-91.75,"LLQ"],[35.21,-91.74,"SRC"],[34.48,-93.1,"HOT"],[35.73,-91.65,"BVX"],
[34.55,-93.58,"MWT"],[34.60,-91.57,"SGT"],[36.18,-94.12,"ASG"],[34.05,-94.4,"DEQ"],[36.11,-90.95,"ARG"],
[33.26,-92.74,"ELD"],[33.51,-94.07,"TXK"],[35.38,-94.27,"FSM"],[31.42,-110.85,"OLS"],[33.68,-112.08,"DVT"],
[35.95,-112.15,"GCN"],[34.65,-112.42,"PRC"],[32.85,-109.63,"SAD"],[31.47,-109.6,"DUG"],[31.60,-110.35,"FHU"],
[32.95,-111.77,"CGZ"],[34.27,-110,"SOW"],[32.65,-114.6,"YUM"],[32.65,-114.6,"YUM"],[36.93,-111.45,"PGA"],
[32.88,-112.72,"GBN"],[35.10,-114.34,"IFP"],[35.27,-113.95,"IGM"],[35.62,-113.54,"PGS"],[32.27,-109.26,"SSO"],
[36.12,-111.27,"TBC"],[34.42,-109.14,"SJN"],[35.06,-110.8,"INW"],[49.47,-120.52,"YDC"],[49.60,-115.78,"YXC"],
[39.48,-121.62,"OVE"],[36.94,-121.79,"WVI"],[35.43,-119.05,"BFL"],[37.28,-120.52,"MCE"],[34.73,-118.22,"WJF"],
[36.58,-121.85,"MRY"],[34.43,-119.83,"SBA"],[36.19,-119.37,"HJO"],[34.05,-117.6,"ONT"],[33.83,-116.5,"PSP"],
[40.50,-122.3,"RDD"],[41.78,-122.47,"SIY"],[38.22,-122.28,"APC"],[37.98,-122.05,"CCR"],[38.70,-121.58,"SMF"],
[38.90,-120,"TVL"],[33.40,-118.42,"AVX"],[34.85,-116.78,"DAG"],[35.23,-120.63,"SBP"],[37.37,-118.37,"BIH"],
[33.62,-114.72,"BLH"],[33.04,-116.9,"RNM"],[37.90,-121.25,"SCK"],[41.78,-124.23,"CEC"],[41.32,-122.32,"MHS"],
[33.30,-117.35,"NFG"],[33.88,-117.27,"RIV"],[39.28,-120.72,"BLU"],[37.62,-118.83,"MMH"],[33.23,-119.45,"NSI"],
[36.03,-119.07,"PTV"],[39.13,-123.2,"UKI"],[34.20,-118.35,"BUR"],[35.67,-120.63,"PRB"],[34.75,-118.73,"SDB"],
[33.78,-118.05,"SLI"],[34.29,-116.17,"NXP"],[41.48,-120.57,"AAT"],[34.67,-120.47,"LPC"],[32.82,-115.68,"NJK"],
[37.37,-121.93,"SJC"],[32.62,-116.47,"CZZ"],[34.12,-119.12,"NTD"],[34.90,-117.88,"EDW"],[38.08,-122.87,"PYE"],
[38.52,-122.82,"STS"],[37.70,-121.82,"LVK"],[40.10,-122.24,"RBL"],[35.67,-117.83,"IYK"],[34.77,-114.47,"EED"],
[40.67,-124.23,"FOT"],[37.63,-120.96,"MOD"],[37.73,-122.22,"OAK"],[33.63,-116.16,"TRM"],[34.80,-116.46,"HEC"],
[35.07,-118.15,"MHV"],[37.28,-102.62,"SPD"],[37.30,-108.63,"CEZ"],[37.15,-107.75,"DRO"],[39.53,-107.73,"RIL"],
[39.24,-102.28,"ITR"],[38.05,-103.52,"LHX"],[39.22,-106.32,"LXV"],[39.57,-104.85,"APA"],[39.22,-106.87,"ASE"],
[38.50,-107.9,"MTJ"],[38.82,-104.72,"COS"],[39.27,-103.67,"LIC"],[40.50,-107.53,"CAG"],[40.45,-105.02,"FNL"],
[38.53,-106.93,"GUC"],[40.43,-104.63,"GXY"],[37.27,-104.33,"TAD"],[39.65,-106.92,"EGE"],[37.95,-107.9,"TEX"],
[39.21,-104.64,"MNH"],[40.04,-107.89,"EEO"],[38.49,-106.32,"MYP"],[37.81,-108.93,"DVC"],[40.05,-106.37,"20V"],
[37.35,-105.82,"ALS"],[39.81,-104.66,"DEN"],[40.16,-103.18,"AKO"],[38.20,-102.69,"LAA"],[37.27,-103.6,"TBE"],
[41.17,-73.13,"BDR"],[41.73,-72.18,"IJD"],[41.33,-72.05,"GON"],[41.48,-73.13,"OXC"],[41.94,-72.69,"BDL"],
[39.68,-75.6,"ILG"],[38.68,-75.37,"GED"],[39.13,-75.47,"DOV"],[28.82,-81.81,"LEE"],[27.18,-80.22,"SUA"],
[26.07,-80.15,"FLL"],[29.18,-81.05,"DAB"],[29.73,-85.03,"AAF"],[28.43,-81.32,"MCO"],[30.47,-87.18,"PNS"],
[30.07,-83.57,"40J"],[29.68,-82.27,"GNV"],[28.78,-81.23,"SFB"],[28.05,-81.75,"GIF"],[30.48,-86.53,"VPS"],
[28.47,-82.45,"BKV"],[30.72,-87.02,"NSE"],[26.92,-82,"PGD"],[29.97,-81.33,"SGJ"],[29.17,-82.22,"OCF"],
[26.15,-81.77,"APF"],[26.68,-80.09,"PBI"],[30.80,-85.21,"MAI"],[25.48,-80.38,"HST"],[30.07,-85.58,"PAM"],
[29.60,-83.05,"CTY"],[28.52,-80.8,"TIX"],[27.68,-80.49,"VRB"],[30.83,-86.68,"CEW"],[26.58,-81.87,"FMY"],
[27.40,-82.55,"SRQ"],[30.97,-84.64,"BGE"],[33.37,-81.97,"AGS"],[30.78,-83.28,"VLD"],[34.72,-84.87,"DNN"],
[31.88,-81.57,"LHW"],[34.35,-85.17,"RMG"],[31.25,-82.4,"AYS"],[34.32,-83.83,"GVL"],[32.19,-82.37,"VDI"],
[31.25,-81.47,"BQK"],[32.33,-85,"LSF"],[33.56,-83.08,"3J7"],[32.48,-81.73,"TBR"],[33.05,-85.21,"LGC"],
[32.95,-84.27,"OPN"],[31.08,-83.8,"MGR"],[32.16,-81.11,"SAV"],[33.63,-84.44,"ATL"],[31.40,-84.9,"BIJ"],
[32.21,-83.13,"EZM"],[31.65,-84.3,"ABY"],[33.95,-83.32,"AHN"],[34.70,-83.3,"ODF"],[32.69,-83.65,"MCN"],
[31.54,-82.51,"AMG"],[42.22,-92.03,"VTI"],[42.55,-92.4,"ALO"],[41.10,-92.45,"OTM"],[41.88,-91.7,"CID"],
[43.40,-94.75,"EST"],[40.78,-91.13,"BRL"],[42.40,-96.38,"SUX"],[41.83,-90.33,"CWI"],[42.11,-92.91,"MIW"],
[40.75,-95.42,"SDA"],[40.63,-93.9,"LWD"],[43.07,-92.62,"CCY"],[42.43,-93.87,"EBS"],[40.47,-91.43,"EOK"],
[41.68,-93.02,"TNU"],[41.28,-91.67,"AWG"],[42.05,-93.85,"BNW"],[43.09,-93.33,"MCW"],[42.60,-95.23,"SLB"],
[41.05,-91.98,"FFL"],[41.37,-91.15,"MUT"],[41.30,-93.12,"OXV"],[41.40,-95.05,"AIO"],[41.03,-93.37,"CNC"],
[42.61,-94.29,"FOD"],[41.70,-94.92,"ADU"],[42.75,-93.77,"CAV"],[42.05,-94.78,"CIN"],[41.02,-94.37,"CSQ"],
[42.40,-90.71,"DBQ"],[43.28,-91.73,"DEH"],[41.98,-95.38,"DNS"],[42.78,-96.2,"LRJ"],[41.02,-95.27,"RDK"],
[43.22,-95.83,"SHL"],[43.08,-94.27,"AXA"],[43.52,-112.07,"IDA"],[44.17,-114.93,"SNT"],[47.77,-116.82,"COE"],
[45.12,-113.88,"SMN"],[43.50,-114.3,"SUN"],[42.65,-111.58,"U78"],[43.05,-115.87,"MUO"],[42.55,-113.77,"BYI"],
[46.38,-117.02,"LWS"],[44.52,-114.2,"LLJ"],[44.88,-116.1,"MYL"],[46.15,-115.6,"P69"],[47.46,-115.65,"MLP"],
[42.20,-112.45,"MLD"],[42.48,-114.49,"TWF"],[48.30,-116.57,"SZT"],[44.09,-112.21,"DBS"],[38.76,-87.6,"LWV"],
[37.78,-89.25,"MDH"],[39.48,-88.28,"MTO"],[40.29,-88.14,"TIP"],[40.03,-88.28,"CMI"],[41.45,-90.52,"MLI"],
[42.42,-87.87,"UGN"],[40.67,-89.68,"PIA"],[38.55,-89.85,"BLV"],[38.32,-88.87,"MVN"],[40.48,-88.92,"BMI"],
[40.20,-87.6,"DNV"],[39.02,-87.65,"RSV"],[41.75,-89.67,"SQI"],[40.16,-89.33,"AAA"],[38.09,-88.12,"CUL"],
[42.20,-89.1,"RFD"],[38.65,-88.97,"SLO"],[39.78,-90.23,"IJX"],[39.53,-89.33,"TAZ"],[37.82,-88.55,"HSB"],
[39.63,-90.78,"PPQ"],[39.07,-88.53,"1H2"],[38.38,-88.42,"FWC"],[40.94,-90.43,"GBG"],[41.16,-89.59,"BDF"],
[42.25,-89.58,"FEP"],[41.06,-87.85,"IKK"],[39.74,-88.86,"DEC"],[41.93,-88.72,"DKB"],[40.92,-88.63,"PNT"],
[41.55,-88.32,"JOT"],[40.52,-90.65,"MQB"],[38.15,-89.7,"SAR"],[39.85,-91.28,"UIN"],[38.67,-88.45,"FOA"],
[41.35,-89.15,"VYS"],[41.53,-85.79,"GSH"],[39.65,-85.8,"GEZ"],[38.05,-87.53,"EVV"],[39.15,-86.62,"BMG"],
[39.45,-87.32,"HUF"],[40.42,-86.93,"LAF"],[40.25,-85.4,"MIE"],[41.70,-86.32,"SBN"],[39.27,-85.9,"BAK"],
[41.45,-87,"VPZ"],[40.65,-86.15,"GUS"],[41.62,-87.42,"GYY"],[41.27,-85.83,"ASW"],[38.25,-86.95,"HNB"],
[40.56,-87.07,"BVT"],[37.08,-95.57,"CFV"],[37.67,-95.48,"CNU"],[37.30,-98.58,"P28"],[38.85,-94.73,"OJC"],
[38.33,-96.18,"EMP"],[38.87,-98.82,"RSL"],[37.33,-95.52,"PPF"],[38.07,-97.87,"HUT"],[38.35,-98.87,"GBD"],
[39.55,-97.65,"CNK"],[38.85,-99.27,"HYS"],[37.17,-97.03,"WLD"],[37.00,-101.9,"EHA"],[38.05,-97.28,"EWK"],
[37.92,-100.73,"GCK"],[39.26,-100.23,"HLC"],[39.13,-96.67,"MHK"],[37.04,-100.97,"LBL"],[38.93,-97.62,"SLN"],
[37.70,-98.75,"PTT"],[38.03,-84.6,"LEX"],[37.90,-85.97,"FTK"],[36.67,-87.5,"HOP"],[37.73,-87.17,"OWB"],
[37.82,-87.68,"EHR"],[37.06,-84.61,"SME"],[36.93,-86.44,"BWG"],[39.02,-84.7,"CVG"],[37.03,-84.12,"LOZ"],
[31.74,-93.1,"IER"],[30.03,-91.88,"ARA"],[31.40,-92.3,"ESF"],[29.72,-91.33,"PTN"],[29.33,-89.4,"BVE"],
[30.52,-90.42,"HDC"],[31.05,-93.2,"POE"],[30.35,-89.82,"ASD"],[30.48,-91.3,"BTR"],[30.00,-90.27,"MSY"],
[29.18,-90.1,"LEV"],[29.43,-90.29,"GAO"],[32.52,-92.03,"MLU"],[42.18,-71.17,"OWD"],[42.42,-73.29,"PSF"],
[41.67,-70.28,"HYA"],[41.92,-70.73,"PYM"],[42.58,-70.92,"BVY"],[41.68,-70.97,"EWB"],[41.40,-70.62,"MVY"],
[42.07,-70.22,"PVC"],[42.70,-73.17,"AQW"],[42.20,-72.53,"CEF"],[42.55,-71.76,"FIT"],[42.27,-71.88,"ORH"],
[42.57,-72.27,"ORE"],[41.28,-70.03,"ACK"],[49.90,-97.23,"YWG"],[39.70,-77.73,"HGR"],[39.47,-76.17,"APG"],
[39.18,-76.67,"BWI"],[39.41,-77.37,"FDK"],[38.28,-76.4,"NHK"],[39.63,-79.32,"2G4"],[38.35,-75.52,"SBY"],
[44.07,-69.1,"RKD"],[43.40,-70.72,"SFM"],[47.28,-68.32,"FVE"],[44.45,-68.37,"BHB"],[45.47,-69.58,"GNR"],
[44.53,-69.68,"WVL"],[43.96,-69.71,"IWI"],[43.99,-70.95,"IZG"],[44.05,-70.28,"LEW"],[45.58,-68.52,"MLT"],
[43.43,-70.61,"ENE"],[46.04,-67.83,"HUL"],[44.84,-68.87,"BGR"],[42.75,-86.1,"BIV"],[47.45,-87.9,"P59"],
[42.13,-86.43,"BEH"],[44.37,-84.68,"HTL"],[45.82,-88.12,"IMT"],[44.99,-85.2,"ACB"],[41.81,-85.44,"IRS"],
[43.62,-84.74,"MOP"],[45.57,-84.8,"PLN"],[45.30,-85.27,"CVX"],[42.27,-84.47,"JXN"],[43.32,-84.69,"AMN"],
[47.17,-88.5,"CMX"],[44.68,-84.73,"GOV"],[43.96,-86.41,"LDM"],[42.30,-85.25,"BTL"],[44.28,-85.42,"CAD"],
[42.92,-82.53,"PHN"],[45.42,-83.8,"PZQ"],[43.72,-85.5,"RQB"],[41.94,-83.43,"TTF"],[45.13,-87.63,"MNM"],
[44.02,-82.79,"P58"],[46.01,-83.74,"DRM"],[45.75,-87.03,"ESC"],[42.77,-84.6,"LAN"],[44.27,-86.25,"MBL"],
[45.86,-84.64,"MCD"],[42.62,-82.83,"MTC"],[44.45,-83.4,"OSC"],[45.69,-85.57,"SJX"],[44.67,-85.55,"TVC"],
[45.97,-86.17,"ISQ"],[44.63,-86.2,"FKS"],[41.92,-84.59,"JYM"],[46.31,-85.46,"ERY"],[46.53,-90.13,"IWD"],
[43.17,-86.04,"MKG"],[43.78,-82.99,"BAX"],[43.53,-84.08,"MBS"],[42.47,-86.11,"PMM"],[44.45,-83.39,"ASP"],
[42.63,-83.98,"OZW"],[46.35,-87.38,"SAW"],[42.97,-83.74,"FNT"],[43.26,-82.72,"ECK"],[46.72,-94.38,"PWC"],
[45.23,-96,"AQP"],[43.92,-92.5,"RST"],[45.55,-94.07,"STC"],[44.63,-93.23,"LVN"],[46.83,-95.88,"DTL"],
[44.33,-93.32,"FBL"],[46.28,-96.15,"FFM"],[43.65,-94.42,"FRM"],[48.57,-93.4,"INL"],[44.45,-95.82,"MML"],
[43.91,-95.11,"MWM"],[44.32,-94.5,"ULM"],[47.85,-96.62,"CKN"],[45.70,-96.5,"ETH"],[43.99,-94.56,"JYG"],
[45.57,-95.97,"MOX"],[43.65,-95.58,"OTG"],[48.85,-95.7,"ROX"],[43.68,-93.37,"AEL"],[44.87,-94.38,"HCD"],
[48.15,-94.52,"VWU"],[47.38,-92.83,"HIB"],[44.97,-95.72,"MVE"],[43.98,-96.32,"PQN"],[45.65,-95.32,"GHW"],
[48.73,-94.62,"BDE"],[47.59,-95.77,"FSE"],[44.22,-93.92,"MKT"],[44.47,-95.13,"RWF"],[47.22,-93.52,"GPZ"],
[45.95,-94.35,"LXL"],[47.84,-90.38,"CKC"],[49.32,-94.88,"FGN"],[46.90,-95.07,"PKD"],[47.05,-91.75,"TWM"],
[47.20,-91.4,"BFW"],[45.24,-93.99,"MGG"],[46.42,-92.8,"MZH"],[45.57,-93.27,"CBG"],[46.62,-93.31,"HZX"],
[46.99,-94.2,"XVG"],[45.87,-95.4,"AXN"],[46.35,-94.03,"BRD"],[44.58,-92.48,"RGK"],[47.58,-95.02,"BJI"],
[47.78,-93.65,"FOZ"],[48.75,-96.94,"HCO"],[46.28,-94.8,"SAZ"],[45.89,-93.27,"JMR"],[47.82,-91.83,"ELO"],
[48.02,-92.87,"ORB"],[39.82,-93.58,"CDJ"],[37.23,-89.57,"CGI"],[39.77,-94.92,"STJ"],[38.13,-91.77,"VIH"],
[39.32,-94.72,"MCI"],[37.15,-94.5,"JLN"],[36.77,-90.32,"POF"],[36.73,-91.85,"UNO"],[38.10,-92.55,"AIZ"],
[37.73,-92.13,"TBN"],[38.73,-93.55,"SZL"],[37.67,-90.23,"FAM"],[40.14,-92.59,"IRK"],[38.82,-92.22,"COU"],
[38.27,-94.49,"BUM"],[32.35,-91.03,"TVR"],[34.27,-88.77,"TUP"],[33.50,-90.08,"GWO"],[30.40,-89.07,"GPT"],
[31.62,-91.3,"HEZ"],[31.47,-89.33,"PIB"],[30.47,-88.53,"PQL"],[33.48,-90.98,"GLH"],[33.65,-88.45,"CBM"],
[32.38,-88.8,"MEI"],[31.30,-90.26,"MCB"],[34.68,-90.35,"UTA"],[45.70,-110.45,"LVM"],[48.30,-114.27,"GPI"],
[48.60,-113.11,"8S0"],[45.78,-111.15,"BZN"],[46.36,-104.25,"BHK"],[48.10,-105.58,"OLF"],[45.95,-112.5,"BTM"],
[44.68,-111.12,"WYS"],[48.60,-112.37,"CTB"],[47.70,-104.2,"SDY"],[47.13,-104.8,"GDV"],[47.33,-106.93,"JDN"],
[46.38,-105.95,"MLS"],[47.05,-109.61,"LWT"],[45.25,-112.55,"DLN"],[46.61,-111.95,"HLN"],[48.54,-109.77,"HVR"],
[45.32,-65.88,"YSJ"],[34.60,-78.58,"EYF"],[34.78,-79.37,"MEB"],[36.02,-78.33,"LHZ"],[36.46,-80.55,"MWK"],
[35.43,-82.55,"AVL"],[35.00,-77.98,"DPL"],[35.38,-78.73,"HRJ"],[35.85,-77.9,"RWI"],[34.27,-78.71,"CPC"],
[35.73,-81.38,"HKY"],[36.20,-81.65,"TNB"],[35.19,-83.86,"RHP"],[35.65,-80.52,"RUQ"],[35.33,-77.97,"GSB"],
[35.92,-75.7,"MQI"],[34.83,-77.62,"OAJ"],[33.93,-78.07,"SUT"],[35.65,-79.9,"HBI"],[34.90,-76.88,"NKT"],
[35.25,-81.6,"EHO"],[36.43,-81.42,"GEV"],[36.30,-77.17,"ASJ"],[36.03,-76.57,"EDE"],[35.22,-75.62,"HSE"],
[36.25,-76.18,"ECG"],[36.05,-79.98,"GSO"],[35.54,-78.38,"JNX"],[35.57,-77.05,"OCW"],[34.89,-79.76,"RCZ"],
[35.22,-80.93,"CLT"],[35.42,-80.15,"VUJ"],[35.22,-83.42,"1A5"],[35.17,-79.02,"POB"],[36.28,-78.98,"TDF"],
[46.93,-98.68,"JMS"],[48.12,-98.92,"DVL"],[46.00,-102.65,"HEI"],[47.65,-101.43,"N60"],[46.86,-102.77,"DIK"],
[48.18,-103.63,"ISN"],[48.42,-101.35,"MIB"],[46.75,-96.85,"FAR"],[40.45,-99.33,"HDE"],[42.05,-102.8,"AIA"],
[40.08,-95.6,"FNB"],[40.60,-98.43,"HSI"],[40.52,-101.62,"IML"],[41.98,-97.43,"OFK"],[42.83,-103.1,"CDR"],
[40.85,-96.75,"LNK"],[41.43,-99.65,"BBW"],[40.90,-97.62,"JYR"],[41.62,-98.95,"ODX"],[41.19,-103.68,"IBM"],
[40.73,-99,"EAR"],[41.45,-97.33,"OLU"],[40.30,-96.75,"BIE"],[41.45,-96.52,"FET"],[42.87,-100.55,"VTN"],
[41.77,-96.17,"TQE"],[41.89,-103.48,"BFF"],[40.20,-96.21,"PWE"],[42.57,-99.99,"ANW"],[40.78,-99.77,"LXN"],
[41.05,-101.8,"OGA"],[41.96,-100.57,"TIF"],[40.20,-100.59,"MCK"],[41.38,-98.35,"OBH"],[41.73,-98.06,"BVN"],
[40.15,-97.59,"HJH"],[42.47,-98.69,"ONL"],[41.10,-102.98,"SNY"],[43.63,-72.3,"LEB"],[44.58,-71.18,"BML"],
[42.90,-72.27,"EEN"],[43.57,-71.42,"LCI"],[43.08,-70.82,"PSM"],[42.78,-71.52,"ASH"],[44.27,-71.3,"MWN"],
[44.46,-71.48,"MSK"],[44.35,-71.55,"HIE"],[43.22,-71.58,"CON"],[40.70,-74.17,"EWR"],[39.45,-74.57,"ACY"],
[40.28,-74.82,"TTN"],[40.18,-74.13,"BLM"],[39.02,-74.92,"WWD"],[39.10,-74.8,"SIE"],[39.82,-74.43,"CYN"],
[35.52,-108.78,"GUP"],[35.62,-106.08,"SAF"],[36.74,-104.65,"RTN"],[35.00,-105.55,"CQC"],[33.28,-107.28,"TCS"],
[36.45,-103.15,"CAO"],[32.33,-104.27,"CNM"],[36.45,-105.67,"SKX"],[34.38,-103.32,"CVS"],[32.63,-108.15,"SVC"],
[32.83,-105.98,"ALM"],[33.47,-105.53,"SRR"],[32.28,-106.92,"LRU"],[36.75,-108.1,"FMN"],[35.66,-105.14,"LVS"],
[35.18,-103.6,"TCC"],[36.49,-104.87,"CIM"],[32.85,-104.47,"ATS"],[33.34,-104.62,"ROW"],[32.28,-107.6,"DMN"],
[43.45,-65.47,"WCP"],[36.62,-116.02,"DRA"],[40.07,-118.57,"LOL"],[40.90,-117.8,"WMC"],[40.57,-116.92,"BAM"],
[38.05,-117.08,"TPH"],[39.52,-115.97,"P68"],[38.25,-114.39,"ILC"],[39.42,-118.7,"NFL"],[38.00,-117.77,"OAL"],
[36.80,-116.75,"BTY"],[39.30,-114.85,"ELY"],[42.11,-77.98,"ELZ"],[42.57,-77.71,"DSV"],[42.17,-76.9,"ELM"],
[43.12,-77.67,"ROC"],[44.38,-74.2,"SLK"],[43.33,-73.62,"GFL"],[42.64,-77.05,"PEO"],[42.49,-79.28,"DKK"],
[40.80,-73.1,"ISP"],[44.00,-76.02,"ART"],[42.48,-76.45,"ITH"],[43.23,-75.4,"RME"],[41.70,-74.8,"MSV"],
[41.07,-73.7,"HPN"],[40.92,-72.32,"HTO"],[40.63,-73.77,"JFK"],[41.63,-73.88,"POU"],[42.19,-79.12,"JHW"],
[43.16,-76.2,"SYR"],[44.91,-74.72,"MSS"],[41.77,-80.69,"HZY"],[41.34,-84.43,"DFI"],[40.82,-82.52,"MFD"],
[40.00,-82.88,"CMH"],[39.90,-84.2,"DAY"],[40.47,-81.42,"PHD"],[40.92,-81.43,"CAK"],[39.36,-84.52,"HAO"],
[41.27,-80.67,"YNG"],[39.95,-81.9,"ZZV"],[41.60,-83.8,"TOL"],[41.35,-82.18,"LPR"],[41.02,-83.67,"FDY"],
[39.59,-84.22,"MGY"],[40.62,-83.06,"MNN"],[40.33,-82.52,"4I3"],[40.29,-84.04,"ROD"],[34.47,-97.96,"DUC"],
[35.02,-94.62,"RKR"],[36.77,-96.03,"BVO"],[34.35,-98.98,"FDR"],[35.65,-95.37,"MKO"],[34.71,-97.22,"PVJ"],
[35.85,-97.42,"GOK"],[34.98,-99.05,"HBR"],[35.10,-97.97,"CHK"],[35.33,-99.2,"CSM"],[36.17,-97.08,"SWO"],
[34.81,-96.67,"ADH"],[35.72,-96.82,"CQB"],[35.67,-95.95,"OKM"],[35.36,-96.94,"SNL"],[34.40,-96.15,"AQR"],
[36.61,-94.74,"GMJ"],[36.77,-98.67,"AVK"],[36.73,-97.1,"PNC"],[36.68,-101.5,"GUY"],[34.85,-95.78,"MLC"],
[36.35,-97.92,"END"],[34.65,-98.4,"FSI"],[34.67,-99.27,"LTS"],[35.93,-95,"TQH"],[34.21,-97.17,"ADM"],
[35.87,-98.42,"JWG"],[33.99,-96.39,"DUA"],[35.22,-97.47,"OUN"],[36.34,-99.88,"GAG"],[48.37,-89.32,"YQT"],
[47.82,-83.35,"YLD"],[44.75,-81.1,"YVV"],[43.67,-79.63,"YYZ"],[45.32,-75.67,"YOW"],[44.02,-117.01,"ONO"],
[42.15,-121.73,"LMT"],[43.23,-123.35,"RBG"],[46.15,-123.88,"AST"],[45.62,-121.17,"DLS"],[42.62,-123.37,"SXT"],
[44.50,-123.28,"CVO"],[44.92,-123,"SLE"],[43.58,-118.95,"BNO"],[43.42,-124.25,"OTH"],[45.28,-118,"LGD"],
[44.25,-121.15,"RDM"],[42.94,-122.22,"CRL"],[42.06,-122.61,"SI5"],[42.49,-120.51,"LKV"],[44.58,-124.06,"ONP"],
[44.12,-123.22,"EUG"],[44.84,-117.81,"BKE"],[42.59,-117.87,"REO"],[42.59,-117.87,"REO"],[41.04,-78.41,"FIG"],
[41.63,-80.21,"GKJ"],[40.65,-75.43,"ABE"],[41.33,-75.73,"AVP"],[40.24,-75.55,"PTW"],[40.38,-75.97,"RDG"],
[41.80,-78.63,"BFD"],[40.30,-78.32,"AOO"],[40.08,-75.02,"PNE"],[40.28,-79.4,"LBE"],[39.93,-76.88,"THV"],
[40.83,-76.87,"SEG"],[40.12,-76.3,"LNS"],[41.18,-78.9,"DUJ"],[40.83,-80.21,"EWC"],[40.92,-77.99,"PSB"],
[40.58,-75.68,"ETX"],[40.23,-77.02,"HAR"],[40.32,-78.83,"JST"],[41.51,-77.97,"SLT"],[42.02,-80.3,"ERI"],
[47.55,-79.24,"WRC"],[45.43,-71.68,"YSC"],[47.92,-74.62,"WPK"],[46.80,-71.38,"YQB"],[41.17,-71.58,"BID"],
[41.92,-71.5,"SFZ"],[41.72,-71.43,"PVD"],[50.28,-107.68,"YYN"],[51.27,-102.47,"YQV"],[34.25,-82.16,"GRD"],
[33.46,-80.85,"OGB"],[34.50,-82.72,"AND"],[34.85,-82.35,"GMU"],[32.22,-80.7,"HXD"],[33.68,-78.93,"MYR"],
[33.97,-80.47,"SSC"],[32.48,-80.72,"NBC"],[35.03,-81.93,"SPA"],[34.23,-79.66,"FLO"],[33.71,-82.16,"IRQ"],
[43.73,-103.61,"CUT"],[45.02,-102.02,"D07"],[44.92,-97.15,"ATY"],[44.05,-101.6,"PHP"],[43.80,-99.32,"9V9"],
[43.03,-102.52,"IEN"],[44.30,-96.82,"BKX"],[45.55,-100.42,"MBG"],[43.77,-98.03,"MHE"],[45.57,-103.52,"2WX"],
[43.39,-99.84,"ICR"],[42.92,-97.38,"YKN"],[44.40,-100.17,"PIR"],[44.38,-98.22,"HON"],[35.03,-85.2,"CHA"],
[36.48,-82.4,"TRI"],[35.60,-88.92,"MKL"],[35.95,-85.08,"CSV"],[35.35,-89.87,"NQA"],[36.02,-89.32,"DYR"],
[27.21,-98.12,"BKS"],[32.03,-96.4,"CRS"],[30.24,-98.91,"T82"],[30.89,-94.03,"JAS"],[36.41,-100.75,"PYX"],
[29.95,-94.02,"BPT"],[26.23,-97.65,"HRL"],[29.12,-95.47,"LBX"],[26.18,-98.23,"MFE"],[29.33,-98.47,"SSF"],
[29.91,-96.95,"3T5"],[30.04,-102.21,"6R6"],[27.73,-98.03,"ALI"],[30.07,-95.56,"DWH"],[32.70,-94.95,"JXI"],
[32.78,-98.07,"MWL"],[35.70,-101.4,"BGD"],[28.45,-99.22,"COT"],[29.30,-94.8,"GLS"],[32.71,-96.27,"TRL"],
[29.21,-99.74,"UVA"],[28.85,-96.92,"VCT"],[32.35,-95.4,"TYR"],[30.17,-96.98,"GYB"],[29.35,-99.18,"HDO"],
[33.10,-94.96,"OSA"],[30.22,-96.37,"11R"],[30.36,-95.41,"CXO"],[31.83,-104.8,"GDP"],[29.37,-100.92,"DRT"],
[31.80,-98.95,"BWD"],[29.98,-99.08,"ERV"],[31.15,-97.72,"HLR"],[31.58,-94.72,"OCH"],[32.22,-98.18,"SEP"],
[32.47,-100.47,"SWW"],[36.02,-102.55,"DHT"],[30.68,-97.68,"GTU"],[30.73,-95.47,"UTS"],[32.45,-96.92,"JWY"],
[33.11,-98.55,"RPH"],[34.50,-102.84,"TXO"],[30.78,-98.66,"AQO"],[30.58,-96.37,"CLL"],[33.63,-95.45,"PRX"],
[33.16,-95.62,"SLR"],[33.20,-97.18,"DTO"],[33.99,-98.59,"SPS"],[27.35,-98.74,"HBV"],[29.96,-95.35,"IAH"],
[29.95,-100.17,"ECU"],[30.95,-102.98,"FST"],[33.65,-97.2,"GLE"],[32.22,-101.52,"BPG"],[34.37,-100.28,"CDS"],
[31.78,-95.71,"PSN"],[34.17,-101.72,"PVW"],[32.42,-94.75,"GGG"],[35.90,-100.4,"HHF"],[30.60,-99.82,"JCT"],
[28.76,-96.31,"PSX"],[32.48,-99.86,"ABI"],[30.73,-98.23,"BMQ"],[30.30,-97.7,"AUS"],[31.16,-94.72,"LFK"],
[30.87,-96.62,"LHB"],[27.48,-99.42,"LRD"],[32.70,-100.95,"SNK"],[35.86,-102.01,"DUX"],[30.30,-103.95,"MRF"],
[31.38,-103.51,"PEQ"],[35.52,-100.97,"PPA"],[31.66,-97.27,"ACT"],[31.87,-103.24,"INK"],[41.78,-111.85,"LGU"],
[41.20,-112.02,"OGD"],[38.43,-113.02,"MLF"],[38.75,-109.75,"CNY"],[37.70,-113.1,"CDC"],[37.62,-109.47,"4BL"],
[39.62,-110.75,"PUC"],[37.08,-113.6,"SGU"],[40.22,-111.72,"PVU"],[40.73,-114.03,"ENV"],[40.43,-109.52,"VEL"],
[37.69,-112.3,"BCE"],[38.42,-110.7,"HVE"],[39.30,-112.51,"DTA"],[40.15,-110.13,"MTU"],[36.69,-78.05,"AVC"],
[36.69,-77.48,"EMV"],[38.14,-78.45,"CHO"],[37.93,-75.48,"WAL"],[36.57,-79.33,"DAN"],[38.95,-77.45,"IAD"],
[37.95,-79.83,"HSP"],[37.65,-75.77,"MFV"],[36.90,-81.35,"MKJ"],[37.13,-76.5,"PHF"],[38.27,-78.9,"SHD"],
[36.98,-82.53,"LNP"],[36.70,-76.9,"FKN"],[37.18,-77.52,"PTB"],[39.15,-78.15,"OKV"],[38.01,-77.97,"LKU"],
[38.50,-77.3,"NYG"],[38.27,-77.45,"EZF"],[36.63,-80.02,"MTV"],[36.66,-76.32,"CPK"],[37.52,-76.76,"FYJ"],
[36.77,-80.82,"HLX"],[37.35,-78.43,"FVX"],[37.25,-79.23,"LYH"],[37.50,-77.32,"RIC"],[36.68,-82.03,"VJI"],
[36.89,-76.2,"ORF"],[37.09,-80.71,"PSK"],[37.22,-80.42,"BCB"],[38.62,-77.8,"OPL"],[43.35,-72.52,"VSF"],
[44.42,-72.02,"1V4"],[43.53,-72.95,"RUT"],[44.53,-72.62,"MVL"],[44.20,-72.57,"MPV"],[43.75,-72.66,"BND"],
[47.90,-122.28,"PAE"],[46.75,-117.12,"PUW"],[48.12,-123.5,"CLM"],[47.97,-117.42,"DEW"],[47.03,-120.53,"ELN"],
[46.10,-118.28,"ALW"],[46.27,-119.12,"PSC"],[47.95,-124.55,"UIL"],[47.28,-121.33,"SMP"],[46.12,-122.9,"KLS"],
[48.35,-122.65,"NUW"],[48.46,-119.52,"OMK"],[47.50,-122.75,"PWT"],[47.40,-120.2,"EAT"],[46.97,-122.9,"OLM"],
[48.95,-122.58,"BLI"],[48.30,-124.63,"TOU"],[47.38,-119.42,"EPH"],[46.57,-119.6,"HMS"],[46.95,-124.15,"HQM"],
[46.57,-120.45,"YKM"],[42.89,-90.23,"MRJ"],[43.98,-88.55,"OSH"],[43.22,-90.18,"LNR"],[43.13,-89.33,"MSN"],
[44.93,-89.63,"AUW"],[44.61,-88.73,"CLI"],[44.44,-89.83,"ISW"],[43.43,-88.7,"UNU"],[42.68,-88.3,"BUU"],
[42.62,-89.03,"JVL"],[44.13,-87.68,"MTW"],[44.25,-88.52,"ATW"],[45.70,-90.4,"PBH"],[45.93,-89.73,"ARV"],
[45.82,-92.37,"RZN"],[43.93,-90.27,"VOK"],[46.54,-90.92,"ASX"],[43.78,-87.85,"SBM"],[43.16,-90.68,"OVS"],
[46.15,-89.21,"LNL"],[45.15,-92.54,"RNH"],[44.85,-87.42,"SUE"],[45.63,-89.45,"RHI"],[44.90,-91.48,"EAU"],
[43.12,-88.28,"BAE"],[43.42,-88.13,"ETB"],[45.50,-91,"RCX"],[45.48,-91.72,"RPD"],[43.17,-88.72,"RYV"],
[46.02,-91.45,"HYR"],[45.10,-90.3,"MDZ"],[44.33,-89.01,"PCZ"],[42.62,-89.59,"EFT"],[43.55,-89.76,"DLL"],
[38.37,-82.55,"HTS"],[39.65,-79.92,"MGW"],[39.30,-80.23,"CKB"],[40.18,-80.65,"HLG"],[37.30,-81.2,"BLF"],
[37.87,-80.4,"LWB"],[39.40,-77.98,"MRB"],[39.35,-81.43,"PKB"],[37.60,-81.56,"I16"],[37.78,-81.12,"BKW"],
[38.92,-80.1,"EKN"],[44.38,-106.72,"BYG"],[42.78,-105.37,"DGW"],[42.92,-106.47,"CPR"],[41.28,-111.03,"EVW"],
[42.82,-108.73,"LND"],[43.97,-107.95,"WRL"],[44.51,-108.07,"GEY"],[44.55,-110.42,"P60"],[42.06,-104.15,"TOR"],
[44.52,-109.02,"COD"],[41.80,-107.2,"RWL"],[42.97,-110.95,"SVR"],[44.35,-105.53,"GCC"],[42.57,-106.85,"PAT"],
[43.46,-108.3,"BOY"],[44.00,-106.44,"CZI"],[41.59,-109.02,"OCS"],[42.58,-110.11,"BPI"],[44.84,-107.06,"SHR"],
[43.62,-110.73,"JAC"],[41.33,-105.72,"LAR"],[30.38,-103.68,"E38"],[31.92,-102.39,"ODO"],[49.19,-123.18,"YVR"],
[43.09,-106.28,"DDY"],[45.22,-70.48,"EUS"],[42.93,-71.43,"MHT"],[45.05,-71.38,"LKF"],[44.55,-70.56,"RUM"],
[40.74,-122.92,"WEV"],[40.32,-122.99,"YOB"],[39.44,-123.80,"FRB"],[40.72,-123.92,"KNN"],[41.34,-123.49,"SMB"],
[40.94,-123.63,"WCK"],[39.76,-123.22,"C31"],[39.70,-123.48,"LAY"],[33.39,-110.79,"LEA"],[33.97,-112.74,"WKB"]]
lats = np.concatenate((np.array(allstn)[:,0],np.array(allwfos)[:,0]))
lons = np.concatenate((np.array(allstn)[:,1],np.array(allwfos)[:,1]))
stations = np.concatenate((np.array(allstn)[:,2],np.array(allwfos)[:,2]))
#print(stations)
urlversion = False
usespread = True
sta = sys.argv[2]
#print(sta)
stns = [sta]
vara = ['Total-QPF','Total-SNO']
flag = 0
for i in np.array(allwfos)[:,2]: #stations
if i == stns[0]:
flag = 1
if flag == 0:
raise NameError('Station not in the list')
dd = datetime.utcnow().strftime('%Y%m%d')
dda = datetime.utcnow() - timedelta(hours=24)
dda = dda.strftime('%Y%m%d')
ddb = datetime.utcnow() - timedelta(hours=48)
ddb = ddb.strftime('%Y%m%d')
print(dd,dda,ddb)
tt = float(datetime.utcnow().strftime('%H'))
print(dd,tt)
#wanttoday with remaining previous times
if tt > 6 and tt < 14:
last_time = '03'
elif tt > 13 and tt < 19:
last_time = '09'
elif (tt > 18 and tt < 25):
last_time = '15'
else:
last_time = '21'
print('last_time',last_time)
if last_time == '03': #this needs to be rewritten
ut = ['09','15','21','03','09','15','21',last_time]
dt = [ddb,ddb,ddb,dda,dda,dda,dda,dd]
elif last_time == '09':
ut = ['15','21','03','09','15','21','03',last_time]
dt = [ddb,ddb,dda,dda,dda,dda,dd,dd]
elif last_time == '15':
ut = ['21','03','09','15','21','03','09',last_time]
dt = [ddb,dda,dda,dda,dda,dd,dd,dd]
elif last_time == '21':
ut = ['03','09','15','21','03','09','15',last_time]
dt = [dda,dda,dda,dda,dd,dd,dd,dd]
dt = [ddb,ddb,ddb,ddb,dda,dda,dda,dda]
##########
a = np.load('stnlookup.npz')
#print(a.keys())
lookup = a['lookup']
stat = a['stat']
ij = np.where(stat == stns[0])[0] #find the wfo
ji = lookup[ij] #retrieve the station array value
dst = [stat[i] for i in ji[0]] #extract the station names
print(dst)
##########
# now assemble pdates
pdates = []
for i in range(0,8):
pdates.append(dt[i]+'_'+ut[i])
print(pdates)
#pdates = ['20150129_03','20150129_09','20150129_15','20150129_21','20150130_03','20150130_09','20150130_15','20150130_21']
for var in vara:
spread = np.zeros((len(dst)*27,8))
srefens = np.zeros((26,8))
for i,j in enumerate(dst):
xa = i + 26*i
xb = xa + 26
#print(xa,xb)
for k,l in enumerate(pdates):
try:
if urlversion:
url = 'http://www.spc.noaa.gov/exper/sref/srefplumes/json_sid/'+l+'/'+j+'.dat'
mema,dat,valia = retrieveurl(url,var,tt=ut[k],stn=j)
else:
url = '/web/devweb/public_html2/srefplumes/json_sid/'+l+'/'+j+'.dat'
#print (url)
mema,dat,valia = retrieve(url,var,tt=ut[k],stn=j)
spread[xa:xb,k] = np.array(dat)
except:
print(var+' '+l+' had a problem')
valid = []
for i,j in enumerate(stns):
for k,l in enumerate(pdates):
try:
if urlversion:
url = 'http://www.spc.noaa.gov/exper/sref/srefplumes/json_sid/'+l+'/'+j+'.dat'
mem,dat,vali = retrieveurl(url,var,tt=ut[k],stn=j)
else:
url = '/web/devweb/public_html2/srefplumes/json_sid/'+l+'/'+j+'.dat'
mem,dat,vali = retrieve(url,var,tt=ut[k],stn=j)
srefens[:,k] = np.array(dat)
valid.append(vali)
except:
print(var+' '+l+' Had a problem')
medians = np.median(srefens,axis=0)
err_check = np.max(srefens,axis=0)
psn = np.where(err_check > 0)[0]
print(psn)
#now redo the array
nsrefens = srefens[:,psn]
spsn = np.where(np.max(spread,axis=0) > 0)[0]
print(spsn)
nspread = spread[:,spsn]
mediand = np.median(spread,axis=0)
aspect_ratio = 2.5
fig = plt.figure(figsize=(3*aspect_ratio,3))
ax = fig.add_subplot(111)
# set up y axis limit
smax = np.array([np.max(srefens),np.max(spread)])
con = int(np.max(smax))/10
print(smax)
#do we generate a graphic?
if np.max(smax) < 0.01:
print(datetime.now() - startTime)
raise ValueError('Zero Array for '+var)
snomax = round(np.max(smax),2)+con
#if snomax < 1:
# snomax = 1.
#PLACEHOLDER for verification
ver = False
if ver and stns[0] == 'LGA':
val = [5,5,5,5,5,5,5,5]
#left violin is the single station
if np.max(srefens) > 0:
print(srefens)
sm.graphics.violinplot(nsrefens.T,ax=ax,side='left',labels=np.array(ut)[psn],show_boxplot=False,positions=psn,plot_opts={'cutoff_val':0, 'cutoff_type':'abs','label_fontsize':'large','label_rotation':0,'violin_fc':'b','violin_width':1.,'violin_alpha':.5})
#right violin is the surrounding stations
if usespread:
sm.graphics.violinplot(nspread.T,ax=ax,side='right',labels=np.array(ut)[spsn],show_boxplot=False,positions=spsn,plot_opts={'cutoff_val':0, 'cutoff_type':'abs','label_fontsize':'large','label_rotation':0,'violin_fc':'c','violin_width':1,'violin_alpha':.5})
patch2 = mpatches.Patch(color='c', label='SRD '+str(np.size(dst)), alpha=0.5)
else: # or by model core
sm.graphics.violinplot(srefens[0:13,:].T,ax=ax,side='right',labels=ut,show_boxplot=False,positions=range(8),plot_opts={'cutoff_val':0, 'cutoff_type':'abs','label_fontsize':'large','label_rotation':0,'violin_fc':'c','violin_width':.5,'violin_alpha':.5})
patch2 = mpatches.Patch(color='c', label='ARW', alpha=0.5)
patch1 = mpatches.Patch(color='b', label=stns[0], alpha=0.5)
plt.legend(handles=[patch1,patch2],loc=1,fontsize=8)
plt.ylim(0,snomax)
plt.xlim(-.5,np.shape(srefens)[1]-.5)
#medians
plt.scatter(np.arange(-0.25,np.shape(srefens)[1]-.25,1),medians,marker='*',color='b',s=45, edgecolor='k')
plt.scatter(np.arange(0.25,np.shape(srefens)[1]+.25,1),mediand,marker='*',color='c',s=45, edgecolor='k')
#verification
if ver:
plt.scatter(range(0,np.shape(srefens)[1],1),val,marker='^',edgecolor='k',color='none',s=45)
text(6.6,snomax*.84,'Verif')
plt.scatter(6.5,snomax*.85,marker='^',color='k')
plt.ylabel(var+' (Inches)')
plt.text(1.1,snomax-(snomax/20.),'NOAA National Weather Service Storm Prediction Center',fontsize=10)
valt = [valid[0][0][2:8]+'\n'+valid[0][0][9:]+'00',valid[1][1][2:8]+'\n'+valid[1][1][9:]+'00',valid[2][2][2:8]+'\n'+valid[2][2][9:]+'00',valid[3][3][2:8]+'\n'+valid[3][3][9:]+'00',valid[4][4][2:8]+'\n'+valid[4][4][9:]+'00',valid[5][5][2:8]+'\n'+valid[5][5][9:]+'00',valid[6][6][2:8]+'\n'+valid[6][6][9:]+'00',valid[7][7][2:8]+'\n'+valid[7][7][9:]+'00']
plt.xticks(range(np.shape(srefens)[1]),valt,fontsize=10)
plt.xlabel('Valid end-of-run date/time',fontsize=8)
if var == 'Total-SNO':
vv = 'SNO'
else:
vv = 'QPF'
plt.savefig(stns[0]+'_'+vv+'-Vplot.png',dpi=100,bbox_inches="tight")
print(datetime.now() - startTime)
print(np.size(stations))