Python gis mapping

23
Python GIS/Mapping 09/06/2011 Oficinas O2C Madrid Python-Madrid

description

Charla de python-Madrid sobre GIS en las oficinas de O2C (Madrid) el 09/06/2011.

Transcript of Python gis mapping

Page 1: Python gis mapping

Python GIS/Mapping

09/06/2011

Oficinas O2C

Madrid

Python-Madrid

Page 2: Python gis mapping

Disclaimer

No me hago responsable de los datos erróneos contenidos en

esta presentación. Soy eterno aprendiz en muchas de estas

cosas.

Si ves que puedes aportar alguna mejora, deja un comentario

más abajo para así poder mejorar el documento. Gracias.

Page 3: Python gis mapping

Proyecciones y sistemas de

coordenadas

• La tierra no es plana, es tridimensional. La pantalla

de tu PC es plana, los planos son planos,…

Existe la necesidad de representar información

tridimensional en un plano ---> Distorsióntridimensional en un plano ---> Distorsión

Para resolver esto se usan proyecciones

Pero es imposible mantener distancias, áreas, formas y

direcciones todo a la vez. Por tanto, dependiendo de nuestro

problema una proyección será más apropiada que otra.

Page 4: Python gis mapping

Proyecciones y sistemas de

coordenadas

Page 5: Python gis mapping

Proyecciones y sistemas de

coordenadas

• Proyecciones– Las más extendidas son:

• Azimutal (ejemplos son la Ortográfica,

Estereográfica, Gnomonic, Azimutal

‘Equal Distant’ y Lambert Azimutal

‘Equal Area’)‘Equal Area’)

Page 6: Python gis mapping

Proyecciones y sistemas de

coordenadas

• Proyecciones– Las más extendidas son:

• Azimutal (ejemplos son la Ortográfica,

Estereográfica, Gnomonic, Azimutal

‘Equal Distant’ y Lambert Azimutal ‘Equal

Area’)Area’)

• Cónica (ejemplos son la Albers Equal

Area, Lambert Conformal, Cónica

Equidistante y la Cónica Policónica)

Page 7: Python gis mapping

Proyecciones y sistemas de

coordenadas

• Proyecciones– Las más extendidas son:

• Azimutal (ejemplos son la Ortográfica,

Estereográfica, Gnomonic, Azimutal

‘Equal Distant’ y Lambert Azimutal ‘Equal

Area’)Area’)

• Cónica (ejemplos son la Albers Equal

Area, Lambert Conformal, Cónica

Equidistante y la Cónica Policónica)

• Cilíndrica (ejemplos son la Mercator,

Transversal de Mercator, Oblicua de

Mercator, Cilindrica de Miller

(*) resumen interesante sobre proyecciones en:

http://erg.usgs.gov/isb/pubs/MapProjections/projections.pdf

Page 8: Python gis mapping

Proyecciones y sistemas de

coordenadas

• Datum y esferoide– Un datum es un modelo para representar las coordenadas de un punto

sobre la tierra (ejemplos son el NAD27, NAD83, WGS84, ED50,…)

Page 9: Python gis mapping

Proyecciones

• PyProj (wrapper para PROJ.4)

http://code.google.com/p/pyproj/

Sirve para hacer transformaciones de coordenadas

import pyprojimport pyproj

UTM_X = 565718.523517

UTM_Y = 3980998.9244

srcProj = pyproj.Proj(proj="utm", zone="11",

ellps="clrk66", units="m")

dstProj = pyproj.Proj(proj='longlat', ellps='WGS84',

datum='WGS84')

long,lat = pyproj.transform(srcProj, dstProj, UTM_X, UTM_Y)

print "UTM zone 17 coordinate (%0.4f, %0.4f) = %0.4f, %0.4f" %

(UTM_X, UTM_Y, lat, long)

Page 10: Python gis mapping

IO ficheros Raster y vectoriales

• OGR y sus python bindings: sirve para trabajar

(leer y escribir) con ficheros con información

vectorial http://www.gdal.org/ogr/index.html

• GDAL y sus python bindings: sirve para • GDAL y sus python bindings: sirve para

trabajar (leer y escribir) con ficheros con

información raster (http://www.gdal.org/)

• http://pypi.python.org/pypi/GDAL/1.7.1 (OGR

viene con GDAL)

Page 11: Python gis mapping

Vectoriales

• Shapefile : Tres ficheros

– shp – contiene las características espaciales,

– dbf – contiene los atributos,

– shx – índice que permite acceso aleatorio a las

características del shp)características del shp)

– Puede haber otros ficheros (sbx, sbn, qix, prj)

import osgeo.ogr

shapefile = osgeo.ogr.Open(“Fichero.shp")

layer = shapefile.GetLayer(0)

feature = layer.GetFeature(0)

attributes = feature.items()

http://openlayers.org/dev/examples/draw-feature.html

Page 12: Python gis mapping

Vectoriales

• Shapely (wrapper a GEOS)

-Sirve para trabajar con

geometrías 2D

http://trac.gispython.org/lab/wiki/Shapely

Page 13: Python gis mapping

Raster

• http://trac.osgeo.org/geotiff/ (puede llevar

asociado un fichero *.tfw)

• JPG (lleva asociado un fichero *.jgw)

• PNG (lleva asociado un fichero *.pgw)• PNG (lleva asociado un fichero *.pgw)

Los ficheros asociados se les conoce como ‘world file’ y llevan

info de las unidades del mapa por pixel y la posición de la

esquina superior izquierda (sistema de coordenadas,

proyección,…). http://en.wikipedia.org/wiki/World_file

Page 14: Python gis mapping

Visualización

• Matplotlib u otros (http://python.majibu.org/preguntas/713/que-

me-aconsejais-para-realizar-graficos-desde-tablas?page=1#721)

• Mapnik (C++/python)

http://mapnik.org/faq/http://mapnik.org/faq/

Page 15: Python gis mapping

BBDD ‘espaciales’

• Para qué son útiles…

– E.g., ‘dame todos los bares que están en un radio

de 10km de mi casa y que sirvan tapa y las

cervezas sean baratas’.cervezas sean baratas’.

– Y para cosas ¿más serias?

Es decir, están especialmente preparadas para cosas

relacionadas con peticiones espaciales,

transformaciones de coordenadas ‘al vuelo’,…

Page 16: Python gis mapping

BBDD ‘espaciales’

• MySQL (tiene capacidades espaciales de serie)

• PostGIS (es una extensión a PostgreSQL)

http://postgis.refractions.net/

• SpatiaLite (es una extensión a SQLite)• SpatiaLite (es una extensión a SQLite)

http://gaia-gis.it/spatialite/

• Oracle Spatial (extensiónde Oracle)

• MS SQL Server

Page 17: Python gis mapping

Web Frameworks / Web Services

• A grandes rasgos lo que se pretende es una

aplicación web haciendo algo como esto:

Page 18: Python gis mapping

Mash-Up Geoespacial

• Un ‘Mash-Up’ es una aplicación que combina

datos y funcionalidades provenientes de

varias fuentes.

Muy popular es usar googlemaps pero no es la Muy popular es usar googlemaps pero no es la

única que se puede usar. Hay alternativas

FOSS como openlayers (javascript), mapnik

(python/C++), MapServer

Page 19: Python gis mapping

Web Frameworks / Web Services

• WMS (Web Map Services)

• WFS (Web Feature Services)

• TMS (Tile Map Service)

– http://tilecache.org/

– http://wiki.openstreetmap.org/wiki/Mod_tile

– https://bitbucket.org/springmeyer/tilelite/wiki/Ho

me

Page 20: Python gis mapping

Web Frameworks / Web Services

• Librerias UI

– OpenLayers

http://openlayers.org/

- Mapiator

http://pdietrich.github.com/mapiator/

Page 21: Python gis mapping

Web Frameworks / Web Services

• Django + GeoDjango

https://www.djangoproject.com/

http://geodjango.org/

• Pylons (Pyramid) + MapFish• Pylons (Pyramid) + MapFish

http://pylonsproject.org/

http://mapfish.org/

• TurboGears + tgext.geo

http://turbogears.org/

http://turbogears.org/2.1/docs/main/Extensions/Geo/index.html

Page 22: Python gis mapping

Referencias

• http://gispython.org/

• http://www.gis.usu.edu/~chrisg/python/2009/

• http://www.slideshare.net/kikocorreoso/python-gis-mapping (Recursión)

• https://www.packtpub.com/python-geospatial-development/book

Page 23: Python gis mapping

Agradecimientos

• Gracias a O2C por ceder sus oficinas para

estas charlas de:

Python-Madrid