Files
test/runallgeom.py
2025-11-27 22:25:36 +00:00

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()