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.