Format dan pengaturan apa yang digunakan untuk foto antena di QGIS?


10

Berikut pertanyaan yang lebih lanjut tentang penanganan Aerial dengan ArcGIS:

Format Paling Efektif untuk Mengelola Foto Udara untuk Hanya Melihat

Tampaknya ada 2 opsi utama untuk menyimpan / resampling / memproyeksikan ulang dll antena:

  1. JP2000 / JP2 / JPEG 2000 (baru-baru ini 5 kode untuk penanganan GDAL)
  2. ECW (ERDAS Compressed Wavelets (.ecw))
  3. ada yang saya lewatkan?

gdal format yang tersedia

Apa yang saya mengerti tergantung pada versi QGIS untuk keduanya biasanya harus diinstal beberapa perpustakaan tambahan. ECW memiliki beberapa batasan - untuk menekan kebutuhan untuk membeli lisensi?

Saya menguji jpeg yang tidak dapat saya gunakan untuk file besar (batasan dimensi maks) dan juga lambat dengan dimensi yang lebih besar.

Jawabannya harus berisi:

  1. Apa yang tersedia secara default dengan desktop QGIS 2.0.1 dan / atau OSGEO?
  2. Bagaimana cara kerjanya dengan file besar - memperbesar / memperkecil (piramida)?
    • itu Opsi Pembuatan - RESOLUSI untuk piramida jp2?

1
Hanya pendekatan lain: Serangkaian besar orthophoto sering disajikan sebagai layanan OGC WMS / WMTS dengan penyedia backend seperti GeoServer atau MapServer.
Jakob

2
GeoTIFF dan NITF biasa digunakan untuk citra satelit. Juga didukung di GDAL, tetapi tidak yakin apakah QGIS mendukung NITF.
BradHards

@ Jakob - Saya mengerti intinya. Tapi tetap saja citra harus disimpan entah bagaimana di server (dalam beberapa format), kan?
Miro

@BradHards - Tiff sebenarnya pilihan pertama saya tetapi satu-satunya cara untuk menyimpannya dikompresi secara efektif adalah kompresi JPEG yang membawa saya ke batasan dimensi maks yang sama seolah-olah disimpan langsung ke JPEG. Masalahnya adalah untuk citra satelit sebagian besar diperlukan kompresi tanpa kehilangan. Tetapi pertanyaan ini lebih fokus pada foto udara yang dapat bertahan beberapa kerugian demi menghemat penyimpanan / transfer data yang sangat besar.
Miro

Jawaban:


8

Berdasarkan jawaban huckfinn, beberapa komentar lain dan bersama dengan temuan saya:

Format yang menang adalah JPEG2000 (mengapa dan versi apa yang disebutkan di bawah Mengapa tidak yang lain )

Kenapa tidak orang lain:

  1. JPEG
    • Batasan ukuran baik ukuran data dan dimensi (4GB dan 65500x65500)
    • tidak ada kemungkinan (internal) piramida = semakin besar gambar, semakin lama waktu yang dibutuhkan untuk menampilkannya ketika menggeser / memperbesar / memperkecil
  2. GeoTIFF
    • Baik untuk grid tetapi untuk citra raster tidak ada kompresi lossy yang efektif kecuali JPEG = masalah yang sama dengan JPEG
  3. ECW dan Mr. SID
    • Anda memerlukan lisensi khusus untuk dapat menyimpan dalam ECW dan Mr. SID - Anda tidak dapat melakukannya secara default dengan GDAL (QGIS). Jika Anda memiliki lisensi khusus, Anda mungkin tidak perlu membaca jawaban ini karena memproses citra adalah roti harian Anda (perusahaan kami biasanya mendapatkan citra dalam format ECW dari klien kami)
  4. Basis data / Peta server
    • Ini jelas merupakan pilihan yang baik jika Anda sudah menjalankan beberapa server database / Map atau setidaknya tahu cara melakukannya dengan mudah dan cepat. Dalam hal ini data dapat disimpan di GeoTIFF atau apa pun dan biasanya dikirim sebagai JPEG ke klien Anda - browser web atau perangkat lunak Desktop seperti QGIS. Tetapi jika Anda tidak memiliki server dan ingin sesuatu yang mudah dimuat / lihat gambar dengan mudah di QGIS, itu terlalu rumit.

MENGAPA JPEG2000:

Seperti yang telah saya posting di Pertanyaan saya - GDAL menyediakan lebih banyak opsi untuk menyimpan dalam format JPEG2000 tetapi sebagaimana tercantum di situs web GDAL selain itu harus disediakan dalam versi standar GDAL. Saya mencoba mungkin 6 versi QGIS yang berbeda saat pengujian dan semuanya memiliki setidaknya satu opsi JPEG2000 (pada Windows 7). Untuk memastikan saya menyarankan untuk menginstal OSGeo4W (32 atau 64 bit) versi QGIS dan memeriksa shell OSGeo4W jika ada kode JPEG2000. (pada Windows jalankan shell OSGeo4W dari menu awal / program dan tulis perintah di sana gdal_translate --formatsatau gdalwarp --formats).

Dalam semua versi QGIS saya mencoba ada JP2OpenJPEG kode (OpenJPEG perpustakaan (v2)) tersedia. Dan setelah beberapa pengujian lagi termasuk yang lain saya menemukan yang paling berguna.

Keuntungan dari JP2OpenJPEG

  • bebas digunakan untuk open / save
  • tidak ada batas ukuran "kecil" (pasti bisa melampaui 65500x65500)
  • kompresi sangat efektif (mungkin untuk mengatur%)
  • termasuk piramida (pratinjau) untuk melihat cepat (juga dimungkinkan untuk mengatur)

(opsi untuk mengatur kompresi ( -co KUALITAS ), piramida ( -co RESOLUSI ) dan lainnya - http://www.gdal.org/frmt_jp2openjpeg.html )

Contoh sederhana konversi di QGIS menggunakan gdal_translate (di QGIS buka Raster / Konversi / Terjemahan , atur apa pun yang Anda butuhkan dan mungkin klik tombol edit untuk menyesuaikan perintah agar sesuai dengan kebutuhan Anda):

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

6

Untuk topik 2: Berikut ini adalah penyelidikan JP2 yang lebih lama, karena saya juga tertarik, untuk menggunakan kompresi yang lebih efisien. Dan IMO hasilnya adalah: Di dalam GDAL / QGIS (sebagai QgsRastrerDataProvider) Anda tidak dapat menggabungkan kompresi jpeg2000 yang tepat dan opsi caching cepat seperti set ubin dan struktur blok dengan cara yang sederhana.

Biasanya saya perfer GeoTiff untuk Raster-DB, itu didukung oleh GDAL sejak lama dan memiliki banyak fitur untuk membuat hidup lebih mudah.

Anda dapat menemukan kemampuan driver data JP2 di halaman gdal. Untuk kebutuhan Anda, jp2k, JPEG2000 (dependensi libjasper) tercantum di halaman ini: http://www.gdal.org/frmt_jpeg2000.html . Seperti yang tercantum di http://www.gdal.org/formats_list.html "driver" mendukung read, write, terbatas pada 2GiB dan dibangun sejak GDAL versi 1.9 dan memiliki beberapa opsi blok ...

Jadi untuk memastikan apa yang mungkin dengan JP2 saya telah membuat set tes.

Saya menggunakan foto arial besar untuk mendeteksi burung laut di laut baltik dengan ukuran ca. 12000 x 10000 piksel (RGB) dan resolusi ground 2 cm (saya harap ini cukup besar). Saya sekarang memiliki 270 file dengan kapasitas sekitar 130 GiB dalam Proyek QGIS saya. Dan ia bekerja dengan lancar dan baik pada OS Linux Debian 7.0 64-bit dengan core Opteron 8GB dan 4xAMD. ... tetapi dengan GeoTiff.

Untuk mendapatkan akses cepat di GIS-Tool, gambar direferensikan dan diresampled dengan GDAL menggunakan langkah-langkah dan opsi berikut (... maaf untuk gaya skrip bash):

Merujuk gambar dengan set data dari 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

Variabel $ [u | o] [l | r] [x | y] adalah sudut-sudut gambar yang diberikan oleh kalkulus fotogrametri dan variabel $ wd adalah lebar gambar, $ hg tinggi gambar dan $ cwd $ chg titik pusat.

Warp gambar dengan opsi set tile ke dunia nyata:

    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 memberi tahu besi untuk menggunakan banyak cache dan empat utas prosesor untuk menghitung barang. Resampling dilakukan dengan cara bilinear dan sistem koordinatnya adalah UTM-32 .. tetapi saya ingin ubin blok 512x512, untuk membuat operasi navigasi (zoom, pan, point) cepat dan lancar. Ini dilakukan oleh opsi -co TILED = YA -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512.

Tuliskan piramida ke dalam GeoTiff pada tingkat zoom 2,4,8 dan 16:

    gdaladdo -r gauss $geo_tif 2 4 8 16

GeoTiff yang dihasilkan ditunjukkan oleh gdalinfo adalah:

 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

Jadi di GeoTiff semuanya baik-baik saja! Jika saya mencoba membuat JP2 dengan langkah percakapan langsung:

 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)

dan itu gagal. Mungkin pesan kesalahan memberi Anda petunjuk atau format lain yang dapat Anda gunakan.

Coba dengan alat gdal_translate akan memberi Anda JP2000 yang tepat

 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

dan tingkat kompresi adalah 1: 8 tetapi kami kehilangan properti blok dan ubin seperti yang ditunjukkan oleh 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)

Tes terakhir adalah menggunakan GeoTiff dengan kompresi JPEG internal tetapi kami mendapatkan:

 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.
  ....

Jadi ke mana harus pergi dari sini. Halaman lib driver JP2000 Jasper dari GDAL mencantumkan beberapa parameter untuk membuat gambar jp2000 dengan opsi blok:

 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.

tapi pertanyaannya adalah, mana yang akan digunakan qgis.


1
Terima kasih, sangat menghargai ini. Saya juga melakukan tes sendiri. Seperti yang saya lihat JPEG2000 adalah format untuk pergi. Seperti yang saya sebutkan sebelumnya TIFF tidak menggunakan karena saya hanya dapat menggunakan kompresi JPEG (bukan JP2000) sehingga ada batasan ukuran. Saya menggunakan driver (kode) JP2OpenJPEG yang tersedia di versi QGIS / GDAL saya dan tidak memiliki batas ukuran. Dan yang paling penting ia memiliki opsi pembuatan yang baik - antara lain Resolusi dan BLOCK * SIZE (keduanya diatur ke nilai default yang masuk akal).
Miro

Terima kasih, itu kabar baik. Sayangnya Debian wheezy tidak mendukung driver ini saat ini .. tetapi baik untuk mengetahui mana dari banyak jp2000'end yang kaku. -
huckfinn

5

Untuk topik 1. QGIS menggunakan GDAL sebagai QgsRasterdataProvider. Jadi kemampuan membaca dan menulis format raster diimplementasikan oleh lib GDAL. Anda dapat menemukan format yang didukung di bawah tautan berikut http://www.gdal.org/formats_list.html . Perintah gdal-config --formats memberi Anda gambaran umum yang memformat hal-hal yang dimasukkan ke dalam lib atau edisi Anda. Apa yang disediakan oleh edisi Anda tergantung pada paket Anda, OS dan sebagainya. Untuk info lebih lanjut baca http://trac.osgeo.org/gdal/wiki/BuildHints .


Terima kasih atas gdal-config --formats. Bagian pertama dari puzzle selesai.
Miro

1
gdal-config --formats hanya untuk sistem Unix. Pada Windows dimungkinkan untuk melakukan gdal_translate --formats atau gdalwarp --formats untuk melihat apa yang tersedia.
Miro

Hm, itu benar gdal-config memberi penyusun unix saran untuk denendensi perpustakaan. OK, itu tidak masuk akal di Windows (cygwin atau mingw exepted). Tapi gdalinfo --format $ DRIVERNAME memberi Anda info.
huckfinn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.