Geocamp 2013 - Geoprocesamiento con GDAL y PostGIS Raster
1. GEOPROCESAMIENTO CON
GDAL
Y POSTGIS RASTER
Jorge Arévalo
http://about.me/jorgeas80
GDAL committer
PostGIS committer
¿Quién soy?
martes 25 de junio de 2013
2. ¿Qué es GDAL?
• Librería Open Source + utilidades de línea de comandos
• Manipulación de datos tanto en formato raster como vectorial
• Abstracción cara a aplicaciones, para poder trabajar con cualquier
formato soportado de manera transparente
• Multiplataforma: Linux - Windows - Mac
• Creada por Frank Warmerdam
martes 25 de junio de 2013
3. ¿Para qué se usa?
• Principalmente, para convertir entre formatos
• También para reproyectar capas raster/vector
• ... pero tiene MUCHOS más usos
martes 25 de junio de 2013
10. gdal_translate: reducir
resolución
Resolución al 10% de la original
gdal_translate
-outsize 10% 10%
-a_srs epsg:25829
PNOA_MR_OF_ETRS89_HU29_h50_0223.ecw
PNOA_MR_OF_ETRS89_HU29_h50_0223_red.tif
martes 25 de junio de 2013
11. gdalwarp: remuestrear
gdalwarp
-ts 22136, 14968
-r cubicspline
PNOA_MR_OF_ETRS89_HU29_h50_0223_red.tif
PNOA_MR_OF_ETRS89_HU29_h50_0223_2x.tif
Especificamos el tamaño
deseado y el algoritmo de
remuestreo a utilizar
martes 25 de junio de 2013
18. ¿Qué tal las dos cosas?
gdal_rasterize
Monte de O
Castro
martes 25 de junio de 2013
19. ¿Y PostGIS Raster?
¡Nueva versión! Buen rendimiento en visualización (QGIS, Mapserver)
Desde
2013-06-19
https://github.com/jorgeas80/gdal_postgis_raster_driver.git
martes 25 de junio de 2013
20. GDAL + PostGIS Raster
Cargamos en PostGIS el SHP generado a partir del DEM
Cargamos en PostGIS Raster el TIFF generado a partir del DEM
shp2pgsql -s epsg:25829 -I dem_vigo.shp > dem_vigo.sql
psql -d geocamp -f dem_vigo.sql
raster2pgsql -s epsg:25829 -I -M -C -t 50x50 hillshade_vigo.tiff > hillshade_vigo.sql
psql -d geocamp -f dem_vigo.sql
martes 25 de junio de 2013
21. GDAL + PostGIS Raster
Obtenemos la intersección de ambas capas únicamente en los puntos en los que
la altitud es mayor a 600 m
create table hillshade_up_from_600 as
select
st_clip(rast, geom) as rast
from
hillshade_vigo, dem_vigo
where
st_intersects(rast, geom) and
elev > 600
alter table hillshade_up_from_600
add column rid bigserial primary key;
select addrasterconstraints('hillshade_up_from_600', 'rast')
gdal_translate PG:"dbname=geocamp
table=hillshade_up_from_600 mode=2"
hillshade_up_from_600.tif
martes 25 de junio de 2013
23. Quiz #3
¿En qué orden muestra GDAL los drivers
disponibles?
martes 25 de junio de 2013
24. Quiz #3
a) Orden alfabético
b) Como les da la gana a los desarrolladores
c) Primero los compilados de manera interna y luego los
enlazados externamente
martes 25 de junio de 2013
25. OGR: Geocoding
http://erouault.blogspot.fr/2012/12/a-geocoding-client-api-in-gdalogr.html
/* Create a session with default options */
OGRGeocodingSessionH hSession = OGRGeocodeCreateSession(NULL);
/* Now query the service */
OGRLayerH hLayer = OGRGeocode(hSession, "Paris", NULL, NULL);
/* Use the result layer (the first feature is generally the most relevant) */
/* Cleanup */
OGRGeocodeFreeResult(hLayer);
OGRGeocodeDestroySession(hSession);
SELECT ST_Centroid(ogr_geocode('Paris'))
returns:
OGRFeature(SELECT):0
POINT (2.342878767069653 48.85661793020374)
En C En SQL
Más info
martes 25 de junio de 2013
26. Más funcionalidades sexy de OGR
http://trac.osgeo.org/gdal/wiki/rfc39_ogr_layer_algebra
http://gdal.org/ogr/ogr_sql_sqlite.html
OGR álgebra
SQL sobre capas no SQL
(soporta dialecto SQLite)
martes 25 de junio de 2013
27. Enlaces útiles
• http://www.gdal.org/
• http://trac.osgeo.org/gdal/
• http://home.gdal.org/~warmerda/
• http://erouault.blogspot.fr/
• http://trac.osgeo.org/postgis/wiki/WKTRaster
• http://trac.osgeo.org/gdal/wiki/frmts_wtkraster.html
martes 25 de junio de 2013
28. Créditos
• Roger Andre (http://download.osgeo.org/gdal/presentations/
OpenSource_Weds_Andre_CUGOS.pdf)
• Even Rouault (http://even.rouault.free.fr/)
martes 25 de junio de 2013