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については、このチュートリアルの後半で詳しく説明します)
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を使用して変更を確認し、イメージを確認します。
ここでは、オルソ投影に再投影します。
gdalwarp -t_srs '+proj=ortho +datum=WGS84' HYP_50M_SR_W_4326.tif ortho.tif
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ワークショップ