In [1]:
import json
from bs4 import BeautifulSoup
import numpy as np
In [2]:
def read4json(file_path):
"Read configuration data form json file and return a list"
with open(file_path, 'r') as data_file:
data = json.load(data_file)
return data
def save2json(file_path, data):
"Save configuration data to a json file"
with open(file_path, 'w') as data_file:
json.dump(data, data_file, indent=4)
In [3]:
censo_path = '../datos/crudos/censo2010cba.json'
kml_path = '../datos/crudos/Ladrilleros.kml'
data_path = '../datos/cortaderos_new.geojson'
In [4]:
# diccionario usados para obtener los valores del censo
acceso_a_gas = {
'H14_01': 'Gas de red',
'H14_02': 'Gas a granel',
'H14_03': 'Gas en tubo',
'H14_04': 'Gas en garrafa',
'H14_05': 'Electricidad',
'H14_06': 'Leña o carbón',
'H14_07': 'Otro'
}
acceso_a_agua = {
'H12_01': 'Red pública',
'H12_02': 'Perforación con bomba a motor',
'H12_03': 'Perforación con bomba manual',
'H12_04': 'Pozo',
'H12_05': 'Transporte por cisterna',
'H12_06': 'Agua de lluvia, río, canal, arroyo o acequia'
}
H12 = ['H12_01', 'H12_02', 'H12_03', 'H12_04', 'H12_05', 'H12_06']
H14 = ['H14_01', 'H14_02', 'H14_03', 'H14_04', 'H14_05', 'H14_06', 'H14_07']
In [5]:
data = open(kml_path).read()
bs = BeautifulSoup(data, "lxml")
In [6]:
bs.find('coordinates').text
Out[6]:
In [7]:
censo = read4json(censo_path)
len_censo = len(censo[0]['features'])
In [8]:
todas_cortaderas = []
for coordenadas in bs.find_all('coordinates'):
# Coordenadas de la cortadera
lat, long, z = coordenadas.text.split(',')
cortadera_pos = np.array([float(lat), float(long)])
# calculo ladistancia de la cortadera a todos los puntos del censo
pos = np.zeros((len_censo, 2))
for i in range(len_censo):
pos[i, 0] = censo[0]['features'][i]['properties']['coordinates'][0]
pos[i, 1] = censo[0]['features'][i]['properties']['coordinates'][1]
diff = (pos - cortadera_pos)**2
suma = diff[:,0] + diff[:,1]
minimo = suma.argmin()
# obtengo los datos del agua del punto mas cercano del censo
agua_dic = {}
for key in H12:
value = censo[0]['features'][minimo]['properties'][key]
new_key = acceso_a_agua[key]
agua_dic[new_key] = value
# obtengo los datos del gas del punto mas cercano del censo
gas_dic = {}
for key in H14:
value = censo[0]['features'][minimo]['properties'][key]
new_key = acceso_a_gas[key]
gas_dic[new_key] = value
# densidaddemografica
densidad = censo[0]['features'][minimo]['properties']['P_TOTAL']
# nuevo valor para el json de las cortaderas
entry = {
"geometry": {
"coordinates": list(cortadera_pos),
"type": "Point"
},
"type": "Feature",
"properties": {
"type": "cortaderos",
"name": "Cortadero",
"acceso_gas": gas_dic,
"acceso_agua": agua_dic,
"densidad": densidad
}
}
todas_cortaderas.append(entry)
In [9]:
geojson = {
"type": "FeatureCollection",
"features": todas_cortaderas
}
save2json('../datos/cortaderos_new.geojson', geojson)
In [ ]: