Datos geograficos

datos para dibujar mapas

Por Gabriela Rodríguez / @gaba

Knight-Mozilla Open News Fellow at La Nacion, Argentina

Presentación en http://gabelula.github.io/mapas/

¿Qué son datos geograficos?

lista de datos con ubicación geografica

Mapas

Los mapas consisten de datos geograficos y un sistema para representarlos visualmente.

Latitud y Longitud

Latitudes van de -90 (polo sur) a 90 (polo norte), con 0 en el ecuador.

Longitudes van de -180 (la mitad del camino yendo del primer meridiano al oeste) a 180 (la mitad del camino yendo del primer meridiano al este)

Buenos Aires está en -34.6158527,-58.4332985

Geometria de mapas

todo lo que representes en un mapa es un conjunto de puntos latitud/longitud.

Cualquier espacio geografico se puede expresar como una secuencia de pares latitud/longitud.

Un lugar

un punto en el mapa es un sólo par latitud/longitud

Una linea recta

Es un par de puntos latitud/longitud, uno para el inicio y otro para el final.

Una secuencia de lineas

aveces llamada polyline, es una lista de lineas rectas en orden (una lista de pares de puntos latitud/longitud).

Una región cerrada

llamada polygono, es un tipo especia de polyline que termina donde empezo.

Feature

Una feature puede ser cualquier cosa que exista en un lugar fisico fijo (una casa, un pais, ciudad, calle, semaforo, lago, etc). Una feature tiene geometria y propiedades.

Formatos de geodatos

un archivo de datos geograficos es una lista de features, y cada feature es una lista de piezas geometricas, y cada pieza geometrica es una lista de latitud/longitud

``` Feature #1: geometry: polygon #1: [list of lat/lngs] polygon #2: [list of lat/lngs] (for Easter Island) ... properties: name: Chile capital: Santiago ... Feature #2: geometry: polygon #1: [list of lat/lngs] polygon #2: [list of lat/lngs] ... properties: name: Argentina capital: Buenos Aires ... ```

Shapefile

Un "shapefile" es un conjunto de archivos:

  • .shp - la geometria de todas las features
  • .shx - un archivo de ayuda que guarda el orden en que los shapes estaran
  • .dbf - guarda las propiedades de cada features en una planilla
  • .prj - descripción de proyecto

Es un buen formato para manipulación e inspección de datos de mapas. No es muy bueno para hacer mapas en la web pero hay herramientas para convertirlos a otros formatos.

GeoJSON

JSON es un formato ligero para intercambio de datos en la web. GeoJSON es el mismo formato para mapas en la web. También es entendible por humanos y se puede abrir y editar en cualquier editor de textos.

GeoJSON para el perimetro de Uruguay

``` { "type":"Feature", "geometry":{ "type":"Polygon", "coordinates":[ [ [-57.62513342958296,-30.21629485445426], [-56.976025763564735,-30.109686374636127], [-55.97324459494094,-30.883075860316303], [-55.601510179249345,-30.853878676071393], [-54.57245154480512,-31.494511407193748], [-53.78795162618219,-32.047242526987624], [-53.209588995971544,-32.727666110974724], [-53.6505439927181,-33.20200408298183], [-53.373661668498244,-33.768377780900764], [-53.806425950726535,-34.39681487400223], [-54.93586605489773,-34.952646579733624], [-55.67408972840329,-34.75265878676407], [-56.21529700379607,-34.85983570733742], [-57.1396850246331,-34.430456231424245], [-57.81786068381551,-34.4625472958775], [-58.42707414410439,-33.909454441057576], [-58.349611172098875,-33.26318897881541], [-58.13264767112145,-33.040566908502015], [-58.14244035504076,-32.044503676076154], [-57.87493730328188,-31.016556084926208], [-57.62513342958296,-30.21629485445426] ] ] }, "properties":{ "name": "Uruguay", "capital": "Montevideo" }, } ``` Esto significa dibujar un poligono empezando en [-57.62513342958296,-30.21629485445426] y terminando en ese mismo punto.

Otros formatos

  • KML: Es un XML especifico para datos geograficos. Es usado por Google Maps, Google Earth, Google Fusion Tables.
  • TopoJSON: similar a GeoKSON pero reducido para ocupar menos espacio.

¿Catalogos que tengan geodatos?

Natural Earth

http://www.naturalearthdata.com/

Tiene descargas de diferentes conjuntos de datos para toda la Tierra: Culturales (fronteras de paises, provincias, calles, rutas, ciudades, aeropuertos, parques, etc) y Fisicos (costas, islaes, rios, lagos, etc).

Sistema Estadístico Nacional Argentino

http://www.indec.gov.ar/codgeo.asp

Tiene descargas de todo el pais, provincias, departamentos y puntos de localidades en formato shapefile. Hay que registrarse (gratuito y sólo un correo de confirmación) para poder descargar archivos.

Geocommons

http://geocommons.com/

Conjuntos de geodatos generados por usuarios, fáciles de buscar, navegar y pre-visualizar.

Wikimedia Commons

http://commons.wikimedia.org/wiki/Category:Maps

Muchos mapas en formato SVG, que puede ser modificado para la web.

OpenStreetMap

http://www.openstreetmap.org/

La mejor base de datos de fronteras, rutas y lugares para toda la Tierra. Esta disponible en un formato especial XML y tiene que ser convertido para que pueda ser utilizado por la mayoria del software disponible.

Cartografía Censal

http://www.buenosaires.gob.ar/

Archivos en formato shapefile de comunas, vias de tren, autopistas,barrios, calles, etc de la provincia de Buenos Aires.

Cartografía digital de la provincia de Buenos Aires

http://www.ec.gba.gov.ar/estadistica/censo2010/cartografia.html

Para descargar en formato shapefile los conjuntos de datos que fueron utilizados en el Censo Nacional de Población, Hogares y Viviendas 2010 en la provincia de Buenos Aires.

Software para convertir y trabajar con geodatos

Convertidor ogr2ogr

http://ogre.adc4gis.com/

Puede convertir entre varios formatos, entre ellos shapefile y GeoJSON.

Quantum GIS Software de Escritorio

http://www.qgis.org/

Muy bueno para trabajar con archivos de formato shapefiles. Muy sencillo para visualizar rapidamente conjuntos de datos.Es gratuito y muy potente.

De GeoDatos a Mapas en la Web

¿Tiene que ser tu mapa interactivo?

  • "Slippy maps" o mapas deslizables
  • Javascript + SVG/Canvas
  • Con servicios en la web que crea los mapas por vos

Mapas Deslizables

Ventajas

de mapas deslizables

  • Los navegadores más usados los soportan. Son livianos para que puedan ser cargados con poco ancho de banda.
  • La gente se ha acostumbrado a ellos.
  • Facilmente se pueden hacer 'responsive' a tamaño de pantalla.
  • Tiene las propiedades más importantes de mapas, como zooming, panning y la posiblidad de agregar markers.

Desventajas

de mapas deslizables

  • Puede ser complicado generar tus propias tiles, necesitando datos, estilos y un poco de conocimiento tecnico.
  • Aún si re-usas tiles de un mapa viejo, o de alguien m´s, puedes sacrficiar control visual.
  • Tiles basadas en imagenes no estan buenas para hacer cosas dinamicas.
  • Por lo general estas restringido a la proyección de mapas Mercator y a su compartimiento de zooming

¿Cuando usarlos?

  • Cuando compatibilidad con diferentes versiones de navegador y performance son importantes.
  • Cuando necesitas desplegar y explorar un area bastante grande a diferentes niveles de zoom.
  • No necesitas control visual sobre todo.
  • No necesitamos que todos los componentes del mapa sean dinamicos o interactivos.

¿Como hacer un mapa?

Para usar datos geograficos para hacer uno de estos mapas deslizantes, necesitamos en realidad hacer dos mapas:

  • Los tiles del fondo - Tienes que importar un conjunto de datos que diga donde la tierra está, donde las calles estan, donde los puntos de interes estan, etc en un software que pueda recibirlos y generar imagenes a partir de estas.
  • Otro contenido - Una vez que tengas los tiles, puedes usar geodatos para agregar cosas sobre esto como marcas y lineas.

Leaflet

Una de las librerias para hacer estos mapas es Leaflet. Tienes que escribir un poco de JavaScript: http://leafletjs.com/

Asi se dibuja Uruguay en Leaflet: map.addLayer(new L.polygon([ [-30.21629485445426, -57.62513342958296], [-30.109686374636127, -56.976025763564735,], [-30.883075860316303, -55.97324459494094], [-30.853878676071393, -55.601510179249345], [-31.494511407193748, -54.57245154480512], [-32.047242526987624, -53.78795162618219], [-32.727666110974724, -53.209588995971544], [-33.20200408298183, -53.6505439927181], [-33.768377780900764, -53.373661668498244], [-34.39681487400223, -53.806425950726535], [-34.952646579733624, -54.93586605489773], [-34.75265878676407, -55.67408972840329], [-34.85983570733742, -56.21529700379607], [-34.430456231424245, -57.1396850246331], [-34.4625472958775, -57.81786068381551], [-33.909454441057576, -58.42707414410439], [-33.26318897881541, -58.349611172098875], [-33.040566908502015, -58.13264767112145], [-32.044503676076154, -58.14244035504076], [-31.016556084926208, -57.87493730328188], [-30.21629485445426, -57.62513342958296] ]));

Leaflet

Uruguay dibujado con Leaflet

JavaScript + SVG/Canvas

  • dibuja un mapa en una página web
  • se usa SVG o el elemento canvas de HTML5
  • dibujan espacio en página web y luego dibujan lineas
  • usa pixeles y no latitud/longitud

JavaScript + SVG/Canvas

¿Con que lo puedo hacer?

El metodo más popular es usar una liberria de JavaScript llamada d3: http://d3js.org/. Otra opción es usar Kartograph.js: http://kartograph.org/

Con servicios en la web que crea los mapas por vos

Google Maps

https://mapsengine.google.com/

å

Google Fusion Tables

http://table.googlelabs.com

CartoDB

http://cartodb.com

BatchGeo

http://batchgeo.com/

¡Gracias!

por Gabriela Rodríguez / @gaba

Agradecimientos: Andy Tow (por enlaces a conjuntos de datos en Argentina) y Noah Veltman(por sus notas en mapas para periodistas), Brian Jacobs (por la inspiración).

Presentación en http://gabelula.github.io/mapas/