QGISで航空写真に使用する形式と設定は何ですか?


10

次の質問は、ArcGISでの航空写真の処理に関するものでした。

表示のみの航空写真を管理するための最も効果的なフォーマット

航空写真の保存、再サンプリング、再投影などの2つの主要なオプションがあるようです。

  1. JP2000 / JP2 / JPEG 2000(最近、GDAL処理用の5つのコード)
  2. ECW(ERDAS圧縮ウェーブレット(.ecw))
  3. 他に見逃したことはありますか?

gdalで利用可能なフォーマット

両方のQGISバージョンに応じて私が理解したことは、通常、いくつかの追加ライブラリをインストールする必要があります。ECWにはいくつかの制限があります-圧縮のためにライセンスを購入する必要がありますか?

大きなファイルには使用できないjpegをテストしました(最大ディメンションの制限)。また、大きいディメンションでも遅いです。

答えには以下が含まれている必要があります。

  1. QGIS 2.0.1デスクトップやOSGEOでデフォルトで利用できるものは何ですか?
  2. 大きなファイルでどのように機能するか-ズームイン/ズームアウト(ピラミッド)?
    • ある作成オプションは - 決議 JP2ピラミッドのために?

1
ちょうど他のアプローチ:大規模な一連のオルソ写真は、多くの場合、GeoServerやMapServerなどのバックエンドプロバイダーでOGCサービスWMS / WMTSとして提供されます。
Jakob

2
GeoTIFFとNITFは衛星画像では一般的です。GDALでもサポートされていますが、QGISがNITFをサポートしているかどうかは不明です。
BradHards 2014年

@Jakob-ポイントがわかります。しかし、静止画像はなんらかの方法でサーバーに(何らかの形式で)保存する必要がありますよね?
ミロ2014年

@BradHards-実際にはTiffが最初の選択でしたが、効果的に圧縮して保存する唯一の方法はJPEG圧縮であり、これにより、JPEGに直接保存する場合と同じ最大サイズの制限が生じます。衛星画像の場合、ほとんどの場合、ロスレス圧縮が必要です。しかし、この質問は、膨大なデータの保存/転送を節約するためにいくつかの損失に耐えることができる航空写真にさらに焦点を当てています。
ミロ

回答:


8

ハックフィンの回答、他のいくつかのコメント、および私の調査結果に基づいて:

勝利フォーマットはJPEG2000である(バージョンは以下のように説明することが理由とない他の理由

他の人がいない理由:

  1. JPEG
    • データサイズとサイズの両方のサイズ制限(4GBおよび65500x65500)
    • (内部)ピラミッドの可能性はありません=パン/ズームイン/ズームアウトしたときに表示に時間がかかるほど、画像が大きくなります
  2. GeoTIFF
    • グリッドには適していますが、ラスターイメージには、JPEG以外の効果的な非可逆圧縮はありません= JPEGと同じ問題
  3. ECWとSID氏
    • ECWとMr. SIDに保存できるようにするには、特別なライセンスが必要です。GDAL(QGIS)ではデフォルトで保存できません。特別なライセンスがある場合、画像の処理は日常のパンであるため、おそらくこの回答を読む必要はありません(当社は通常、クライアントからECW形式の画像を取得します)
  4. データベース/地図サーバー
    • データベース/マップサーバーを既に実行している場合、または少なくとも簡単かつ高速に実行する方法を知っている場合は、これは間違いなく良いオプションです。その場合、データはGeoTIFFなどに保存でき、通常はJPEGとしてクライアント(WebブラウザまたはQGISなどのデスクトップソフトウェア)に送信されます。しかし、サーバーがなく、QGISに簡単に画像を簡単にロード/表示したい場合は、複雑すぎます。

なぜJPEG2000:

私の質問に投稿したように、GDALにはJPEG2000形式で保存するためのオプションがさらに用意されていますが、GDALのWebサイトに記載されているように、GDALのデフォルトバージョンでは提供されません。テスト中におそらく6つの異なるバージョンのQGISを試しましたが、それらすべてに少なくとも1つのJPEG2000オプションがありました(Windows 7の場合)。OSGeo4W(32または64ビット)バージョンのQGISをインストールし、OSGeo4WシェルでJPEG2000コードが使用可能かどうか確認することをお勧めします。(Windowsでは、スタートメニュー/プログラムからOSGeo4Wシェルを実行し、そこにコマンドgdal_translate --formatsまたはを書き込みますgdalwarp --formats)。

私が試したQGISのすべてのバージョンで、JP2OpenJPEGコード(OpenJPEGライブラリ(v2))が利用可能でした。そして、他のものを含むいくつかのより長いテストの後、私はその1つが最も便利だとわかりました。

JP2OpenJPEGの利点

  • オープン/保存に無料で使用できます
  • 「小さい」サイズ制限なし(間違いなく65500x65500をはるかに超える可能性があります)
  • 非常に効果的な圧縮(%を設定することが可能)
  • 高速表示用のピラミッド(プレビュー)が含まれています(設定も可能)

(セット圧縮のオプション(-CO QUALITY)、ピラミッド(-CO決議)といくつかのより多くの- http://www.gdal.org/frmt_jp2openjpeg.html

gdal_translateを使用したQGISでの変換の簡単な例(QGISではRaster / Converion / Translateに移動し、必要なものをすべて設定し、編集ボタンをクリックしてコマンドをニーズに合わせて調整します):

gdal_translate -of JP2OpenJPEG -co QUALITY=10 srcGridOrImage image.jp2  

6

トピック2の場合:私も興味を持っていたため、より効率的な圧縮を使用するために、JP2のより長い調査を行います。その結果、IMOは次のようになります。GDAL/ QGIS(QgsRastrerDataProviderとして)内では、適切なjpeg2000圧縮とタイルセットやブロック構造などの高速キャッシュオプションを簡単な方法で組み合わせることができません。

通常、私はRaster-DBのGeoTiffを使用します。これは、古くからGDALによって十分にサポートされており、生活を楽にする多くの機能を備えています。

データドライバーJP2の機能は、gdalページで確認できます。必要に応じて、jp2kのJPEG2000(libjasper依存関係)をこのページ(http://www.gdal.org/frmt_jpeg2000.html)にリストしますhttp://www.gdal.org/formats_list.htmlにリストされているように、「ドライバー」は読み取り、書き込みをサポートし、2GiBに制限されており、GDALバージョン1.9以降に組み込まれており、いくつかのブロックオプションがあります...

JP2で何ができるかを明確にするために、テストセットを作成しました。

私は大きなarial写真を使用して、約20cmのサイズのバルト海の海鳥を検出します。12000 x 10000ピクセル(RGB)、地上解像度2 cm(十分な大きさであることを願っています)。現在、QGIS-Projectには約130 GiBの容量のファイルが270あります。また、8GBと4xAMD Opteronコアを備えた64ビットDebian 7.0 Linux OSでもスムーズに動作します。...ただし、GeoTiffを使用。

GISツールで高速にアクセスするために、次の手順とオプションを使用して、画像がGDALで参照および再サンプリングされます(bashスクリプトスタイルの場合は..sorry)。

gps-logのデータセットで画像を参照する:

    gdal_translate \
    -of GTiff \
    -gcp   0     0 $ulx   $uly \
    -gcp   0   $hg $llx   $lly \
    -gcp $cwd $chg $cpx   $cpy \
    -gcp $wd     0 $urx   $ury \
    -gcp $wd   $hg $lrx   $lry \
    -a_srs epsg:32632 \ 
    $raw_tif $ref_tif

変数$ [u | o] [l | r] [x | y]は写真の計算により与えられた画像の角であり、変数$ wdは画像の幅、$ hgは画像の高さ、$ cwd $ chgは中心点。

タイルセットオプションを使用して画像を現実世界にワープします。

    gdalwarp \
    --config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS=4 \
    -r bilinear -dstnodata '0 0 0' \
    -of GTiff \
    -t_srs epsg:32632 \
    -tr 0.02 0.02 \
    -co COMPRESS=LZW \
    -co TILED=YES \
    -co BLOCKXSIZE=512 \
    -co BLOCKYSIZE=512 \
    $ref_tif $geo_tif

params:--config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS = 4は、Ironに大量のキャッシュと4つのプロセッサスレッドを使用して計算を行うように指示します。リサンプリングはバイリニア方式で行われ、座標系はUTM-32ですが、ナビゲーション操作(ズーム、パン、ポイント)を高速かつ滑らかにするために、512x512ブロックタイルが必要です。これは、オプション-co TILED = YES -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512によって行われます。

ピラミッドをズームレベル2、4、8、16でGeoTiffに書き込みます。

    gdaladdo -r gauss $geo_tif 2 4 8 16

gdalinfoによって表示される結果のGeoTiffは次のとおりです。

 Driver: GTiff/GeoTIFF
 Files: CF006135.TIF
 Size is 12419, 9900
 Coordinate System is:
 PROJCS["WGS 84 / UTM zone 32N",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
             SPHEROID["WGS 84",6378137,298.257223563,
                 AUTHORITY["EPSG","7030"]],
             AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",9],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AUTHORITY["EPSG","32632"]]
Origin = (656099.007276594405994,5998980.139660121873021)
Pixel Size = (0.020000000000000,-0.020000000000000)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
  Upper Left  (  656099.007, 5998980.140) ( 11d23'17.54"E, 54d 6'54.87"N)
  Lower Left  (  656099.007, 5998782.140) ( 11d23'17.17"E, 54d 6'48.47"N)
  Upper Right (  656347.387, 5998980.140) ( 11d23'31.21"E, 54d 6'54.60"N)
  Lower Right (  656347.387, 5998782.140) ( 11d23'30.84"E, 54d 6'48.20"N)
  Center      (  656223.197, 5998881.140) ( 11d23'24.19"E, 54d 6'51.54"N)
Band 1 Block=512x512 Type=Byte, ColorInterp=Red
 NoData Value=0
 Overviews: 6210x4950, 3105x2475, 1553x1238, 777x619
Band 2 Block=512x512 Type=Byte, ColorInterp=Green
 NoData Value=0
 Overviews: 6210x4950, 3105x2475, 1553x1238, 777x619
Band 3 Block=512x512 Type=Byte, ColorInterp=Blue
 NoData Value=0
 Overviews: 6210x4950, 3105x2475, 1553x1238, 777x619

したがって、GeoTiffではすべてがうまくいきます!直接会話するステップでJP2を作成しようとすると、次のようになります。

 gdalwarp -of jpeg2000 -co TILED=YES -co BLOCKSIZEX=512 -co BLOCKSIZEY=512 CF006135.TIF CF006135.jp2 
 Output driver `jpeg2000' not recognised or does not support
 direct output file creation.  The following format drivers are configured
 and support direct output:
   VRT: Virtual Raster
   GTiff: GeoTIFF
   NITF: National Imagery Transmission Format
   HFA: Erdas Imagine Images (.img)
   ELAS: ELAS
   MEM: In Memory Raster
   BMP: MS Windows Device Independent Bitmap
   PCIDSK: PCIDSK Database File
   ILWIS: ILWIS Raster Map
   SGI: SGI Image File Format 1.0
   Leveller: Leveller heightfield
   Terragen: Terragen heightfield
   netCDF: Network Common Data Format
   HDF4Image: HDF4 Dataset
   ISIS2: USGS Astrogeology ISIS cube (Version 2)
   ERS: ERMapper .ers Labelled
   RMF: Raster Matrix Format
   RST: Idrisi Raster A.1
   INGR: Intergraph Raster
   GSBG: Golden Software Binary Grid (.grd)
   PNM: Portable Pixmap Format (netpbm)
   ENVI: ENVI .hdr Labelled
   EHdr: ESRI .hdr Labelled
   PAux: PCI .aux Labelled
   MFF: Vexcel MFF Raster
   MFF2: Vexcel MFF2 (HKV) Raster
   BT: VTP .bt (Binary Terrain) 1.3 Format
   LAN: Erdas .LAN/.GIS
   IDA: Image Data and Analysis
   GTX: NOAA Vertical Datum .GTX
   NTv2: NTv2 Datum Grid Shift
   ADRG: ARC Digitized Raster Graphics
   SAGA: SAGA GIS Binary Grid (.sdat)

そしてそれは失敗します。エラーメッセージが、手掛かりまたは使用できる他の形式を提供している可能性があります。

ツールgdal_translateを使用すると、適切なJP2000が得られます

 gdal_translate -of jpeg2000\
    -co TILED=YES -co BLOCKSIZEX=512 -co BLOCKSIZEY=512\
    CF006135.TIF CF006135.jp2

 ls -l 
 -rw-r--r-- 1 huckfinn huckfinn  63538529 Jan 28 23:55 CF006135.jp2
 -rw-r--r-- 1 huckfinn huckfinn       388 Jan 28 23:04 CF006135.jp2.aux.xml
 -rw-r--r-- 1 huckfinn huckfinn 519882980 Sep 30 21:01 CF006135.TIF

圧縮率は1:8ですが、gdalinfoで示されるように、ブロックとタイルセットのプロパティが失われます。

 gdalinfo CF006135.jp2 
 Driver: JPEG2000/JPEG-2000 part 1 (ISO/IEC 15444-1)
 Files: CF006135.jp2
        CF006135.jp2.aux.xml
 Size is 12419, 9900
 Coordinate System is:
 PROJCS["WGS 84 / UTM zone 32N",
     GEOGCS["WGS 84",
         DATUM["WGS_1984",
             SPHEROID["WGS 84",6378137,298.257223563,
                 AUTHORITY["EPSG","7030"]],
             AUTHORITY["EPSG","6326"]],
         PRIMEM["Greenwich",0],
         UNIT["degree",0.0174532925199433],
         AUTHORITY["EPSG","4326"]],
     PROJECTION["Transverse_Mercator"],
     PARAMETER["latitude_of_origin",0],
     PARAMETER["central_meridian",9],
     PARAMETER["scale_factor",0.9996],
     PARAMETER["false_easting",500000],
     PARAMETER["false_northing",0],
     UNIT["metre",1,
         AUTHORITY["EPSG","9001"]],
     AUTHORITY["EPSG","32632"]]
 Origin = (656099.007276594405994,5998980.139660121873021)
 Pixel Size = (0.020000000000000,-0.020000000000000)
 Metadata:
   AREA_OR_POINT=Area
 Corner Coordinates:
 Upper Left  (  656099.007, 5998980.140) ( 11d23'17.54"E, 54d 6'54.87"N)
 Lower Left  (  656099.007, 5998782.140) ( 11d23'17.17"E, 54d 6'48.47"N)
 Upper Right (  656347.387, 5998980.140) ( 11d23'31.21"E, 54d 6'54.60"N)
 Lower Right (  656347.387, 5998782.140) ( 11d23'30.84"E, 54d 6'48.20"N)
 Center      (  656223.197, 5998881.140) ( 11d23'24.19"E, 54d 6'51.54"N)

最後のテストは、内部JPEG圧縮でGeoTiffを使用することでしたが、次の結果が得られました。

 gdalwarp -of GTiff \
  -co COMPRESS=JPEG \
  -co TILED=YES -co BLOCKSIZEX=512 -co BLOCKSIZEY=512\
  CF006135.TIF CF006135_IJPG.TIF
  Creating output file that is 12419P x 9900L.
  Warning 6: Driver GTiff does not support BLOCKSIZEX creation option
  Warning 6: Driver GTiff does not support BLOCKSIZEY creation option
  Processing input file CF006135.TIF.
  ....

だからここからどこへ行くか。GDALのJP2000 Jasperドライバーlibページには、ブロックオプションでjp2000イメージを作成するためのいくつかのパラメーターがリストされています。

 Encoding parameters, directly delivered to the JasPer library described in the JasPer documentation. Quoted from the docs:

``The following options are supported by the encoder:
imgareatlx=x    Set the x-coordinate of the top-left corner of the image area to x.
imgareatly=y    Set the y-coordinate of the top-left corner of the image area to y.
tilegrdtlx=x    Set the x-coordinate of the top-left corner of the tiling grid to x.
tilegrdtly=y    Set the y-coordinate of the top-left corner of the tiling grid to y.
tilewidth=w     Set the nominal tile width to w.
tileheight=h    Set the nominal tile height to h.
prcwidth=w  Set the precinct width to w. The argument w must be an integer  power of two. The default value is 32768.
prcheight=h     Set the precinct height to h. The argument h must be an integer power of two. The default value is 32768.
cblkwidth=w     Set the nominal code block width to w. The argument w must be an integer power of two. The default value is 64.
cblkheight=h    Set the nominal code block height to h. The argument h must be an integer power of two. The default value is 64.

しかし問題は、qgisがどちらを使用するかです。


1
本当にありがとうございました。その間も自分でテストを行いました。私が見るように、JPEG2000はそれに適したフォーマットです。前述のとおり、TIFFはJPEG圧縮しか使用できないため(JP2000では使用できないため)、サイズの制限があります。QGIS / GDALバージョンで利用できるサイズ制限のないドライバー(コード)JP2OpenJPEGを使用しました。そして最も重要なことには、それは良い作成オプションを持っています-特に解像度とBLOCK * SIZE(両方とも適切なデフォルト値に設定されています)。
ミロ

ありがとう、それは良い知らせです。残念ながら、Debian wheezyは現時点ではこのドライバをサポートしていません。-
huckfinn

5

トピック1の場合。QGISはGDALをQgsRasterdataProviderとして使用します。したがって、ラスター形式の読み取りおよび書き込み機能は、GDAL libによって実装されます。サポートされているフォーマットは、次のリンクhttp://www.gdal.org/formats_list.htmlで確認できます。コマンドgdal-config --formatsは、libまたはエディションに組み込まれているフォーマットの概要を示します。エディションによって提供されるものは、パッケージ、OSなどによって異なります。詳細については、http://trac.osgeo.org/gdal/wiki/BuildHintsをご覧ください。


gdal-config --formatsをありがとう。パズルの最初の部分が完了しました。
ミロ

1
gdal-config --formatsはUnixシステム専用です。Windowsでは、gdal_translate --formatsまたはgdalwarp --formatsを実行して、何が利用可能かを確認できます。
ミロ

うーん、本当のgdal-configは、UNIXコンパイラーにライブラリーの従属性に関するアドバイスを提供します。それは、Windowsでは意味がありません(cygwinまたはmingwを除く)。しかし、gdalinfo --format $ DRIVERNAMEは情報を提供します。
ハックフィン2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.