from osm_parser import get_default_parser class Node: def __init__(self, id, lat, lng): self.id = id self.lat = float(lat) self.lng = float(lng) def coord_tuple(self): return self.lat, self.lng parser = None # Have a global reusable parser object def extract_osm_nodes(f_name): global parser parser = get_default_parser(f_name) nodes = dict() for node in parser.iter_nodes(): nodes[node['id']] = Node(node['id'], node['lat'], node['lon']) return nodes def select_nodes_in_rectangle(nodes, min_lat, max_lat, min_long, max_long): return [node for node in nodes.values() if min_lat <= node.lat <= max_lat and min_long <= node.lng <= max_long]