QGIS es un programa de Sistemas de Información Geográfica (SIG) gratuito y de código abierto con una interfaz gráfica amigable al usuarios disponible para distintas plataformas. Actualmente es la opción gratuita más completa y fácil de usar para realizar análisis de datos espaciales. QGIS se puede descargar desde www.qgis.org
OpenStreetMap (OSM) es una plataforma colaborativa en internet para crear mapas editables y libres. En esta plataforma cualquier persona puede modificar, editar y agregar información espacial sobre cualquier lugar en el mundo. Se podría decir que OpenStreetMap es un Wikipedia de mapas, donde los datos generados no solamente se pueden desplegar en el sitio web de la plataforma, si no que también pueden descargarse y ser analizados en herramientas de SIG. A pesar de que los datos que se presentan en OSM no son oficiales, en muchos regiones del mundo son los únicos existentes, por lo que se deben considerar como una fuente importante de datos geográficos libres y gratuitos.
El tutorial se realizará utilizando la versión en inglés de QGIS versión 3.4
Se recomienda hacer este tutorial luego del anterior tutorial Creando mapas en QGIS
Para comenzar nuestro análisis debemos enfocarnos en nuestra área de estudio y para esto debemos utilizar varias herramientas de QGIS.
Al hacer esto el mapa del mundo se despliega en la ventana principal de QGIS y en la ventana de Layers nos aparece OpenStreetMap.
De esta manera estamos haciendo que QGIS trabaje en un sistema de coordenadas específico, lo que nos va a servir para poder guiar nuestro análisis a una ubicación específica (ciudad de Puntarenas).
QGIS tiene una gran cantidad de plugins gratuitos que permiten realizar distintos tipos de análisis. Para este ejercicio utilizaremos el plugin QuickOSM que nos permitirá descargar desde QGIS los datos de OSM.
Nota: OSM tiene una gran cantidad de códigos para los distintos objetos que se representan en sus mapas. La guía de todos los códigos que utiliza OSM se puede ver en el siguiente enlace: https://wiki.openstreetmap.org/wiki/ES:Map_Features
Ahora que tenemos los datos en nuestro SIG podemos hacer múltiples análisis. Lo primero es un conteo de cuantas edificaciones tenemos en esa nueva capa.
Si navegamos la tabla de atributos hasta el final, podemos ver que el total de entidades que hay en esta capa ( ~ edificios) son 271 (esto para la fecha en que se escribió el tutorial). ¿Serán estos todos los edificios que existen en Puntarenas? Para esto podemos cargar una imagen de GoogleEarth y hacer una comparación visual.
De esta manera hacemos que QGIS pueda cargar como mapa base las imágenes de Google Earth.
Nota: en caso de querer ampliar la lista de mapas base de QGIS, pueden utilizar el script en Python que hizo Klas Karlsson: https://twitter.com/klaskarlsson/status/972757121933733889
Efectivamente podemos ver a simple vista que la capa de edificios de OSM no representa todos los edificios que existen en la ciudad de Puntarenas. ¿Qué podemos hacer si lo que queremos es saber cuantas edificaciones hay en esta área? La primera opción es tomar el tiempo para editar en OSM desde las imágenes áreas los edificios que hacen falta, la otra opción es descargar todas las entidades que tiene OSM en esta área y buscar alguna que refleje mejor el número de edificios.
Si también reacomodamos las capas y ponemos los polígonos de building bajo los puntos de allKeys vemos que en muchos casos estos no se sobreponen, por lo que podríamos decir a manera de un estimado rápido que hay más de 412 (271 polígonos + 141 puntos) edificaciones y puntos de interés en la ciudad de Puntarenas.
Por Guillermo Durán
Ingeniero forestal y geógrafo, fellow en cambio climático por la Iniciativa Latinoamericana por los Datos Abiertos y Escuela de Datos. Tiene experiencia en el uso de diferentes tecnologías, como programación en R, PostgreSQL, ArcGIS y QGIS. Su trabajo en biogeografía lo ha llevado a diseñar áreas protegidas en Panamá, georeferenciar los datos de los museos de Historial Natural o trabajar en las distribuciones de ciertas especies en futuros climáticos usando Machine Learning. Guillermo estudió ingeniería forestal en Instituto Tecnológico de Costa Rica y luego obtuvo una maestría en Geografía en la Universidad Estatal de San Francisco, California. Ha colaborado con el Centro de Investigaciones Geofísicas de la Universidad de Costa Rica con el análisis y visualización de modelos climáticos.
]]>
Para el tutorial utilizaremos los datos del Sistema Nacional de Información Territorial (SNIT) de Costa Rica, del Índice de Desarrollo Humano (IDH) Cantonal 2016 de Costa Rica y la versión 3 de QGIS.
QGIS es un programa de Sistemas de Información Geográfica (SIG) gratuito y de código abierto con una interfaz gráfica amigable al usuarios disponible para distintas plataformas. Actualmente es la opción gratuita más completa y fácil de usar para realizar análisis de datos espaciales. QGIS se puede descargar desde www.qgis.org
El tutorial se realizará utilizando la versión en inglés de QGIS versión 3.2.3.
De esta manera estaremos agregando al QGIS la dirección del WebFeatureService (WFS) del SNIT para los datos oficiales de Costa Rica escala 1:5,000. Para más información sobre qué es un WFS pueden acceder la entrada anterior del blog sobre tipos de datos geográficos.
http://geos.snitcr.go.cr/be/IGN_5/wfs?
Vale la pena mencionar que el SNIT es la Infraestructura de Datos Espaciales (IDE) oficial de Costa Rica. En esta plataforma se pueden encontrar datos geográficos producidos por distintas instituciones públicas del país. Estos datos geográficos se sirven tanto en formatos OGC (estándares de datos para poderlos desplegarlos en programas de SIG sin necesidad de descargar todo el conjunto de datos en la computadora) así como también en la herramienta de mapas online con que cuenta la plataforma. En nuestro caso usaremos QGIS para trabajar los datos porque nos da mayor flexibilidad que la herramienta web.
La lista completa de fuentes de información y conjuntos de datos con que cuenta el SNIT se puede acceder acá.
Muchos países cuentan desde hace varios años con IDEs donde se pueden acceder muchos conjuntos de datos geográficos libremente. Normalmente con una búsqueda de Google pueden encontrar el IDE del país o gobierno local donde viven.
Seguidamente aparecerá la lista de capas que tiene ese conjunto de datos. Cada una de estas viene siendo como una tabla – cuadro con información geográfica. En nuestro caso queremos desplegar la que tiene la información sobre los límites cantonales del país.
Luego aparecerá una ventana con el indicador de la descarga de la capa seleccionada. Al ser una capa con una escala bastante fina (1:5000), el tamaño de la información es grande, por lo que dependiendo de la velocidad de conexión podrá tomarse varios segundos en desplegarse.
La capa desplegada muestra un polígono por cada cantón del país. Nótese que en Layers (ventana inferior izquierda) se muestra la capa que recién agregamos y hay un checkbox donde podemos ocultar y volver a hacer visible la capa.
Los datos del Índice de Desarrollo Humano (IDH) que se utilizarán en este ejercicio son tomados del trabajo del PNUD y la Universidad de Costa Rica Atlas de Desarrollo Humano Cantonal de Costa Rica 2016. En nuestro caso utilizaremos los datos de los 10 cantones con menor índice de IDH para el año 2014.
Nota: Como es necesario mantener las tildes de los nombres de los cantones, el archivo se debe salvar con el formato de codificación de caracteres UTF-8. Dependiendo de la versión de Excel que se utilice, esto está en la lista de tipos de archivos del guardar como.
Canton | 2014 |
Los Chiles | 0.617 |
Talamanca | 0.634 |
Matina | 0.645 |
Upala | 0.651 |
La Cruz | 0.651 |
Coto Brus | 0.669 |
Guácimo | 0.670 |
Guatuso | 0.670 |
Alajuelita | 0.676 |
La ventana deberá tener la información como la que se ve a continuación.
Nótese que el Encoding también debe ser UTF-8 y que en el cuadro de Geometry definition indicamos el No geometry (attribute only table). Esto último significa que la tabla que estamos agregando no tiene información geográfica.
Nótese que ahora en la lista de capas del QGIS nos aparecen las dos que cargamos anteriormente pero que la última, al no tener información geográfica (coordenadas), no tiene el checkbox desplegarla y ocultarla. Si queremos ver esta tabla debemos darle click derecho a la capa y luego click izquierdo en Open Attribute Table.
Como vimos anteriormente tenemos dos «capas» cargadas en QGIS, una tiene información geográfica (polígonos con los cantones de Costa Rica) y la otra únicamente tiene información tabular (Cantones y valor de IDH). Lo que debemos hacer ahora es unir estas dos capas por un campo común.
Para ver la tabla de atributos de la capa del SNIT, le damos también click derecho y luego click izquierdo en Open Attribute Table. En sus atributos vemos que hay una columna con el nombre de los cantones en un formato similar a la tabla con IDH (letra inicial en mayúscula y nombres con tildes), lo que hace que podamos unir ambas tablas usando los nombres de los cantones.
Si ahora abrimos la tabla de atributos de la capa del SNIT y vemos las últimas columnas, podemos notar que se agregó una columna nueva con el nombre de la tabla de IDH. Esta nueva columna tiene valores numéricos para únicamente los 10 cantones de la tabla, el resto de cantones tienen valores nulos (NULL).
Ya que el color amarillo que se asignaría a los cantones en que el IDH es nulo es muy llamativo (último valor de la lista de colores), podemos dar click en él y seleccionar un color más neutro, en mi caso seleccioné el color blanco.
Dar click en OK para ver las modificaciones que se hicieron.
«IDH10cantones_2014» IS NOT NULL
Si se explora la parte inferior de la ventana de Edit Rule se ven las opciones para cambiar el tipo de letra, color, tamaño, etc. Ajustarlo al gusto y dar click en OK.
En caso de querer cambiar los colores, tipo y tamaño de letra se puede hacer nuevamente desde la ventana de propiedades de la capa, haciendo click en el ícono de edición:
5.1. En el menú de Item Properties de la derecha de la ventana hacemos click para desmarcar el checkbox de Auto update.
5.2. En esa misma sección de la ventana damos click en la tabla con valores de IDH para seleccionarla y luego damos click en el botón de – (color rojo), en la parte inferior de la ventana, para eliminarla de la leyenda.
5.3. En esa misma sección de la ventana damos click en la capa del SNIT y luego en el botón de edición. Cambiamos el nombre que se desplegará en la leyenda para esa capa.
5.4 Damos click en OK para aceptar los cambios.
Por Guillermo Durán
Ingeniero forestal y geógrafo, fellow en cambio climático por la Iniciativa Latinoamericana por los Datos Abiertos y Escuela de Datos. Tiene experiencia en el uso de diferentes tecnologías, como programación en R, PostgreSQL, ArcGIS y QGIS. Su trabajo en biogeografía lo ha llevado a diseñar áreas protegidas en Panamá, georeferenciar los datos de los museos de Historial Natural o trabajar en las distribuciones de ciertas especies en futuros climáticos usando Machine Learning. Guillermo estudió ingeniería forestal en Instituto Tecnológico de Costa Rica y luego obtuvo una maestría en Geografía en la Universidad Estatal de San Francisco, California. Ha colaborado con el Centro de Investigaciones Geofísicas de la Universidad de Costa Rica con el análisis y visualización de modelos climáticos.
]]>Los mapas son excelentes herramientas para visualizar datos de una ciudad y compararlos entre zonas de la misma. Pero si además podemos graficar los edificios en tres dimensiones, la visualización resulta más impactante aún. En este tutorial contamos cómo realizamos el mapa que muestra los precios promedio del metro cuadrado en cada parcela de la ciudad de Buenos Aires (Argentina) y San Pablo (Brasil), con sus respectivos edificios en 3D.
En el caso de Buenos Aires, la información está en archivos distintos.
A partir del dataset de propiedades y el de parcelas, utilizando un spatial join de Qgis, se calcula el precio promedio del metro cuadrado que le corresponde a cada parcela. Este tutorial explica simplemente cómo hacerlo.
Luego unimos los datos de las parcelas con la altura de cada edificio.
Se hace una union de estos datasets por el campo que identifica a cada parcela, que incluye la “sección”, la “manzana” y la “parcela”, para así poder asociar cada parcela a su altura correspondiente.
En este punto transformamos el shapefile en un tileset vectorial que es un tipo información georeferenciada que usan múltiples tecnologías de mapas digitales para mostrar los datos.
Se denominan «tilesets» porque se trata de un malla de mosaicos que cubre la superficie deseada: cada mosaico tiene cierta información que va siendo dibujada a medida que navegamos por esa zona del mapa. Si no fuera por estos mosaicos sería muy lento mostrar toda la información que muestra el mapa.
Primero hay que convertir el shapefile producido en el primer punto en un GEOJSON (QGis=> guardar como => GeoJSON).
Usaremos el formato de tiles vectorial de Mapbox, mbtiles, ya que es ahí donde nosotros vamos a subir nuestro tileset. Para realizar la conversión de geojson a mbtiles usaremos el programa tippecanoe (https://github.com/mapbox/tippecanoe):
tippecanoe -o 3d_map_tileset.mbtiles -z 17 -Z 12 3d_map_tileset.geojson
Los parámetros z y Z son importantes, porque los tilesets se construyen por nivel de zoom. Cuanto más grande es el rango de zooms para el que se construye el tileset, más pesado es.
Una vez generado el archivo, hay que subirlo a Mapbox Studio, en la sección datasets.
Vamos a necesitar programar un poco de javascript para poder mostrar la capa. De hecho, hay que hacer una aplicación en javascript que nos permita cargar un baselayer y el tileset en cuestión. Para eso vamos a usar Mapbox GL JS (https://github.com/mapbox/mapbox-gl-js). La documentación sobre la API se encuentra en https://www.mapbox.com/mapbox-gl-js/api/.
Supongamos que vamos a hacer todo en un archivo llamado “our_map.html”. Los pasos a seguir serían:
1. Crear el esqueleto de html:
<html>
<body
<!– mapbox gl js –>
<script src=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.js’></script>
<link href=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.css’ rel=’stylesheet’ />
<script>
// Here we are going to put our map code
</script>
</body>
</html>
Tenemos que realizar las siguientes tareas dentro del bloque <script>
var center = [-58.388875,-34.612427];
mapboxgl.accessToken = ‘YOUR ACCESS TOKEN’;
var map = new mapboxgl.Map({
container: ‘map’,
style: ‘mapbox://styles/YOUTUSER/YOUR_BASE_STYLE’,
center: center,
zoom: 13.5,
pitch: 59.5,
bearing: 0
});
map.on(‘style.load’, function () {
map.addSource(‘buildings’,
{«type»: «vector»,
«url»: «THE TILESET URL»
});
map.addLayer({
‘id’: ‘buildings’,
‘interactive’: true,
‘type’: ‘fill-extrusion’,
‘source’: ‘buildings’,
‘source-layer’: ‘super_new_join_finalgeojson’,
‘paint’: {
‘fill-extrusion-height’: {
‘property’: ‘altura’,
‘stops’: [
[{zoom: 13, value: 0}, 0],
[{zoom: 13.5, value: 1000}, 0],
[{zoom: 17.5, value: 0}, 0],
[{zoom: 17.5, value: 1000}, 1000]
]
},
‘fill-extrusion-color’: {
‘property’: ‘precio’,
‘stops’: [
[0, ‘#e6e6e6’],
[700, ‘#ffffb2’],
[1754, ‘#fecc5c’],
[2233, ‘#fd8d3c’],
[2751, ‘#f03b20’],
[3683, ‘#bd0026’]
]
},
‘fill-extrusion-opacity’: 0.9
}
}, ‘road_major_label’);
});
‘fill-extrusion-height’: {
‘property’: ‘altura’,
…
}
Aquí estamos diciendo “tomar las alturas de los edificios del campo ‘altura’”.
Y
fill-extrusion-color: style: {
‘property’: ‘precio’,
‘stops’: [
[0, ‘#e6e6e6’],
[700, ‘#ffffb2’],
[1754, ‘#fecc5c’],
[2233, ‘#fd8d3c’],
[2751, ‘#f03b20’],
[3683, ‘#bd0026’]
]
}
Aquí estamos diciendo “pintar usando los valores del campo ‘precio’ y usar los rangos para diferenciar los colores”, si no hay valor, usar ‘#e6e6e6’, si el valor está entre 0 y 700, usar ‘#ffffb2’, si el valor está entre 700 y 1754 usar ‘#fecc5c’, y así sucesivamente.
<html>
<body
<!– mapbox gl js –>
<script src=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.js’></script>
<link href=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.css’ rel=’stylesheet’ />
<div style=»padding:0; margin:0; width:100%; height:100%» id=»map»></div>
<script>
window.onload = function(){
var center = [-58.388875,-34.612427];
mapboxgl.accessToken = ‘YOUR ACCESS TOKEN’;
var map = new mapboxgl.Map({
container: ‘map’,
style: ‘mapbox://styles/YOUTUSER/YOUR_BASE_STYLE’,
center: center,
zoom: 13.5,
pitch: 59.5,
bearing: 0
});
map.on(‘style.load’, function () {
map.addSource(‘buildings’,
{«type»: «vector»,
«url»: «THE TILESET URL»
});
map.addLayer({
‘id’: ‘buildings’,
‘interactive’: true,
‘type’: ‘fill-extrusion’,
‘source’: ‘buildings’,
‘source-layer’: ‘super_new_join_finalgeojson’,
‘paint’: {
‘fill-extrusion-height’: {
‘property’: ‘altura’,
‘stops’: [
[{zoom: 13, value: 0}, 0],
[{zoom: 13.5, value: 1000}, 0],
[{zoom: 17.5, value: 0}, 0],
[{zoom: 17.5, value: 1000}, 1000]
]
},
‘fill-extrusion-color’: {
‘property’: ‘precio’,
‘stops’: [
[0, ‘#e6e6e6’],
[700, ‘#ffffb2’],
[1754, ‘#fecc5c’],
[2233, ‘#fd8d3c’],
[2751, ‘#f03b20’],
[3683, ‘#bd0026’]
]
},
‘fill-extrusion-opacity’: 0.9
}
}, ‘road_major_label’);
});
}
</script>
</body>
</html>
Ahora hay que servir el html desde un server. En nuestra máquina local podemos usar http-server . Una vez instalado, (se puede instalar con npm: npm install http-server), hay que correrlo en la misma carpeta donde tenemos nuestro html. Y después, en el browser, navegar a localhost:8080/our_map.html.
]]>Desde Bogotá D.C., Andrés Forero , especialista en GIS y datos geográficos, nos envía este post como una introducción a una serie tutorial sobre datos geográficos y cómo podemos aprovecharlos desde distintos softwares para su edición y publicación.
Bien sabemos la importancia de los datos en nuestra sociedad hoy en día; grandes empresas almacenan sobre una base de datos información que describe gustos, costumbres y actividades personales. Si tienes una sesión activa desde una cuenta Google o Microsoft y deseas buscar un vuelo que vaya desde Bogotá hasta Ciudad de México, es probable que aparezca en tu pantalla, minutos u horas después, promociones en diferentes aerolíneas para que salgas del país. Si abres Instagram y buscas como etiqueta #Tulúm o #Cartagena, el aplicativo probablemente te sugiera lugares para pasar vacaciones junto a la playa a través de un anuncio.
Los datos gubernamentales no son la excepción. Haz de cuenta que desde el momento en que empezaste a leer este artículo han robado a diez personas en tu ciudad. ¿Qué variables puedes analizar allí?
El mapa anterior muestra algunos delitos reportados en la ciudad de Cali, los cuales pueden ser consultados y descargados directamente desde el Portal de Datos Abiertos de Colombia.
Entender la información geográfica es una iniciativa que debe ir tomando forma y debe inculcarse desde a la sociedad civil hacia los tomadores de decisiones. Las oportunidades y debilidades que presenta un dato geográfico son las mismas que presenta esa tabla que necesitas para procesar en un software estadístico pero que es publicada como PDF.
Cuando pides un UBER, los puntos de partida y de llegada que estableces deben estar ligados a un sistema de coordenadas. La dirección que escribes debe estar estructurada y estandarizada para que pueda identificarse en el aplicativo.
I think my Uber driver is in trouble pic.twitter.com/GxIsapbzyO
— decent pigeon (@decentbirthday) July 25, 2017
Ahora, haz de cuenta que una persona llama a la policía para reportar el robo de sus pertenencias en Cali; conocer con exactitud el lugar donde sucedió el evento puede resultar en análisis espaciales robustos que permitan establecer la cobertura de patrullas de policía para atender áreas específicas o establecer programas que garanticen seguridad hacia la sociedad civil.
Hacer proyectos de este tipo no son para nada complejos, por el contrario, existen herramientas que facilitan el procesamiento de esta información ya sea desde software libre o software licenciado gratuito para desarrolladores y para usted, amigo datero. ¡Todos somos parte del cambio!
Aquí hay algunos recursos online para que puedas conocer las ventajas y desventajas asociadas con los Sistemas de Información Geográfica: QGIS como software libre brinda la posibilidad de utilizarlo gratuitamente desde cualquier computadora, aquí encuentras cómo puedes utilizarlo. Por otro lado, ArcGIS Online es una alternativa que permite realizar análisis en la nube únicamente creando una cuenta como desarrollador, la cual es gratuita. aquí encuentras cómo puedes utilizarlo.
Integrarlos puede ser útil. Por ejemplo, desde el escritorio puedo establecer cuáles son los campos que veré posteriormente sobre un mapa: ¿Necesito la fecha? ¿Necesito el nombre del delito? ¿Habrá que modificar la simbología? Estos procesamientos que pueden llegar a ser complejos para alguien quien inicia en el mundo SIG puede hacerlo desde QGIS. Teniendo establecido qué información quieres publicar, ArcGIS Online te permitirá visualizar este contenido desde la web y allí hacer análisis únicamente seleccionando qué deseas utilizar.
Imagen 1. Análisis en ArcGIS Online
Fuente: autoría propia.
Observemos este mapa
Agregando los delitos a la capa de comunas podemos establecer cuál de ellas presenta mayor criminalidad con un criterio de clasificación.
Este análisis es solo una introducción de qué se puede llegar a hacer y cómo podemos empezar a construir soluciones innovadoras bajo un contexto netamente espacial. Bienvenidos al infoactivismo geográfico.
]]>