Download - Python gis mapping
Python GIS/Mapping
09/06/2011
Oficinas O2C
Madrid
Python-Madrid
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.
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.
Proyecciones y sistemas de
coordenadas
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’)
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)
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
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,…)
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)
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)
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
Vectoriales
• Shapely (wrapper a GEOS)
-Sirve para trabajar con
geometrías 2D
http://trac.gispython.org/lab/wiki/Shapely
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
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/
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’,…
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
Web Frameworks / Web Services
• A grandes rasgos lo que se pretende es una
aplicación web haciendo algo como esto:
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
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
Web Frameworks / Web Services
• Librerias UI
– OpenLayers
http://openlayers.org/
- Mapiator
http://pdietrich.github.com/mapiator/
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
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
Agradecimientos
• Gracias a O2C por ceder sus oficinas para
estas charlas de:
Python-Madrid