#!/usr/bin/python2
# ====================================================================
# bounding box = left,bottom,right,top (west,south,east,north)
# ====================================================================
import overpy
# -------------------------------------------------------------------
# ---- convert to degrees:int, minutes:int, seconds:int, seconds:float
# -------------------------------------------------------------------
def dms(deg:float) -> tuple:
neg = False
if deg < 0.0:
neg = True
deg = -deg
d = int(deg)
mf = abs(deg - d) * 60.0
m = int(mf)
sf = (mf - m) * 60.0
s = int(sf)
if neg:return(-d,-m,-s,-sf)
return (d,m,s,sf)
# --------------------------------------------------------------------
# ---- display bbox as dms
# ---- bounding box = lat south, lon west, lat north, lon east
# --------------------------------------------------------------------
def display_bbox_dms(bbox):
ll = ['lat (south)','lon (west)','lat (north)','lon (east)']
for i in range(4):
d,m,s,sf = dms(bbox[i])
print(f'{ll[i]:11} deg={d:>4} min={m:>3} sec={s:>3}'+\
f' ({bbox[i]:.6})')
return
# --------------------------------------------------------------------
# -- main
# --------------------------------------------------------------------
bbox = [ 34.1470, -118.1449, 34.1479, -118.1440 ]
display_bbox_dms(bbox)
# ---- overpass API query
api = overpy.Overpass()
qry = f'node({bbox[0]},{bbox[1]},{bbox[2]},{bbox[3]});out;'
result = api.query(qry)
nod_l = len(result.nodes)
print(f'results nodes: {nod_l}')
way_l = len(result.ways)
print(f'results ways: {way_l}')
rel_l = len(result.relations)
print(f'results relations: {rel_l}')
# ---- display nodes sith tags
if nod_l > 0:
print()
for i in range(nod_l):
node = result.nodes[i]
if len(node.tags) > 0:
print('--------------------------')
print(f'node: {node.id}')
print(f'node.tag: {node.tags}')