Teoría:

La información geoespacial y las herramientas para trabajarla han tenido una revolución en los últimos años. Algunos factores relevantes son:

  • Ubicuidad de los teléfonos inteligentes equipados con GPS
  • Openstreetmap, un proyecto colaborativo para crear mapas editables y libres.
  • Aparición de software SIG libre QGis y fin del monopolio de ARCGIS
  • Disponibilidad de geodatos, publicados por de agencias de gobierno (transparencia)
  • Disponibilidad de geodatos (fotos y DEMS) publicados por NASA, USGS y otros
  • Lenguajes de programación orientados a ciencia de datos (Python, R, otros)
  • Librerías y servicios de mapas web (Leaflet, Mapbox y otras)
  • Drones

Fases generales de un proyecto de mapas

  • Obtención de la información
  • Depuración y limpieza
  • Análisis y visualización
  • Distribución

Estas fases no son estrictamente secuenciales y generalmente se está volviendo atrás y repitiendo el ciclo.

Algunos ejemplos personales

Algunas herramientas útiles y sus fortalezas

herramienta/fase obtención y creación depuración análisis y visualiz. distribución
QGIS *** *** *** ** (pdf)
Openstreetmap ***     *** (osm)
GPS ***     ** (gpx)
Celular intelig. ** *   *** (apps)
Leaflet     * *** (web)
Mapbox * * *** *** (web)
Open Refine   ** *  
KeplerGL   * *** **
Python + Pandas   *** *** ** (pdf o web)

Práctica:

El ejercicio consiste en revisar cómo se distribuyen los distintos tipos de intersecciones viales en Santiago, y cómo se relaciona esta distribución con los atropellos. Vamos a obtener los datos de la CONASET Y Openstreetmap/Overpass, revisarlos y ordenarlos con Open Refine, y visualizarlos con KeplerGL. Si alcanza el tiempo vamos a ver cómo hacer un mapa web básico con Geojson.io y Leaflet.

Paso 1, obtención de la información.

Intersecciones semaforizadas

  • Ir a la wiki de Openstreetmap
  • Ver cómo se estructura la información de OSM
  • Ver cómo se etiqueta el elemento que estamos buscando, highway=traffic_signals en este caso.
  • Ir a Overpass.turbo, definir el encuadre, usar el asistente y ejecutar la consulta.
  • Guardar los datos como geojson en nuestro computador, con un nombre descriptivo.
/*
CONSULTA:
*/
[out:json][timeout:25];
// gather results
(
  // query part for: “highway=traffic_signal”
  node["highway"="traffic_signals"]();
);
// print results
out body;
>;
out skel qt;

Atropellos

  • Ir a CONASET > observatorio de datos > información geoespacial.
  • Ver datasets de ‘siniestros tipo atropello’.
  • Descargar uno en formato CSV (hoja de cálculo)
  • Revisarlo brevemente en algún programa de edición de texto o tablas

Bonus: autopistas

  • highway=motorway

Paso 2, depuración

  • Descargar e instalar open refine
  • Abrir el CSV que descargamos de CONASET
  • Revisar las columnas, arreglar las numéricas
  • Arreglar las comunas repetidas (nunoa)
  • Revisar algunas estadísticas básicas, como ubicación y comuna del atropello.
  • Exportar un archivo arreglado y una versión filtrada con comuna=santiago y ubicacion=cruce sin señalización.

Paso 3, visualización con KEPLER.gl

Kepler es una librería desarrollada por UBER para visualizar grandes cantidades de información usando pocos recursos (computacionales) se utiliza por ejemplo para visualizar miles de viajes simultáneos en una ciudad.

  • Abrir https://kepler.gl/demo
  • Cargar el archivo de los semáforos, el de los atropellos y el de las autopistas
  • Revisar la información de atropellos como puntos
  • Usar agregaciones espaciales (heamap, clusters, hexbins, etc)
  • Usar filtros

Bonus, mapa web con la casa de cada uno

Para esto vamos a usar la librería de mapas web llamada Leaflet.

  • Crear un archivo HTML en algún editor de texto (recomiendo VSCode)
  • Pegarle la base:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
  • Seguir las instrucciones en https://leafletjs.com/examples/quick-start/
  • Para no tener que abrir una cuenta en mapbox se pueden usar los siguientes tiles https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
  • Llegar hasta el punto en el que añade un marcador
  • Buscar las coordenadas de nuestra casa en http://geojson.io
  • Cambiar el encuadre del mapa por las de Santiago
  • Cambiar las coordenadas de del marcador por las de nuestra casa

Código terminado

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <!-- leaflet -->
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css"
        integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
        crossorigin="" />

    <!-- Make sure you put this AFTER Leaflet's CSS -->
    <script src="https://unpkg.com/[email protected]/dist/leaflet.js"
        integrity="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og=="
        crossorigin=""></script>

    <style>
        #mapid {
            height: 600px;
        }
    </style>

</head>

<body>
    <div id="mapid"></div>

    <script>
        var mymap = L.map('mapid').setView([-33.4371, -70.6376], 13);
        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            attribution: 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',
            maxZoom: 18,            
        }).addTo(mymap);

        var marker = L.marker([-33.4371, -70.6376]).addTo(mymap);


    </script>
</body>

</html>

FIN