QGIS'teki hava fotoğrafları için hangi biçim ve ayarlar kullanılır?


10

ArcGIS ile Antenleri yönetmeyle ilgili aşağıdaki soru:

Hava Fotoğrafçılığını Yalnızca İzlemek İçin Yönetmek İçin En Etkili Biçim

Antenlerin depolanması / yeniden örneklenmesi / yeniden enjekte edilmesi vb. İçin 2 ana seçenek var gibi görünüyor:

  1. JP2000 / JP2 / JPEG 2000 (GDAL kullanımı için son zamanlarda 5 kod)
  2. ECW (ERDAS Sıkıştırılmış Dalgacıklar (.ecw))
  3. kaçırdığım başka?

gdal kullanılabilir biçimler

Her ikisi için de QGIS sürümüne bağlı olarak ne anladım genellikle bazı ek kütüphaneler yüklü olması gerekir. ECW'nin bazı sınırlamaları var - sıkıştırma için lisans satın alma ihtiyacı var mı?

Büyük dosyalar için kullanamayacağım jpeg'i test ettim (maksimum boyut sınırlaması) ve daha büyük boyutlarla da yavaş.

Cevap şunları içermelidir:

  1. QGIS 2.0.1 masaüstü ve / veya OSGEO ile varsayılan olarak neler bulunur?
  2. Büyük dosyalarla nasıl çalışır - yakınlaştırma / uzaklaştırma (piramitler)?
    • olduğu Oluşturma Seçenekleri - KARAR jp2 piramitler için?

1
Diğer yaklaşım: Büyük ortofoto serileri genellikle GeoServer veya MapServer gibi bir arka uç sağlayıcısıyla OGC hizmeti WMS / WMTS olarak sunulur.
Jakob

2
GeoTIFF ve NITF uydu görüntüleri için yaygındır. GDAL'de de destekleniyor, ancak QGIS'in NITF'yi destekleyip desteklemediğinden emin değilim.
BradHards

@ Jakob - Anlıyorum. Ama yine de görüntüler bir şekilde sunucuya kaydedilmelidir (bazı formatlarda), değil mi?
Miro

@BradHards - Tiff aslında benim ilk tercihimdi ama etkili bir şekilde sıkıştırılmış olarak kaydetmenin tek yolu beni doğrudan JPEG'e kaydedilmiş gibi aynı maksimum boyut sınırlamasına getiren JPEG sıkıştırmasıdır. Mesele uydu görüntüleri için çoğunlukla yalnız sıkıştırma gerektiriyor. Ancak bu soru daha çok büyük veri depolama / aktarımından tasarruf etmek için bazı kayıplara neden olabilecek hava fotoğraflarına odaklanmıştır.
Miro

Yanıtlar:


8

Huckfinn cevaplarına, diğer birkaç yoruma ve bulgularımla birlikte:

Kazanma biçimi JPEG2000'dir (neden ve hangi sürüm aşağıda belirtilmiştir Neden diğerleri değil )

Neden diğerleri:

  1. JPEG
    • Hem veri boyutu hem de boyutları için boyut sınırlaması (4GB ve 65500x65500)
    • hayır (dahili) piramit olasılığı = görüntüyü büyütme, kaydırma / yakınlaştırma / uzaklaştırma sırasında görüntülenmesi daha uzun sürer
  2. GeoTIFF
    • Izgaralar için iyidir, ancak raster görüntüler için JPEG dışında etkili bir kayıplı sıkıştırma yoktur = JPEG ile aynı sorun
  3. ECW ve Bay SID
    • ECW ve Bay SID'ye kaydedebilmek için özel lisansa ihtiyacınız vardır - bunu varsayılan olarak GDAL (QGIS) ile yapamazsınız. Özel lisansınız varsa, muhtemelen bu cevabı okumanıza gerek yoktur çünkü görüntülerin işlenmesi günlük ekmeğinizdir (firmamız genellikle müşterilerimizden ECW formatında görüntüler alır)
  4. Veritabanı / Harita sunucusu
    • Zaten çalışan bazı veritabanı / Harita sunucunuz varsa veya en azından nasıl kolayca ve hızlı bir şekilde yapılacağını biliyorsanız kesinlikle iyi bir seçenektir. Bu durumda veriler GeoTIFF'e veya her neyse kaydedilebilir ve genellikle istemcinize - web tarayıcınıza veya QGIS gibi Masaüstü yazılımlarına JPEG olarak gönderilir. Ancak sunucunuz yoksa ve QGIS'te görüntüleri kolayca yüklemek / görmek kolay bir şey istiyorsanız, çok karmaşıktır.

NEDEN JPEG2000:

Soruma gönderdiğim gibi - GDAL, JPEG2000 formatında kaydetmek için daha fazla seçenek sunuyor, ancak GDAL web sitesinde listelendiği gibi, GDAL'ın varsayılan sürümünde bunların olmaması gerekir. Test ederken muhtemelen 6 farklı QGIS sürümünü denedim ve hepsinde en az bir JPEG2000 seçeneği vardı (Windows 7'de). QGIS'in OSGeo4W (32 veya 64 bit) sürümünü yüklemeyi ve herhangi bir JPEG2000 kodunun mevcut olup olmadığını OSGeo4W kabuğuna kontrol etmeyi önerdiğimden emin olmak için. (Windows'ta sadece Başlat menüsünden / programlardan OSGeo4W kabuğunu çalıştırın ve oraya komut yazın gdal_translate --formatsveya gdalwarp --formats).

Denediğim tüm QGIS sürümlerinde JP2OpenJPEG kodu (OpenJPEG kütüphanesi (v2)) mevcuttu. Ve diğerleri de dahil olmak üzere bazı uzun testlerden sonra bunu en kullanışlı buldum.

JP2OpenJPEG'in Avantajları

  • açmak / kaydetmek için kullanmak ücretsiz
  • "küçük" boyut sınırı yok (kesinlikle 65500x65500'ün üzerine çıkabilir)
  • çok etkili sıkıştırma (% ayarlamak mümkündür)
  • hızlı görüntüleme için piramitleri (önizlemeler) içerir (ayarlamak da mümkündür)

(sıkıştırma ( -co KALİTE ), piramitler ( -co ÇÖZÜNÜRLÜKLER ) ve daha fazlasını ayarlama seçenekleri - http://www.gdal.org/frmt_jp2openjpeg.html )

Gdal_translate kullanarak QGIS'de basit dönüşüm örneği (QGIS'de Raster / Converion / Translate'e gidin , ihtiyacınız olanı ayarlayın ve komutu ihtiyaçlarınıza uyacak şekilde ayarlamak için düzenleme düğmesine tıklayın):

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

6

Konu 2 için: Burada JP2'nin daha uzun bir araştırması var, çünkü ben de daha verimli bir sıkıştırma kullanmak istedim. Ve sonuç IMO'su: GDAL / QGIS içinde (bir QgsRastrerDataProvider olarak), düzgün jpeg2000 sıkıştırma ve döşeme setleri ve blok yapıları gibi hızlı önbellek seçeneklerini basit bir şekilde birleştiremezsiniz.

Normalde Raster-DB'ler için GeoTiff'i görüyorum, GDAL tarafından uzun zamandır iyi destekleniyor ve hayatı kolaylaştırmak için birçok özelliğe sahip.

JP2 veri sürücüsünün yeteneklerini gdal sayfasında bulabilirsiniz. İhtiyaçlarınız için jp2k JPEG2000 (libjasper bağımlılıkları) bu sayfada listelenmiştir: http://www.gdal.org/frmt_jpeg2000.html . Http://www.gdal.org/formats_list.html adresinde listelendiği gibi "sürücü" okuma, yazma, 2GiB ile sınırlıdır ve GDAL 1.9 sürümünden beri inşa edilmiştir ve bazı blok seçenekleri vardır ...

Yani JP2 ile neyin mümkün olabileceğinden emin olmak için bir test seti oluşturdum.

Baltık denizindeki deniz kuşlarını ca büyüklüğünde tespit etmek için büyük arial fotoğraflar kullanıyorum. 12000 x 10000 piksel (RGB) ve 2 cm zemin çözünürlüğü (umarım yeterince büyüktür). Şu anda QGIS-Projemde yaklaşık 130 GiB kapasiteli 270 dosyam var. 8 GB ve 4xAMD Opteron çekirdekli 64 bit Debian 7.0 Linux işletim sisteminde akıcı ve iyi çalışır. ... ancak GeoTiff ile.

GIS-Tool'da hızlı erişim için görüntülere aşağıdaki adımlar ve seçenekler kullanılarak başvurulur ve GDAL ile yeniden örneklenir (..bas komut dosyası stili için üzgünüz):

Görüntüyü gps günlüğünden veri kümeleriyle gönderme:

    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] değişkenleri fotogrammetik hesap tarafından verilen görüntünün köşeleridir ve $ wd değişkeni görüntü genişliği, $ hg görüntü yüksekliği ve $ cwd $ chg Merkez noktası.

Döşeme seti seçenekleriyle görüntüyü gerçek dünyaya dönüştürün:

    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

Parametreler: --config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS = 4 ütüye, maddeleri hesaplamak için çok fazla önbellek ve dört işlemci iş parçacığı kullanmasını söyler. Yeniden örnekleme bilinear bir şekilde yapılır ve eşgüdümlü sistem UTM-32'dir. Ama 512x512 blok fayans istiyorum, navigasyon işlemlerini (zoom, pan, point) hızlı ve akıcı hale getirmek için. Bu, -co TILED = YES -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512 seçenekleriyle yapılır.

2,4,8 ve 16 zum seviyelerinde GeoTiff'e piramitler yazın:

    gdaladdo -r gauss $geo_tif 2 4 8 16

Gdalinfo tarafından gösterilen sonuçta ortaya çıkan 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'te her şey yolunda! Doğrudan konuşma adımıyla bir JP2 oluşturmaya çalışırsam:

 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)

ve başarısız olur. Hata mesajı size bir ipucu veya kullanabileceğiniz başka bir biçim verebilir.

Gdal_translate aracıyla deneme size uygun bir JP2000 verecektir

 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

ve sıkıştırma oranı 1: 8'dir, ancak gdalinfo tarafından gösterildiği gibi blok ve karo seti özelliklerini kaybederiz:

 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)

Son test, GeoTiff'i dahili bir JPEG sıkıştırmasıyla kullanmaktı, ancak şunu elde ediyoruz:

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

Peki buradan nereye gidiyoruz. GDAL'ın JP2000 Jasper sürücü lib sayfası, blok seçenekleriyle jp2000 görüntüsü oluşturmak için bazı parametreleri listeler:

 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.

ama soru şudur ki qgis kullanacaktır.


1
Teşekkür ederim, gerçekten minnettarım. Bu arada kendi testlerimi de yaptım. Gördüğüm gibi JPEG2000 gidilecek format. Daha önce de belirttiğim gibi TIFF kullanmak değil sadece JPEG sıkıştırma (JP2000 değil) kullanabilirsiniz, bu nedenle boyut sınırlaması vardır. QGIS / GDAL sürümümde bulunan ve boyut sınırı olmayan sürücü (kod) JP2OpenJPEG kullandım. Ve en önemlisi iyi yaratma seçeneklerine sahiptir - diğerleri arasında Kararlar ve BLOK * BOYUTU (her ikisi de makul varsayılan değerlere ayarlanmıştır).
Miro

Teşekkürler, bu iyi haber. Ne yazık ki Debian wheezy şu anda bu sürücüyü desteklemiyor .. ama birçok jp2000'end hangisinin katı olduğunu bilmek güzel. -
huckfinn

5

Konu 1 için. QGIS bir QgsRasterdataProvider olarak GDAL kullanır. Böylece raster formatını okuma ve yazma yetenekleri GDAL lib tarafından uygulanmaktadır. Desteklenen bir biçimi aşağıdaki bağlantıda bulabilirsiniz http://www.gdal.org/formats_list.html . Gdal-config --formats komutu, lib veya sürümünüzde hangi biçim öğelerinin oluşturulduğuna dair bir genel bakış sunar. Sürümünüz tarafından sağlanan, paketinize, işletim sisteminize vb. Daha fazla bilgi için http://trac.osgeo.org/gdal/wiki/BuildHints adresini okuyun .


Gdal-config - biçimleri için teşekkür ederiz. Bulmacanın ilk kısmı bitti.
Miro

1
gdal-config --formats yalnızca Unix sistemleri içindir. Windows'ta nelerin mevcut olduğunu görmek için gdal_translate --formats veya gdalwarp - formatats yapmak mümkündür.
Miro

Hm, gerçek gdal-config, unix derleyicilerine kütüphane değişimleri için bir tavsiye verir. Tamam, bu Windows'da bir anlam ifade etmiyor (cygwin veya mingw muaf). Ancak gdalinfo --format $ DRIVERNAME size bilgileri verir.
huckfinn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.