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

GDAL/OGR gyorstalpaló

Ez a gyorstalpaló két részből áll: GDAL (raszter adatok) és OGR (vektor adatok).

Ez a gyorstalpaló leírja:

GDAL
  • Fedezze fel a képadatait a gdalinfo segítségével

  • Formátum átalakítás gdal_translate-tel

  • Vetületi átszámítás az adataira a gdalwarp-pal

  • Adatainak mozaikolása gdal_warp-pal vagy gdal_merge.py-al

  • Egy shape fájl készítése gdaltindex-el mint egy raszter csempe index

OGR
  • információ az adatairól ogrinfo-val

  • ogr2ogr használata az adatainak más formátumba átalakításához

Ehhez a gyorstalpalóhoz csak egy terminálra lesz szüksége. Ha meg akarja jeleníteni az eredményeket, használhatja az asztali GIS alkalmazások egyikét mint például a QGIS.

GDAL megismerése

A minta adatokat megtalálja itt /usr/local/share/data. Ebben a gyorstalpalóban egy pillantást szeretnénk vetni a Natural Earth adatokra. Az adatok egy másolatával akarunk dolgozni. Így az első lépés az adatok átmásolása a home könyvtárba.

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

Egy NaturalEarth raszter fájlt és egy .twf világ fájlt itt talál

ls /home/user/gdal_natural_earth/HYP_50M_SR_W.*

Javaslat

Nyissa meg a fájlt egy asztali GIS-sel pl. QGIS-sel és nézze meg.

Szerezzen információt a raszter adatokról a gdalinfo-val

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
Megjegyzés:
  • A meghajtó „GTiff/GeoTIFF”

  • A méret 10800x5400

  • 3 byte típusú sáv.

  • Koordináták

  • nincs koordináta-rendszer

Egyszerű formátum átalakítás

Először ismerje meg a meghajtóit. A gdal_translate –formats parancssori kapcsolója használható az elérhető formátum meghajtók listájának megtekintéséhez.

Minden formátum mellet megjelenik
  • csak olvasható (ro),

  • olvasható/írható (rw) vagy

  • olvasható/írható/aktualizálható (rw+).

gdal_translate --formats

A –format parancssori kapcoló használható egy bizonyos meghajtó részleteinek lekérdezésére, beleértve a létrehozási beállításokat és megengedett adat típusokat.

gdalinfo --format jpeg
gdal_translate --format png

Átalakítás

Az átalakítás a gdal_translate paranccsal valósítható meg. Az alapértelmezett output formátum a GeoTIFF. A -of kapcsolót használjuk az output formátum kiválasztáshoz és a -co kapcsolót a létrehozási beállítások megadásához:

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

A -ot kapcsoló használható az output adat típus módosítására.

gdal_translate -ot Int16 HYP_50M_SR_W.tif HYP_50M_SR_W_Int16.tif

Használja a gdalinfo-t az adattípus ellenőrzésére.

Átméretezés

A -outsize  kapcsoló használható az output fájl méretének beállítására.

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

Használja a gdalinfo-t a méret ellenőrzésére.

A -scale kapcsoló használható az adatok átskálázására. Az input és output tartományok pontos beállítására is van lehetőség. A gdalinfo -mm kapcsoló használható a pixel min/max értékek megjelenítésére.

Vágjuk két részre a képünket a -srcwin-nel, mely egy másolatot készít a pixel/sor pozíció alapján (xoff yoff xsize ysize). A -projwin-t is használhatná és a sarkokat georeferált koordinátákkal adhatja meg (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

Raszter csempe index gdaltindex-el

Létrehozhat egy shape fájlt mint egy raszter csempe index. Minden egyes képhez egy poligont generál a kép terjedelmére és a fájl elérési útját tárolja.

gdaltindex index_natural_earth.shp *st.tif

Vessen egy pillantást az output fájlra a QGIS-el vagy orginfo-val (az ogrinfo-ról többet fog tanulni később ebben az oktató anyagban)

../../_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))

Vetületi átszámítás

Ennél az eljárásnál feltételezzük, hogy a HYP_50M_SR_W.tif-et a megfelelő határokkal hozta létre. Ahogy korábban a gdalinfo-val láttuk, nincs beállított koordináta-rendszer. Az első lépésben a WGS84 koordináta-rendszert rendeljük a képhez.

gdal_translate -a_srs WGS84 HYP_50M_SR_W.tif HYP_50M_SR_W_4326.tif

A gdalwarp parancs használható a képek vetületi átszámítására. Itt a WGS84 földrajzi koordinátákból áttérünk a Mercator vetületre:

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

Használja a gdalinfo-t a változás ellenőrzésére és nézzen rá a képre.

../../_images/gdal_mercator.png

Itt átszámítunk az Otho vetületre.

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

Észrevette, hogy a sarkokat levágta? Ez azért van, mert az éleket a pólusnál nem lehet átvetíteni, a gdalwarp nem olvassa be az összes adatot. Rákényszeríthetjük a gdalwarp-ot hogy beolvassa a a többlet adatokat, mint egy módja a probléma megoldásának. Tudjon meg többet erről a RasterTutorial-ban https://trac.osgeo.org/gdal/wiki/UserDocs/RasterProcTutorial.

Mozaikolás

gdal_merge.py egy python szkript,mely egyszerű mozaikolos feladatoknál használható. Másoljuk egy fájlba az east.tif-et és west.tif-et:

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

Ugyanez a feladat megoldható a gdalwarp-al. A gdalwarp-nak számos előnye van a gdal_merge-vel szembe, de sok fájl összemásolásánál lassú lehet:

gdalwarp east.tif west.tif warpmerged.tif

Ismerje meg az OGR-t

cd /home/user/gdal_natural_earth/

Javaslat

Nyissa meg a shape fájlt egy asztali GIS-sel,például QGIS és nézze meg.

Szerezzen információt a vektor adatokról az ogrinfo-val

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)

Kapjon összefoglalót az adatairól az ogrinfo-val a -so kapcsolóval.

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)

Ha paraméter nélkül futtatja az ogrinfo-t, egy összefoglalást kap az adatairól és utána minden adathalmazról egy részt.

ogrinfo -ro ne_10m_admin_0_countries.shp ne_10m_admin_0_countries

Az ogrinfo eredményét továbbíthatja a grep-hez és csak a COUNTRY attribútumot kapja.

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.

Az adatai más formátumba konvertálhatja. szerezze be a támogatott formátumok listáját a –formats kapcsolóval.

Használja az ogr2ogr-t az adatok konvertálására fájl formátumok között

Az ogr2ogr-t az egyszerű elemeket tartalmazó adatok fájl formátumok közötti konvertálásra használhatjuk. A –formats kapcsolót használhatja a támogatott formátumok listájának megjelenítésére az olvasás/írás információval együtt.

Konvertálja az országokat GML-be.

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

Kipróbálandó dolgok

Íme néhány további kihívás kipróbálásra:

  • Próbálja ki a gdalwarp vagy gdal_merge.py programot az adatai mozaikolására

  • Próbálja ki a gdaladdo programot a belső áttekintők készítésére

  • A QGIS a GDAL/OGR-t használja sok formátum támogatására. A GdalTools modult biztosítja a raszter adatok kezelésére. Ez a modul a gdal eszközöket integrálja a QGIS-be.

  • Próbálja ki az ogr2ogr programot a vektor adatainak más formátumba alakítására mint például PostGIS. Vessen egy pillantást az ogr2ogr által biztosított opciókra.

  • Próbálja ki az OGR-Layer-Konverter QGIS modult.

Mi a következő?

Ez csak az első lépés az úton a GDAL és OGR használatához. Sokkal szélesebb a funkcionalitása amit kipróbálhat.

GDAL projekt honlap

GDAL raszter oktatóanyag

GDAL Workshop