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

GDAL/OGR Snabbstart

Denna snabbstart är indelad i två delar: GDAL (rasterdata) och OGR (vektordata).

Denna snabbstart beskriver hur du gör:

GDAL
  • Utforska dina bilddata med gdalinfo

  • Formatera översättningar med gdal_translate

  • Omprojicera dina data med gdalwarp

  • Mosaikera dina data med gdal_warp eller gdal_merge.py

  • Skapa en shapefil som ett raster tileindex med gdaltindex

OGR
  • få information om dina data med ogrinfo

  • använd ogr2ogr för att omvandla dina data till andra format

Det enda du behöver för den här snabbstarten är en terminal. Om du vill visualisera resultaten kan du använda en av Desktop GIS Software-applikationerna på OSGeoLive, t.ex. QGIS.

Lär känna GDAL

Du hittar demodata i /usr/local/share/data. Vi vill ta en titt på Natural Earth data i den här snabbstarten. Vi vill arbeta med en kopia av data. Så det första steget är att kopiera data till din hemkatalog.

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

Du hittar sedan en NaturalEarth Raster-fil och en .tfw World-fil på:

cd /home/user/gdal_natural_earth
ls HYP_50M_SR_W.*

Tips

Öppna filen med ett Desktop GIS som QGIS och ta en titt.

Hämta information om rasterdata med gdalinfo

gdalinfo HYP_50M_SR_W.tif
  Driver: GTiff/GeoTIFF
  Files: HYP_50M_SR_W.tif
  Size is 10800, 5400
  Coordinate System is:
  GEOGCRS["WGS 84",
      ENSEMBLE["World Geodetic System 1984 ensemble",
...
  Origin = (-179.999999999999972,90.000000000000000)
  Pixel Size = (0.033333333333330,-0.033333333333330)
  Metadata:
    TIFFTAG_SOFTWARE=Adobe Photoshop CS5 Macintosh
    TIFFTAG_DATETIME=2012:07:16 09:16:14
    TIFFTAG_XRESOLUTION=342.85699
    TIFFTAG_YRESOLUTION=342.85699
    TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
    AREA_OR_POINT=Area
  Image Structure Metadata:
    SOURCE_COLOR_SPACE=YCbCr
    COMPRESSION=YCbCr JPEG
    INTERLEAVE=PIXEL
    JPEG_QUALITY=90
    JPEGTABLESMODE=3
  Corner Coordinates:
  Upper Left  (-180.0000000,  90.0000000) (180d 0' 0.00"W, 90d 0' 0.00"N)
  Lower Left  (-180.0000000, -90.0000000) (180d 0' 0.00"W, 90d 0' 0.00"S)
  Upper Right ( 180.0000000,  90.0000000) (180d 0' 0.00"E, 90d 0' 0.00"N)
  Lower Right ( 180.0000000, -90.0000000) (180d 0' 0.00"E, 90d 0' 0.00"S)
  Center      (  -0.0000000,   0.0000000) (  0d 0' 0.00"W,  0d 0' 0.00"N)
  Band 1 Block=256x256 Type=Byte, ColorInterp=Red
  Band 2 Block=256x256 Type=Byte, ColorInterp=Green
  Band 3 Block=256x256 Type=Byte, ColorInterp=Blue
Anteckning:
  • Drivrutin är ”GTiff/GeoTIFF”

  • Storleken är 10800x5400

  • 3 band av typen Byte.

  • Koordinater

  • inget koordinatsystem

Enkel översättning av format

First get to know your drivers. The –formats command line switch of gdal_translate can be used to see a list of available format drivers.

Each format reports if it supports the following features:
  • read only (ro)

  • read/write (rw)

  • read/write/update (rw+)

  • supports virtual file systems (v)

  • supports subdatasets (s)

gdal_translate --formats

The –format command line switch can be used to query details about a particular driver, including creation options, and permitted data types.

gdalinfo --format jpeg
gdal_translate --format png

Översättning

Översättningar görs med kommandot gdal_translate. Standardformatet för utdata är GeoTIFF. Flaggan -of används för att välja ett utdataformat och flaggan -co används för att ange ett skapandealternativ:

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

Omkopplaren -ot kan användas för att ändra typen av utdata.

gdal_translate -ot Int16 HYP_50M_SR_W.tif HYP_50M_SR_W_Int16.tif

Använd gdalinfo för att verifiera datatyp.

Skalning

Omkopplaren -outsize kan användas för att ställa in storleken på utdatafilen.

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

Använd gdalinfo för att verifiera storleken.

Omkopplaren -scale kan användas för att skala om data. Explicit kontroll av in- och utmatningsintervallen är också tillgänglig. Omkopplaren gdalinfo -mm kan användas för att se pixlarnas min/max-värden.

Låt oss dela upp vår bild i två delar med -srcwin som gör en kopia baserad på pixel/linjeplacering (xoff yoff xsize ysize). Du kan också använda -projwin och definiera hörnen i georefererade koordinater (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

Raster tileindex med gdaltindex

Du kan bygga en shapefil som ett rastertileindex. För varje bild genereras en polygon med gränserna för polygonens utbredning och sökvägen till filen.

gdaltindex index_natural_earth.shp *st.tif

Ta en titt på din shapefil med QGIS och ogrinfo (du kommer att lära dig mer om ogrinfo senare i denna handledning)

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
Metadata:
  DBF_DATE_LAST_UPDATE=2025-05-13
Geometry: Polygon
Feature Count: 2
Extent: (-180.000000, -90.000000) - (180.000000, 90.000000)
Layer SRS WKT:
GEOGCRS["WGS 84",
    ...
location: String (254.0)
OGRFeature(index_natural_earth):0
  location (String) = west.tif
  POLYGON ((-180 90.0,-0.000000000017963 90.0,-0.000000000017963 -89.999999999982,-180 -89.999999999982,-180 90.0))

OGRFeature(index_natural_earth):1
  location (String) = east.tif
  POLYGON ((-0.000000000017963 90.0,179.999999999964 90.0,179.999999999964 -89.999999999982,-0.000000000017963 -89.999999999982,-0.000000000017963 90.0))

Omprojektering

For this process we assume that HYP_50M_SR_W.tif has been properly created with bounds.

Kommandot gdalwarp kan användas för att omprojicera bilder. Här omprojicerar vi den geografiska WGS84-bilden till Mercator-projektionen:

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

Använd gdalinfo för att verifiera ändringen och ta en titt på bilden.

Här omprojicerar vi till Ortho-projektionen.

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

Note how the poles are clipped? This is because the edges at the pole can’t be reprojected gdalwarp does not read all the data. We can force gdalwarp to read a bunch of surplus data around chunks as one way to resolve this.

Mosaik

gdal_merge.py är ett pythonskript som kan användas för enkla mosaikuppgifter. Mosaikera east.tif och west.tif till en enda fil:

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

Samma uppgift kan utföras med gdalwarp. gdalwarp har en mängd fördelar jämfört med gdal_merge, men kan vara långsam när många filer ska slås samman:

gdalwarp east.tif west.tif warpmerged.tif

Lär känna OGR

cd /home/user/gdal_natural_earth/

Tips

Öppna shape-filen med ett Desktop GIS som QGIS och ta en titt.

Hämta information om vektordata med ogrinfo

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

Få en sammanfattning av dina data med ogrinfo tillsammans med -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
Metadata:
  DBF_DATE_LAST_UPDATE=2012-11-05
Geometry: Polygon
Feature Count: 254
Extent: (-180.000000, -90.000000) - (180.000000, 83.634101)
Layer SRS WKT:
GEOGCRS["WGS 84",
    DATUM["World Geodetic System 1984",
...
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)

Om du kör ogrinfo utan en parameter får du en sammanfattning av dina data och därefter ett avsnitt för varje dataset.

ogrinfo -ro ne_10m_admin_0_countries.shp ne_10m_admin_0_countries

Du kan vidarebefordra resultatet från ogrinfo till grep för att filtrera och bara få attributet COUNTRY.

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.

Du kan konvertera dina data till andra format. Hämta listan över de format som stöds med –formats.

Använd ogr2ogr för att konvertera data mellan filformat

Du kan använda ogr2ogr för att konvertera enkla funktionsdata mellan filformat. Du kan använda –formats för att få en lista över de format som stöds med läs-/skrivinformation.

Konvertera länderna till GML.

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

Saker att prova

Här är några ytterligare utmaningar som du kan prova:

  • Prova gdalwarp eller gdal_merge.py för att mosaikera dina data

  • Prova gdaladdo för att bygga interna översikter

  • QGIS använder också GDAL/OGR för att stödja många format. Det tillhandahåller också GdalTools Plugin för att bearbeta rasterdata. Detta plugin integrerar gdal-tools i QGIS.

  • Prova ogr2ogr för att importera/exportera dina vektordata till andra format som PostGIS. Ta en titt på de alternativ som ogr2ogr erbjuder.

  • Prova QGIS-plugin-programmet OGR-Layer-Konverter.

Hur vill du gå vidare?

Detta är bara det första steget på vägen mot att använda GDAL och OGR. Det finns mycket mer funktionalitet som du kan prova.

GDAL-projektets hemsida

GDAL Raster Handledning

GDAL-workshop