import os def load_paraderos(): from bs4 import BeautifulSoup from zipfile import ZipFile # print(os.getcwd()) with ZipFile('webinterface/models/datos/PARADEROS_FORMALES.kmz', 'r') as kmz: kml = kmz.open(kmz.filelist[0].filename, 'r').read() soup = BeautifulSoup(kml, 'xml') listado_paraderos = [] for paradero in soup.find_all("kml:Placemark"): data = {} data['latitude'] = int(paradero.find("kml:SimpleData", {"name": "LATITUDE"}).text)/1000000 data['longitude'] = int(paradero.find("kml:SimpleData", {"name": "LONGITUDE"}).text)/1000000 data['codigo'] = paradero.find("kml:SimpleData", {"name": "CODIGO_INT"}).text data['comuna'] = paradero.find("kml:SimpleData", {"name": "COMUNA"}).text data['recorridos'] = paradero.find("kml:SimpleData", {"name": "RECORRIDOS"}).text data['tamano'] = paradero.find("kml:SimpleData", {"name": "SUPERFICIE"}).text data['capacidad'] = paradero.find("kml:SimpleData", {"name": "CAPACIDAD"}).text data['material'] = "{} | {} | {}".format(paradero.find("kml:SimpleData", {"name": "RADIER_MAT"}).text, paradero.find("kml:SimpleData", {"name": "PARED_POS2"}).text, paradero.find("kml:SimpleData", {"name": "TECHUMBRE2"}).text) listado_paraderos.append(data) return listado_paraderos def load_estaciones(): from bs4 import BeautifulSoup from zipfile import ZipFile with ZipFile('webinterface/models/datos/ESTACIONES_BIOTREN.kmz', 'r') as kmz: kml = kmz.open(kmz.filelist[0].filename, 'r').read() soup = BeautifulSoup(kml, 'xml') listado_estaciones = [] for estacion in soup.find_all("kml:Placemark"): lng, lat, _ = estacion.find("kml:coordinates").text.split(",") data = {} data['latitude'] = float(lat) data['longitude'] = float(lng) data['codigo'] = estacion.find("kml:name").text listado_estaciones.append(data) return listado_estaciones def listado_recorridos(): listado = [] for f in next(os.walk("webinterface/models/datos/TRAZADOS/"))[2]: listado.append(f[:-4]) return listado def load_recorrido(recorrido = None): from bs4 import BeautifulSoup from zipfile import ZipFile try: with ZipFile('webinterface/models/datos/TRAZADOS/{}.kmz'.format(recorrido), 'r') as kmz: kml = kmz.open(kmz.filelist[0].filename, 'r').read() except: with ZipFile('webinterface/models/datos/TRAZADOS/127 - 31DF RUTA DEL MAR S.A..kmz', 'r') as kmz: kml = kmz.open(kmz.filelist[0].filename, 'r').read() soup = BeautifulSoup(kml, 'xml') colores = ['#DE4C8A', '#ED760E', '#35682D', '#D6AE01', '#84C3BE', '#293133', '#57A639', '#E63244', '#ED760E', '#2271B3', '#231A24', '#008F39'] colorindex = 0 respuesta_recorridos = [] for recorrido in soup.find_all("kml:Placemark"): puntos = [] for punto in recorrido.find("kml:coordinates").text.strip().split(" "): lng, lat, _ = punto.split(",") puntos.append({ 'lat': float(lat), 'lng': float(lng) }) latitude = 0.5*(puntos[0]['lat'] + puntos[-1]['lat']) longitude = 0.5*(puntos[0]['lng'] + puntos[-1]['lng']) data = {} data['latitude'] = latitude data['longitude'] = longitude data['recorrido'] = puntos data['color'] = colores[colorindex] colorindex += 1 respuesta_recorridos.append(data) return respuesta_recorridos