116 lines
3.7 KiB
Python
116 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
|
|
|
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()
|
|
|
|
|
|
def polygon_pop():
|
|
cursor.execute("select warnindex from svr where polygonpop is null")
|
|
polys_to_update = cursor.fetchall()
|
|
sql = "update svr set polygonpop = (select(St_SummaryStats(st_clip(rlxpop.rast, svr.nwspoly, true))).sum::int from rlxpop,svr where warnindex = %s) where warnindex = %s"
|
|
for p in polys_to_update:
|
|
vals = p,p
|
|
cursor.execute(sql,vals)
|
|
conn.commit()
|
|
|
|
|
|
|
|
def verify_severe():
|
|
cursor.execute('select vtec from svr where EXTRACT(EPOCH FROM (current_timestamp - endtime ))/60/60/24 < 3')
|
|
svr = cursor.fetchall()
|
|
#print(svr)
|
|
for i in svr:
|
|
sql = "select sum (power.outagen) as total from power,svr where svr.vtec = %s and ST_Contains(svr.nwspoly,power.realgeom) and power.startguess > svr.issue and power.startguess < svr.endtime + (120 ||'minutes')::interval group by svr.vtec"
|
|
val = (i,)
|
|
cursor.execute(sql,val)
|
|
svrout = cursor.fetchall()
|
|
try:
|
|
if svrout[0][0] == None:
|
|
svroutages = 0
|
|
else:
|
|
svroutages = str(svrout[0][0])
|
|
sql = 'update svr set outagesvalid = %s where vtec = %s'
|
|
val = (svroutages,i)
|
|
cursor.execute(sql,val)
|
|
# info = {'vtec': str(i[0]), 'outagesvalid': svroutages}
|
|
# svrinfo.append(info)
|
|
|
|
except:
|
|
svroutages = 0
|
|
sql = 'update svr set outagesvalid = %s where vtec = %s'
|
|
val = (svroutages,i)
|
|
cursor.execute(sql,val)
|
|
conn.commit()
|
|
# info = {'vtec': str(i[0]), 'outagesvalid': svroutages}
|
|
# svrinfo.append(info)
|
|
conn.commit()
|
|
|
|
#select sum (power.outagen) as total from power,svr where st_contains(st_buffer(svr.nwspoly, .1,'side=left join=mitre quad_segs=32'),power.realgeom) and power.startguess > svr.issue and power.startguess < svr.endtime + (60 ||'minutes')::interval group by svr.vtec
|
|
#select nwspoly, st_buffer(svr.nwspoly, .072,'side=left join=mitre quad_segs=32') from svr limit 1
|
|
def verify_severe_buffer():
|
|
cursor.execute('select vtec from svr where EXTRACT(EPOCH FROM (current_timestamp - endtime ))/60/60/24 < 3')
|
|
svr = cursor.fetchall()
|
|
#print(svr)
|
|
for i in svr:
|
|
sql = "select sum (power.outagen) as total from power,svr where svr.vtec = %s and ST_Contains(st_buffer(svr.nwspoly, .072,'side=left join=mitre quad_segs=32'),power.realgeom) and power.startguess > svr.issue and power.startguess < svr.endtime + (120 ||'minutes')::interval group by svr.vtec"
|
|
val = (i,)
|
|
cursor.execute(sql,val)
|
|
svrout = cursor.fetchall()
|
|
try:
|
|
if svrout[0][0] == None:
|
|
svroutages = 0
|
|
else:
|
|
svroutages = str(svrout[0][0])
|
|
sql = 'update svr set outagesbuffer = %s where vtec = %s'
|
|
val = (svroutages,i)
|
|
cursor.execute(sql,val)
|
|
# info = {'vtec': str(i[0]), 'outagesvalid': svroutages}
|
|
# svrinfo.append(info)
|
|
|
|
except:
|
|
svroutages = 0
|
|
sql = 'update svr set outagesbuffer = %s where vtec = %s'
|
|
val = (svroutages,i)
|
|
cursor.execute(sql,val)
|
|
conn.commit()
|
|
# info = {'vtec': str(i[0]), 'outagesbuffer': svroutages}
|
|
# svrinfo.append(info)
|
|
conn.commit()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
svrinfo = []
|
|
verify_severe()
|
|
verify_severe_buffer()
|
|
|
|
|
|
|
|
cursor.execute('select vtec,outagesvalid,polygonpop,outagesbuffer from svr where EXTRACT(EPOCH FROM (current_timestamp - endtime ))/60/60/24 < 60')
|
|
svrout = cursor.fetchall()
|
|
|
|
polygon_pop()
|
|
|
|
for i in svrout:
|
|
info = {'vtec': str(i[0]), 'outagesvalid': i[1], 'polygonpop': int(i[2]), 'percout': round(i[1]*2.5/int(i[2])*1000)/10, 'outagesbuffer': i[3]}
|
|
svrinfo.append(info)
|
|
|
|
|
|
|
|
with open("/var/www/html/work/svr.json", "w") as outfile:
|
|
outfile.write(json.dumps(svrinfo))
|
|
|
|
cursor.close()
|
|
conn.close()
|