initial
This commit is contained in:
106
svr.py
Normal file
106
svr.py
Normal file
@@ -0,0 +1,106 @@
|
||||
import requests
|
||||
import json
|
||||
import psycopg2
|
||||
import psycopg2.extensions
|
||||
from datetime import datetime, timezone
|
||||
import re
|
||||
|
||||
conn = psycopg2.connect(host='localhost', database='nws', user='nws', password='nws')
|
||||
cursor = conn.cursor()
|
||||
|
||||
S = requests.Session()
|
||||
#select power.realgeom from power,svr where st_contains(svr.nwspoly,power.realgeom)
|
||||
|
||||
headers = {
|
||||
'user-agent': 'wx.stoat.org, john.peck@noaa.gov','Cache-Control': 'no-cache',
|
||||
}
|
||||
|
||||
states = ['WV','OH','VA','KY']
|
||||
|
||||
basestate = 'https://api.weather.gov/alerts/active/area/'
|
||||
|
||||
allalerts = "https://api.weather.gov/alerts"
|
||||
|
||||
|
||||
|
||||
def decode_vtec(pvtec_string):
|
||||
pattern = r"/([A-Z]+)\.([A-Z]+)\.([A-Z]+)\.([A-Z]+)\.([A-Z])\.([0-9]+)\.([0-9A-Z]+)T([0-9A-Z]+)-([0-9A-Z]+)T([0-9A-Z]+)/"
|
||||
match = re.match(pattern, pvtec_string)
|
||||
if match:
|
||||
action_code = match.group(1)
|
||||
phenomena = match.group(2)
|
||||
office = match.group(3)
|
||||
significance = match.group(4)
|
||||
event_type = match.group(5)
|
||||
event_tracking_number = match.group(6)
|
||||
result = [action_code,phenomena,significance,event_type,event_tracking_number,office]
|
||||
else:
|
||||
print("P-VTEC string format not recognized.")
|
||||
return result
|
||||
|
||||
|
||||
def new_check_for_products():
|
||||
products = json.loads(S.get(allalerts, headers=headers).text)
|
||||
for i in products['features']:
|
||||
for j in i['properties']['parameters']['AWIPSidentifier']:
|
||||
#print(j,' first loop')
|
||||
if j == 'SVRRLX' or j == 'TORRLX':
|
||||
warntype = j
|
||||
geometry = i['geometry']
|
||||
gisgeom = json.dumps(geometry)
|
||||
issuetime = i['properties']['sent']
|
||||
issuetime = datetime.strptime(issuetime,"%Y-%m-%dT%H:%M:%S%f%z")
|
||||
endtime = i['properties']['ends']
|
||||
endtime = datetime.strptime(endtime,"%Y-%m-%dT%H:%M:%S%f%z")
|
||||
vtec = i['properties']['parameters']['VTEC'][0]
|
||||
sql = "insert into svr (nwspoly, issue, endtime, warntype, vtec) values (ST_SetSRID(ST_GeomFromGeoJSON(%s), 4326),%s,%s,%s,%s) on conflict (vtec) do nothing"
|
||||
parms = (gisgeom,issuetime,endtime,warntype,vtec)
|
||||
cursor.execute(sql,parms)
|
||||
conn.commit()
|
||||
|
||||
|
||||
for i in products['features']:
|
||||
for j in i['properties']['parameters']['AWIPSidentifier']:
|
||||
# print(j,'second loop')
|
||||
try:
|
||||
if 'SVS' in j or 'SVR' in j or 'TOR' in j or 'FFW' in j or 'FFS' in j or 'FLW' in j or 'FLS' in j:
|
||||
warntype = j
|
||||
geometry = i['geometry']
|
||||
gisgeom = json.dumps(geometry)
|
||||
issuetime = i['properties']['sent']
|
||||
issuetime = datetime.strptime(issuetime,"%Y-%m-%dT%H:%M:%S%f%z")
|
||||
endtime = i['properties']['ends']
|
||||
print(endtime)
|
||||
endtime = datetime.strptime(endtime,"%Y-%m-%dT%H:%M:%S%f%z")
|
||||
year = issuetime.year
|
||||
vtec = i['properties']['parameters']['VTEC'][0]
|
||||
pil = i['properties']['parameters']['AWIPSidentifier'][0]
|
||||
ugc = i['properties']['geocode']['UGC']
|
||||
vtecelements = decode_vtec(vtec)
|
||||
etin = vtecelements[4]
|
||||
operational = vtecelements[0]
|
||||
svstype = vtecelements[1]
|
||||
warntype = vtecelements[2]
|
||||
eventtype = vtecelements[3]
|
||||
office = vtecelements[5]
|
||||
print(ugc)
|
||||
sql = "insert into warntracker (nwspoly, issue, endtime, warntype, vtectext,etin,svstype,pil,ugc,year,office,sig) values (ST_SetSRID(ST_GeomFromGeoJSON(%s), 4326),%s,%s,%s,%s,%s,%s,%s,%s, %s,%s,%s) on conflict do nothing"
|
||||
|
||||
parms = (gisgeom,issuetime,endtime,warntype,vtec,etin,svstype,pil,ugc,year,office,eventtype)
|
||||
print(parms)
|
||||
cursor.execute(sql,parms)
|
||||
conn.commit()
|
||||
|
||||
except Exception as e:
|
||||
print(i,e)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
new_check_for_products()
|
||||
|
||||
|
||||
|
||||
conn.commit()
|
||||
Reference in New Issue
Block a user