Skip to content

Commit

Permalink
Merge pull request #27 from enflujo/nueva-estructura-datos
Browse files Browse the repository at this point in the history
🐈 Nueva estructura datos
  • Loading branch information
anattolia authored Feb 12, 2024
2 parents 50e3471 + f78769c commit 41c1a2c
Show file tree
Hide file tree
Showing 15 changed files with 385 additions and 9,456 deletions.
2 changes: 1 addition & 1 deletion estaticos/listas.json

Large diffs are not rendered by default.

9,178 changes: 1 addition & 9,177 deletions estaticos/proyectos.json

Large diffs are not rendered by default.

4 changes: 0 additions & 4 deletions procesador/ayudas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ export const guardarJSON = (json: any, nombre: string) => {
writeFileSync(`./estaticos/${nombre}.json`, JSON.stringify(json));
};

export const guardarGEOJSON = (json: any, nombre: string) => {
writeFileSync(`./estaticos/${nombre}.geo.json`, JSON.stringify(json));
};

export function ordenarListaObjetos(lista: any[], llave: string, descendente = false) {
lista.sort((a, b) => {
if (a[llave] < b[llave]) return descendente ? -1 : 1;
Expand Down
77 changes: 77 additions & 0 deletions procesador/lugares.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import { getXlsxStream } from 'xlstream';
import slugificar from 'slug';
import type { Listas, Lugar } from '../src/tipos.js';
import { guardarJSON } from './ayudas.js';
import type { Feature, FeatureCollection, Point } from 'geojson';

export default async function procesarLugares(archivo: string, listas: Listas): Promise<void> {
return new Promise(async (resolver, rechazar) => {
const flujoLugares = await getXlsxStream({
filePath: archivo,
sheet: 'lugares',
withHeader: false,
ignoreEmpty: true
});

let numeroFila = 1;
const lugares: Lugar[] = [];
const geojson: FeatureCollection = { type: 'FeatureCollection', features: [] };

flujoLugares.on('data', (fila) => {
if (numeroFila > 2) {
procesarLugar(fila.formatted.arr);
} else {
}

numeroFila++;
});

flujoLugares.on('close', () => {
procesarDatosMapa();
guardarJSON(geojson, 'datosMapa.geo');

resolver();
});

function procesarLugar(fila: string[]) {
const nombreLugar = fila[0].trim();
const slug = slugificar(nombreLugar);
const longitud = fila[8];
const latitud = fila[7];
const lugar = listas.municipios.filter((elemento) => elemento.slug === slug);
const conteo = lugar[0] ? lugar[0].conteo : 0;

const respuesta: Lugar = {
nombre: nombreLugar,
slug: slug,
lon: +longitud,
lat: +latitud,
conteo
};

if (respuesta.lon && respuesta.lat) {
lugares.push(respuesta);
}
}

// Función para crear geojson con lugares y cantidad de proyectos por lugar
function procesarDatosMapa() {
for (let lugar in lugares) {
const conteo = lugares[lugar].conteo;

const elemento: Feature<Point> = {
type: 'Feature',
properties: {
slug: lugares[lugar].slug,
conteo
},
geometry: { type: 'Point', coordinates: [lugares[lugar].lon, lugares[lugar].lat] }
};

if (conteo > 0) {
geojson.features.push(elemento);
}
}
}
});
}
Loading

0 comments on commit 41c1a2c

Please sign in to comment.