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

GDAL/OGR クイックスタート

このクイックスタートは、GDAL(ラスタデータ)とOGR(ベクタデータ)の2つの部分に分かれています。

このクイックスタートでは、次の方法について説明します:

GDAL
  • gdalinfoを使用して画像データを表示

  • gdal_translateでフォーマット変換

  • gdalwarpを使用してデータを再投影

  • データをgdal_warpまたはgdal_merge.pyでモザイク化

  • シェープファイルをgdaltindex付きのラスタータイルインデックスとして作成

OGR
  • ogrinfoでデータに関する情報を取得する

  • ogr2ogrを使用してデータを他の形式に変換

このクイックスタートに必要なのはターミナルだけです。結果を視覚化する場合は、OSGeoLiveのデスクトップGISソフトウェアアプリケーションの1つである QGIS を使用できます。

GDALについて知る

デモデータは /usr/local/share/data にあります。このクイックスタートの Natural Earthデータ を見てみましょう。データのコピーを操作します。したがって、最初のステップは、データをホームディレクトリにコピーすることです。

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

次のNaturalEarth Rasterファイルと.tfw World-fileがあることを確認してください::

ls /home/user/gdal_natural_earth/HYP_50M_SR_W.*

ちなみに

QGISのようなデスクトップGISを使用してファイルを開き、確認します。

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
注意:
  • ドライバーは "GTiff/GeoTIFF"

  • サイズは10800x5400です

  • バイト型の3バンドです。

  • 座標

  • 座標系なし

シンプルなフォーマットの翻訳

まずドライバーについて知りましょう。gdal_translateの --formats コマンドラインスイッチを使用すると、利用可能なフォーマットドライバの一覧を表示できます。

各フォーマットは、次の場合にレポートします
  • 読み取り専用 (ro) 、

  • 読み取り/書き込み (rw) または

  • 読み取り/書き込み/更新 (rw+)。

gdal_translate --formats

--format コマンドラインスイッチを使用すると、特定のドライバについて、作成オプションや許可されたデータ型などを含めて詳細に問い合わせることができます。

gdalinfo --format jpeg
gdal_translate --format png

変換

変換はgdal_translateコマンドで行います。デフォルトの出力形式はGeoTIFFです。-of フラグは出力フォーマットの選択に使用され、-co フラグは作成オプションの指定に使用されます:

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

-ot スイッチを使用して、出力データ型を変更できます。

gdal_translate -ot Int16 HYP_50M_SR_W.tif HYP_50M_SR_W_Int16.tif

gdalinfo を使用してデータ型を検証します。

再スケーリング

-outsize スイッチを使用して、出力ファイルのサイズを設定できます。

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

gdalinfoを使用してサイズを検証します。

-scale スイッチは、データの再スケールに使用できます。入力および出力範囲の明示的な制御も可能です。gdalinfo -mm スイッチを使用して、ピクセルの最小値/最大値を表示できます。

ピクセル/ラインの位置に基づいてコピーを作成する -srcwin を使用して、イメージを2つに分割してみましょう(xoff yoff xsize ysize)。-projwin を使用して、地理参照座標(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

gdaltindex付きラスタータイルインデックス

シェープファイルをラスタタイルインデックスとして作成できます。すべてのイメージに対して、ポリゴンの範囲とファイルへのパスの境界を持つポリゴンが生成されます。

gdaltindex index_natural_earth.shp *st.tif

QGISとogrinfoを使用して、出力シェープファイルを見てみましょう(ogrinfoについては、このチュートリアルの後半で詳しく説明します)

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

再投影

このプロセスでは、HYP_50M_SR_W.tifが境界付きで正しく作成されているものとします。前に見たように、gdainfoには座標系が設定されていませんでした。そこで、最初のステップでWGS84を座標系としてイメージに割り当てます。

gdal_translate -a_srs WGS84 HYP_50M_SR_W.tif HYP_50M_SR_W_4326.tif

gdalwarpコマンドを使用して、イメージを再投影できます。ここでは、WGS84の地理的イメージをメルカトル図法に再投影します。

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

gdalinfoを使用して変更を確認し、イメージを確認します。

../../_images/gdal_mercator.png

ここでは、オルソ投影に再投影します。

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.

モザイク

gdal_merge.pyは、シンプルなモザイク作業に使用できるPythonスクリプトです。east.tifとwest.tifをモザイク化して単一のファイルにします。

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

gdalwarpを使用して実行することもできます。gdalwarpはgdal_mergeよりもさまざまな利点がありますが、多くのファイルのマージに時間がかかることがあります。

gdalwarp east.tif west.tif warpmerged.tif

OGRについて知る

cd /home/user/gdal_natural_earth/

ちなみに

QGISのようなデスクトップGISを使用してシェープファイルを開き、確認します。

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)

ogrinfoに -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)

パラメーターを指定せずにogrinfoを実行すると、データの概要と、その後のすべてのデータセットのセクションが表示されます。

ogrinfo -ro ne_10m_admin_0_countries.shp ne_10m_admin_0_countries

ogrinfoの結果をgrepに転送して、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.

データを他の形式に変換できます。対応フォーマットの一覧を --formats で取得します。

ogr2ogrを使用してファイルフォーマット間でデータを変換

ogr2ogrを使用して、ファイルフォーマット間で簡単なフィーチャデータを変換できます。--formats を使用して、読み書き可能な情報を持つ対応フォーマットの一覧を取得できます。

国を GML に変換します。

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

試してみること

次に、試すべき追加の課題をいくつか示します。

  • データをモザイク化するには、gdalwarpまたはgdal_merge.pyを試してください

  • gdaladdoで内部概要を作成

  • QGISはGDAL/OGRも使用して、多くの形式をサポートしています。また、ラスタデータを処理するためのGdalToolsプラグインも提供しています。このプラグインはgdal-toolsをQGISに統合します。

  • ogr2ogrを使用して、ベクタデータをPostGISなどの他の形式にインポート/エクスポートしてみてください。ogr2ogrが提供するオプションを見てください。

  • QGISプラグインOGR-Layer-Konverterを試してみてください。

次のステップは何?

これは、GDALとOGRを使用するための最初のステップにすぎません。他にも多くの機能を試すことができます。

GDALプロジェクトホーム

GDAL ラスターのチュートリアル

GDALワークショップ