72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
import time
|
|
import requests
|
|
import json
|
|
import psycopg2
|
|
import psycopg2.extensions
|
|
from psycopg2.extras import Json
|
|
|
|
|
|
conn = psycopg2.connect(host='127.0.0.1', database='nws', user='nws', password='nws')
|
|
cursor = conn.cursor()
|
|
|
|
|
|
|
|
|
|
updates = ['UPDATE public.cams SET geom = ST_SetSRID(ST_MakePoint(lon, lat), 4326)',
|
|
'UPDATE public.cams SET county = county.countyname from public.county WHERE ST_Contains(county.geom,cams.geom)',
|
|
'UPDATE public.cams SET pzone = pzone.state_zone from public.pzone WHERE ST_Contains(pzone.geom,cams.geom)',
|
|
'UPDATE public.cams SET fzone = fzone.state_zone from public.fzone WHERE ST_Contains(fzone.geom,cams.geom)',
|
|
'UPDATE public.cams SET cwa = fzone.cwa from public.fzone WHERE ST_Contains(fzone.geom,cams.geom)',
|
|
'UPDATE public.cams SET zonename = pzone.shortname from public.pzone WHERE ST_Contains(pzone.geom,cams.geom)',
|
|
'UPDATE public.cams SET state = county.state from public.county WHERE ST_Contains(county.geom,cams.geom)']
|
|
|
|
for i in updates:
|
|
cursor.execute(i)
|
|
|
|
|
|
|
|
conn.commit()
|
|
|
|
|
|
|
|
headers = {
|
|
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
|
|
}
|
|
|
|
cursor.execute("SELECT camid, lon, lat from cams WHERE elevation ISNULL")
|
|
allcams = cursor.fetchall()
|
|
|
|
|
|
|
|
def get_elev(lon,lat):
|
|
sql = "SELECT round(ST_Value(rast, ST_SetSRID(ST_MakePoint(%s,%s),4326)) * 3.28084) AS val FROM dem WHERE ST_Intersects(rast, ST_SetSRID(ST_MakePoint(%s,%s),4326))"
|
|
vars = (lon,lat,lon,lat)
|
|
cursor.execute(sql,vars)
|
|
elev = cursor.fetchone()
|
|
print(elev)
|
|
if (elev != None):
|
|
return int(elev[0])
|
|
if (elev == None):
|
|
elev = get_elev_backup(lon,lat)
|
|
print('backup: ' +str(elev))
|
|
return int(elev)
|
|
|
|
def get_elev_backup(lon,lat):
|
|
baseurl = 'https://nationalmap.gov/epqs/pqs.php?x={}&y={}&units=Feet&output=json'.format(lon,lat)
|
|
r = requests.get(baseurl, timeout=3,headers=headers)
|
|
if r.status_code == 200:
|
|
returns = r.json()
|
|
elev = returns.get('USGS_Elevation_Point_Query_Service').get('Elevation_Query').get('Elevation')
|
|
return elev
|
|
|
|
|
|
|
|
for cam in allcams:
|
|
camid, lon, lat = cam
|
|
elev = get_elev(lon,lat)
|
|
val = (elev,camid)
|
|
sql = "UPDATE cams SET elevation= %s WHERE camid = %s"
|
|
cursor.execute(sql,val)
|
|
conn.commit()
|
|
|