#!/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}')