Đối với chủ đề 2: Đây là một cuộc điều tra dài hơn về JP2, vì tôi cũng quan tâm, để sử dụng nén hiệu quả hơn. Và kết quả IMO là: Trong GDAL / QGIS (với tư cách là một QSSRastrerDataProvider), bạn không thể kết hợp các tùy chọn nén jpeg2000 và bộ đệm nhanh như bộ gạch và cấu trúc khối một cách đơn giản.
Thông thường tôi cảm thấy GeoTiff cho Raster-DB, nó được GDAL hỗ trợ rất lâu từ lâu và có rất nhiều tính năng giúp cuộc sống dễ dàng hơn.
Bạn có thể tìm thấy khả năng của trình điều khiển dữ liệu JP2 trên trang gdal. Đối với nhu cầu của bạn, jp2k, JPEG2000 (phụ thuộc libjasper) được liệt kê trên trang này: http://www.gdal.org/frmt_jpeg2000.html . Như được liệt kê trên http://www.gdal.org/formats_list.html "trình điều khiển" hỗ trợ đọc, ghi, được giới hạn ở 2GiB và tích hợp từ phiên bản GDAL 1.9 và có một số tùy chọn chặn ...
Vì vậy, để chắc chắn những gì có thể với JP2 tôi đã tạo một bộ thử nghiệm.
Tôi sử dụng những bức ảnh arial lớn để phát hiện những con chim biển ở vùng biển baltic với kích thước bằng ca. 12000 x 10000 pixel (RGB) và độ phân giải mặt đất là 2 cm (tôi hy vọng nó đủ lớn). Hiện tại tôi đang có 270 tệp có dung lượng khoảng 130 GiB trong Dự án QGIS của tôi. Và nó hoạt động thành thạo và tốt trên HĐH Debian 7.0 Linux 64 bit với lõi Opteron 8GB và 4xAMD. ... nhưng với GeoTiff.
Để có quyền truy cập nhanh trong Công cụ GIS, các hình ảnh được tham chiếu và ghép lại với GDAL bằng các bước và tùy chọn sau (xin lỗi cho kiểu bash script):
Tham khảo hình ảnh với bộ dữ liệu từ nhật ký gps:
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
Các biến $ [u | o] [l | r] [x | y] là các góc của hình ảnh được đưa ra bởi phép tính số học và biến $ wd là chiều rộng hình ảnh, $ hg chiều cao hình ảnh và $ cwd $ chg điểm trung tâm.
Warp hình ảnh với các tùy chọn thiết lập gạch vào thế giới thực:
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
Các thông số: --config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS = 4 bảo bàn ủi sử dụng nhiều bộ đệm và bốn luồng xử lý để tính toán nội dung. Việc lấy mẫu lại được thực hiện theo cách song tuyến và hệ thống tọa độ là UTM-32 .. nhưng tôi muốn gạch khối 512x512, để thực hiện các thao tác điều hướng (thu phóng, xoay, điểm) nhanh chóng và trôi chảy. Điều này được thực hiện bởi các tùy chọn -co TILED = YES -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512.
Viết kim tự tháp vào GeoTiff ở các mức thu phóng 2,4,8 và 16:
gdaladdo -r gauss $geo_tif 2 4 8 16
GeoTiff kết quả được hiển thị bởi gdalinfo là:
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
Vì vậy, trong GeoTiff mọi thứ đều ổn! Nếu tôi cố gắng tạo JP2 bằng bước trò chuyện trực tiếp:
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)
và nó thất bại. Có thể là thông báo lỗi cung cấp cho bạn một đầu mối hoặc một định dạng khác mà bạn có thể sử dụng.
Việc dùng thử với công cụ gdal_translate sẽ cung cấp cho bạn một JP2000 thích hợp
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
và tỷ lệ nén là 1: 8 nhưng chúng tôi mất các thuộc tính của khối và khối như thể hiện bởi 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)
Thử nghiệm cuối cùng là sử dụng GeoTiff với nén JPEG bên trong nhưng chúng tôi nhận được:
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.
....
Vậy đi đâu từ đây. Trang lib của trình điều khiển JP2000 Jasper của GDAL liệt kê một số tham số để tạo hình ảnh jp2000 với các tùy chọn khối:
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.
Nhưng câu hỏi là, cái nào sẽ qgis sử dụng.