Mapnik - Visualizador GIS para Python y C++
Mapnik es una librería que permite generar y manipular mapas obteniendo los datos de diferentes fuentes (archivos .shp, PostGIS, .tif). En esta receta se muestra como utilizar mapnik en Python.
Ingredientes
- mapnik (por ahora nos vale con el paquete debian)
- libmapnik0.5
- mapnik-plugins
- mapnik-utils
- python-mapnik
- postgis
- postgresql
- ogr2ogr (opcional)
Map
Mapnik permite crear y manejar mapas a partir de diferentes fuentes de datos. Esta librería se basa en el objeto Map que contiene varios atributos que permiten personalizarlo. Los atributos mas relevantes son:- background - Establece el color de fondo del mapa.
- height - Ancho del mapa.
- width - Alto del mapa.
- style - Define cómo se visualizan de los distintos componentes del mapa.
- layers - Capas que contiene el mapa. Es decir cada una de las fuentes de datos que queramos que muestre el mapa.
- pan - centra el mapa en la posicion indicada (x,y).
- pan_and_zoom - centra el mapa en la posicion indicada y hace zoom sobre ella.
- zoom_all - realiza el zoom a todas las capas, es decir, visualiza el mapa entero.
- zoom_to_box - realiza el zoom a todas las capas en un determinado area.
- envelope - obtiene el area de las capas del mapa.
- render_to_file(Map, archivoConExtension) - Renderiza el mapa a un archivo.
- render(Map, CairoContext) - Gracias a este método se puede integrar con GTK. No disponible via paquete debian, solo bajando el .tgz y compilando.
- save_map(Map, archivoConExtension) - Almacena el mapa en un archivo.
Style
Para visualizar el objeto Map se le debe asociar una serie de objetos Style que permiten definir como se debe representar cada elemento del mapa. Un Objeto Style se compone de reglas (Rules) para elementos del mapa, siendo posible definir filtros para cada una de dichas reglas. Por ejemplo podemos crear dos Rules en las que en una los puntos que cumplen una determinada condición se vean de color rojo mientras que los demás se vean de otro color. Para ello se debe asociar a la regla un objeto Filter que realize el filtrado deseado. Elementos del mapa:- PolygonSymbolizer - Establece el estilo de los poligonos.
- LineSymbolizer - Establece el estilo de las lineas.
- PointSymbolizer- Establece el estilo de los puntos.
- RasterSymbolizer - Permite que se visualizen las imagenes raster.
Layers
Hasta el momento puede obtener datos de diferentes fuentes, para ello se crean objetos Layer con la fuente de datos necesaria (datasource) a partir de varias clases.- Raster - Permite crear una layer a partir de imagenes (.tif). Puede ser util la herramienta ogr2ogr para convertir imagenes normales a imagenes con formato geográfico.
- Shapefile - Crea una layer a partir de un archivo .shp de descripción de figuras geométricas.
- PostGIS - Crea una layer a partir de la información de una tabla de una base de datos Postgres con campos PostGIS (geometry). Es posible realizar un pequeño filtrado de la tabla pero solo se puede trabajar con la tabla en cuestión nada de hacer joins ni comparaciones con campos de otras tablas.
- Gdal - Todavia no lo he probado :-)
Anexo - Crear una base de datos con soporte GIS
Referencias
[ show comments ]
blog comments powered by Disqus