../../_images/logo_gdal.png ../../_images/OSGeo_project.png

Inicio Rápido GDAL/OGR

Esta Guía de Inicio Rápido se divide en dos partes: GDAL (datos ráster) y OGR (datos vectoriales).

Esta Guía de Inicio Rápido describe cómo:

GDAL
  • Explore sus datos de imagen con gdalinfo

  • Formatee las traducciones con gdal_translate

  • Reproyecta tus datos con gdalwarp

  • Mosaico de tus datos con gdal_warp or gdal_merge.py

  • Construya un shapefile como un tileindex raster con gdaltindex

OGR
  • obtener información sobre sus datos con ogrinfo

  • use ogr2ogr para transformar sus datos a otros formatos

Lo único que se necesita este Inicio Rápido es una terminal. Si desea visualizar los resultados, puede utilizar una de las aplicaciones de Software GIS de Escritorio en OSGeoLive como QGIS.

Conozca GDAL

Encontrará los datos de la demo en /usr/local/share/data. Queremos echar un vistazo a Natural Earth data en este inicio rápido. Queremos trabajar con una copia de los datos. Así que el primer paso es copiar los datos en su directorio home.

cd /home/user
cp -R /usr/local/share/data/natural_earth2/ ./gdal_natural_earth

Entonces encontrará un archivo ráster de NaturalEarth y un .tfw World-file at:

ls /home/user/gdal_natural_earth/HYP_50M_SR_W.*

Truco

Abra el archivo con un SIG de Escritorio como QGIS y eche un vistazo.

Obtenga información acerca de los datos ráster con gdalinfo

gdalinfo HYP_50M_SR_W.tif
  Driver: GTiff/GeoTIFF
  Files: HYP_50M_SR_W.tif
         HYP_50M_SR_W.tfw
  Size is 10800, 5400
  Coordinate System is `'
  Origin = (-179.999999999999972,90.000000000000000)
  Pixel Size = (0.033333333333330,-0.033333333333330)
  Metadata:
    TIFFTAG_SOFTWARE=Adobe Photoshop CS3 Macintosh
    TIFFTAG_DATETIME=2009:09:19 10:13:17
    TIFFTAG_XRESOLUTION=342.85699
    TIFFTAG_YRESOLUTION=342.85699
    TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
  Image Structure Metadata:
    INTERLEAVE=PIXEL
  Corner Coordinates:
  Upper Left  (-180.0000000,  90.0000000)
  Lower Left  (-180.0000000, -90.0000000)
  Upper Right ( 180.0000000,  90.0000000)
  Lower Right ( 180.0000000, -90.0000000)
  Center      (  -0.0000000,   0.0000000)
  Band 1 Block=10800x1 Type=Byte, ColorInterp=Red
  Band 2 Block=10800x1 Type=Byte, ColorInterp=Green
  Band 3 Block=10800x1 Type=Byte, ColorInterp=Blue
Nota:
  • El operador es «GTiff/GeoTIFF»

  • El tamaño es 10800x5400

  • 3 Bandas de tipo Byte.

  • Coordenadas

  • sin sistema de coordenadas

Traducción de formato simple

Primero Conozca a sus conductores.El modificador de línea de comando –formats de gdal_translate se puede usar para ver una lista de controladores de formato disponibles.

Cada formato informa si es
  • Sólo lectura (ro),

  • Lectura/escritura (rw) o

  • leer/escribir/actualizar(rw+).

gdal_translate --formats

El modificador de línea de comando –format se puede usar para consultar detalles sobre un controlador en particular, incluidas las opciones de creación y los tipos de datos permitidos.

gdalinfo --format jpeg
gdal_translate --format png

Traducción

Las traducciones se logran con el comando gdal_translate. El formato de salida predeterminado es GeoTIFF. La bandera -of se utiliza para seleccionar un formato de salida y la bandera -co se utiliza para especificar una opción de creación:

gdal_translate -of JPEG -co QUALITY=40 HYP_50M_SR_W.tif HYP_50M_SR_W.jpg

El interruptor -ot puede usarse para modificar el tipo de datos de salida.

gdal_translate -ot Int16 HYP_50M_SR_W.tif HYP_50M_SR_W_Int16.tif

Uso gdalinfo para verificar el tipo de datos.

Reescalando

El interruptor -outsize puede usarse para definir el tamaño del archivo de salida.

gdal_translate -outsize 50% 50% HYP_50M_SR_W.tif  HYP_50M_SR_W_small.tif

Usa gdalinfo para verificar el tamaño.

El interruptor -scale puede usarse para cambiar la escala de datos. Control explícito de las gamas de entrada y salidas también está disponible. El interruptor de gdalinfo -mm se puede usar para ver los valores mínimos/máximos de píxeles.

Vamos a dividir nuestra imagen en dos con -srcwin que hace una copia basada en pixel/línea localización (xoff yoff xsize ysize). También se puede usar -projwin y definir los ángulos en coordenadas georeferenciadas (ulx uly lrx lry).

gdalinfo -mm HYP_50M_SR_W.tif
gdal_translate -srcwin 0 0 5400 5400 HYP_50M_SR_W.tif  west.tif
gdal_translate -srcwin 5400 0 5400 5400 HYP_50M_SR_W.tif  east.tif

Ráster tileindex con gdaltindex

Puede crear un shapefile como un ráster tileindex. Cada imagen se genera un polígono con los límites de la extensión del polígono y la ruta de acceso al archivo.

gdaltindex index_natural_earth.shp *st.tif

Echa un vistazo a su salida shapefile con QGIS y ogrinfo (usted aprenderá más sobre ogrinfo más adelante en este tutorial)

../../_images/gdal_gdaltindex.png
ogrinfo index_natural_earth.shp index_natural_earth
INFO: Open of `index_natural_earth.shp'
    using driver `ESRI Shapefile' successful.

Layer name: index_natural_earth
Geometry: Polygon
Feature Count: 2
Extent: (-180.000000, -90.000000) - (180.000000, 90.000000)
Layer SRS WKT: (unknown)
location: String (255.0)
OGRFeature(index_natural_earth):0
  location (String) = east.tif
  POLYGON ((-0.00000000001796 90.0,179.999999999964047 90.0,179.999999999964047 -89.999999999982009,-0.00000000001796 -89.999999999982009,-0.00000000001796 90.0))

OGRFeature(index_natural_earth):1
  location (String) = west.tif
  POLYGON ((-179.999999999999972 90.0,-0.00000000001796 90.0,-0.00000000001796 -89.999999999982009,-179.999999999999972 -89.999999999982009,-179.999999999999972 90.0))

Reproyectando

Para este proceso asumimos que HYP_50M_SR_W.tif se ha creado correctamente con límites. Como vimos antes con gdainfo ningún sistema de coordenadas fue configurado. Por lo tanto asignamos WGS84 como sistema de coordenadas de la imagen en el primer paso.

gdal_translate -a_srs WGS84 HYP_50M_SR_W.tif HYP_50M_SR_W_4326.tif

The gdalwarp command can be used to reproject images. Here we reproject the WGS84 geographic image to the Mercator projection:

gdalwarp -t_srs '+proj=merc +datum=WGS84' HYP_50M_SR_W_4326.tif mercator.tif

Usa gdalinfo para verificar el cambio y echarle un vistazo a la imagen.

../../_images/gdal_mercator.png

Aquí reproyectamos a la proyección Ortho.

gdalwarp -t_srs '+proj=ortho +datum=WGS84' HYP_50M_SR_W_4326.tif ortho.tif
../../_images/gdal_ortho.png

¿Nota cómo se recortan los polos? Esto es porque los bordes en el polo no pueden ser reproyectados, gdalwarp no lee todos los datos. Podemos forzar gdalwarp para leer un montón de datos excedentes en trozos como una manera de resolver esto. Lea más sobre esto en el RasterTutorial de https://trac.osgeo.org/gdal/wiki/UserDocs/RasterProcTutorial.

Mosaico

gdal_merge.py es un script en python que se puede utilizar para tareas sencillas de mosaico. Mosaico de east.tif y west.tif en un solo archivo:

gdal_merge.py  east.tif west.tif -o merged.tif

La misma tarea puede realizarse con gdalwarp. gdalwarp tiene una variedad de ventajas sobre gdal_merge, pero puede ser lento para fusionar varios archivos:

gdalwarp east.tif west.tif warpmerged.tif

Conozca OGR

cd /home/user/gdal_natural_earth/

Truco

Abra el shape file con un SIG de Escritorio como QGIS y eche un vistazo.

Obtener información acerca de los datos de vector con ogrinfo

ogrinfo -ro /home/user/gdal_natural_earth
INFO: Open of `/home/user/gdal_natural_earth'
      using driver `ESRI Shapefile' successful.
  1: ne_10m_populated_places (3D Point)
  2: ne_10m_geography_regions_polys (3D Polygon)
  3: ne_10m_admin_1_states_provinces_shp (3D Polygon)
  4: ne_10m_urban_areas (3D Polygon)
  5: ne_10m_geography_marine_polys (3D Polygon)
  6: ne_10m_land (3D Polygon)
  7: ne_10m_geography_regions_elevation_points (3D Point)
  8: ne_10m_admin_0_countries (3D Polygon)
  9: ne_10m_rivers_lake_centerlines (3D Line String)
  10: ne_10m_lakes (3D Polygon)
  11: ne_10m_geography_regions_points (3D Point)
  12: ne_10m_ocean (3D Polygon)

Obtenga un resumen de sus datos con ogrinfo junto con -so.

ogrinfo -ro -so ne_10m_admin_0_countries.shp ne_10m_admin_0_countries
INFO: Open of `ne_10m_admin_0_countries.shp'
      using driver `ESRI Shapefile' successful.

Layer name: ne_10m_admin_0_countries
Geometry: 3D Polygon
Feature Count: 254
Extent: (-180.000000, -90.000000) - (180.000000, 83.634101)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
    DATUM["WGS_1984",
        SPHEROID["WGS_84",6378137.0,298.257223563]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]]
scalerank: Integer (4.0)
featurecla: String (30.0)
labelrank: Real (16.6)
sovereignt: String (254.0)
sov_a3: String (254.0)
adm0_dif: Real (16.6)
level: Real (16.6)
type: String (254.0)
admin: String (254.0)
adm0_a3: String (254.0)
geou_dif: Real (16.6)
geounit: String (254.0)
gu_a3: String (254.0)
su_dif: Real (16.6)
subunit: String (254.0)
su_a3: String (254.0)
brk_diff: Real (16.6)
name: String (254.0)
name_long: String (254.0)
brk_a3: String (254.0)
brk_name: String (254.0)
brk_group: String (254.0)
abbrev: String (254.0)
postal: String (254.0)
formal_en: String (254.0)
formal_fr: String (254.0)
note_adm0: String (254.0)
note_brk: String (254.0)
name_sort: String (254.0)
name_alt: String (254.0)
mapcolor7: Real (16.6)
mapcolor8: Real (16.6)
mapcolor9: Real (16.6)
mapcolor13: Real (16.6)
pop_est: Real (16.6)
gdp_md_est: Real (16.6)
pop_year: Real (16.6)
lastcensus: Real (16.6)
gdp_year: Real (16.6)
economy: String (254.0)
income_grp: String (254.0)
wikipedia: Real (16.6)
fips_10: String (254.0)
iso_a2: String (254.0)
iso_a3: String (254.0)
iso_n3: String (254.0)
un_a3: String (254.0)
wb_a2: String (254.0)
wb_a3: String (254.0)
woe_id: Real (16.6)
adm0_a3_is: String (254.0)
adm0_a3_us: String (254.0)
adm0_a3_un: Real (16.6)
adm0_a3_wb: Real (16.6)
continent: String (254.0)
region_un: String (254.0)
subregion: String (254.0)
region_wb: String (254.0)
name_len: Real (16.6)
long_len: Real (16.6)
abbrev_len: Real (16.6)
tiny: Real (16.6)
homepart: Real (16.6)

Si ejecuta ogrinfo sin un parámetro obtendrá un resumen sobre los datos y luego una sección para cada conjunto de datos.

ogrinfo -ro ne_10m_admin_0_countries.shp ne_10m_admin_0_countries

Podrá enviar el resultado de ogrinfo a grep para filtrar y obtener solamente el atributo PAÍS.

ogrinfo ne_10m_admin_0_countries.shp ne_10m_admin_0_countries | grep 'admin '

  admin (String) = Aruba
  admin (String) = Afghanistan
  admin (String) = Angola
  admin (String) = Anguilla
  admin (String) = Albania
  admin (String) = Aland
  admin (String) = Andorra
etc.

Puede convertir sus datos a otros formatos. Obtener la lista de los formatos compatibles con –formats.

Utilizar ogr2ogr para convertir datos entre formatos de archivo

Puede utilizar ogr2ogr para convertir datos de características simples entre formatos de archivo. Puede utilizar –formats para obtener la lista de los formatos soportados con información de lectura/escritura.

Convertir a los países a GML.

ogr2ogr --formats
ogr2ogr -f GML countries.xml ne_10m_admin_0_countries.shp

Cosas para probar

Aquí hay algunos desafíos adicionales para que intentes:

  • Pruebe gdalwarp o gdal_merge.py para hacer un mosaico con sus datos

  • Pruebe gdaladdo para construir descripciones internas

  • QGIS usa GDAL/OGR también para soporte de muchos formatos. Además proporciona el Plugin de GdalTools para procesar datos ráster. Este plugin integra las herramientas gdal en QGIS.

  • Pruebe ogr2ogr para importar/exportar los datos de vector a otros formatos como PostGIS. Eche un vistazo a las opciones que ogr2ogr proporciona.

  • Pruebe el plugin OGR-Layer-Konverter de QGIS.

¿Qué sigue?

Esto es sólo el primer paso en el camino al uso de GDAL y OGR. Hay mucha más funcionalidad que puede probar.

Proyecto GDAL inicio

GDAL Raster Tutorial

GDAL Workshop