103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
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 |