Datos geograficos – datos para dibujar mapas – Geometria de mapas



Datos geograficos – datos para dibujar mapas – Geometria de mapas

0 1


mapas

presentación básica sobre mapas para datafest 2014 de La Nacion

On Github gabelula / mapas

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/

programadora de Open News en La Nacion gracias noah veltman, brian jacobs por la inspiración, andy tow por links vamos a hacer una charla basica sobre mapas

¿Qué son datos geograficos?

lista de datos con ubicación geografica

  • +1 - resultados de elecciones, como se voto en tu escuela?
  • +1 - por donde hay contaminación, por ejemplo "contaminación en el riachuelo" http://quepasariachuelo.org.ar/
  • -1 -
Dirección, que ubique donde esta sucediendo algo, datos que se puedan dibujar para delimitar un territorio No todos los datos geograficos deberian ser visualizados en mapas. Aveces hay datos que al visualizarlos en un mapa pueden llevar a confundir en vez de aclarar y que realmente requieren otro tipo de visualización. Cuando no usar un mapa para visualizar datos geograficos: 1. cuando los patrones interesantes no son geograficos 2. cuando los datos geograficos son mas efectivos para analizar

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

Muchos de los datos que encuentren estaran basados en coordenadas latitud/longitud de la superficie de la Tierra. Un capitan de la mar podria escribir latitud y longitud en grados, minutos y segundos como: 37°46'42"N, 122°23'22"W pero las comutadoras usan decimales nomas: 37.77833, -122.38944 Si tienes un par latitud/longitud y quieres saber rapidamente donde es puedes entrarlos en google earth u openstreetmap.org

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.

Los formatios más comunes de expresar datos geograficos, piensan en terminos de features. 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. La geometria de una feature consiste en una combinación de elementos geometricos como los anteriores. Por ejemplo, la geodata de un país puede consistir de alrededor de 200 features. Cada feature consiste de una lista de puntos para dibujar una linea alrededor del perimetro del país, es decir, un poligono. Las propiedades de un feature es todo lo demas que te interesa para mostrar en el mapa. Por ejemplo, para los paises del mundo seguramente te interese los nombres.

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 ... ```

En el mundo real la lista de latitud/longitud tienen que venir en un formato consistente que una computadora puede leer y que deseablemente sea entendible por humanos

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.

Más común para datos detallados de mapas.

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

El mapa es una serie de cuadrados (tiles) en el fondo que son sólo imagenes, por lo que se llaman mapas basados en "tiles". En cada nivel de zoom, todo el globo es dividido en una grilla gigante de cuadrados. En donde estes en el mapa, carga las imagenes para los cuadrados que estes mirando y comienza a cargar todos los cuadrados cercanos por si te moves. Cuando muevas el mapa, carga los nuevos que necesites.

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
Otra opcion es dibujar un mapa en una página web. Esto se hace usando SVG o el elemento 'canvas' de HTML5, que lo que hacen es dibujar un espacio en una página web y luego dibujar muchas lineas y formas basado en comandos. Este metodo usa pixeles en vez de latitud/longitud. El punto superior izquierdo es 0,0. Cualquier otro pixel es X,Y donde X es el numero de pixeles a la derecha de esa esquina e Y es el numero de pixeles abajo de la esquina.

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/