สำหรับหัวข้อที่ 2: นี่คือการตรวจสอบเพิ่มเติมของ JP2 อีกต่อไปเพราะฉันก็สนใจที่จะใช้การบีบอัดที่มีประสิทธิภาพมากขึ้น และผลลัพธ์ IMO คือ: ภายใน GDAL / QGIS (ในฐานะ QgsRastrerDataProvider) คุณไม่สามารถรวมการบีบอัด jpeg2000 ที่เหมาะสมและตัวเลือกแคชอย่างรวดเร็วเช่นชุดกระเบื้องและโครงสร้างบล็อกในวิธีที่ง่าย
โดยปกติฉันชอบ GeoTiff สำหรับ Raster-DB's มันได้รับการสนับสนุนอย่างดีจาก 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 ฉันได้สร้างชุดทดสอบ
ฉันใช้ภาพถ่ายขนาดใหญ่เพื่อตรวจจับนกทะเลในทะเลบอลติกที่มีขนาดเท่ากับแคลิฟอร์เนีย 12,000 x 10,000 พิกเซล (RGB) และความละเอียดพื้นดิน 2 ซม. (ฉันหวังว่ามันจะมีขนาดใหญ่พอ) ฉันมีไฟล์ 270 ไฟล์ที่มีความจุประมาณ 130 GiB ใน QGIS-Project ของฉัน และใช้งานได้ดีกับ Debian 7.0 Linux OS 64- บิตที่มี 8GB และ 4xAMD Opteron cores ... แต่ใช้ GeoTiff
ในการเข้าถึง GIS-Tool อย่างรวดเร็วรูปภาพจะได้รับการอ้างอิงและปรับใหม่ด้วย GDAL โดยใช้ขั้นตอนและตัวเลือกต่อไปนี้ (.. ขออภัยสำหรับสไตล์สคริปต์ทุบตี):
การอ้างอิงภาพด้วยชุดข้อมูลจาก 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 the จุดกึ่งกลาง
วาปภาพด้วยตัวเลือกชุดไพ่ในโลกแห่งความจริง:
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
พารามิเตอร์: - กำหนดค่า GDAL_CACHEMAX 2000 -wm 2000- สอง NUM_THREADS = 4 บอกให้เตารีดใช้แคชจำนวนมากและตัวประมวลผลเธรดสี่ตัวเพื่อคำนวณสิ่งของ การ Resampling เป็นวิธี bilinear และระบบ coordiate คือ UTM-32 .. แต่ฉันต้องการแผ่นบล็อกขนาด 512x512 เพื่อให้การใช้งานระบบนำทาง (ซูม, แพน, จุด) รวดเร็วและคล่องแคล่ว สิ่งนี้ทำโดยตัวเลือก -co TILED = YES -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512
เขียนปิรามิดลงใน GeoTiff ที่ระดับการซูม 2,4,8 และ 16:
gdaladdo -r gauss $geo_tif 2 4 8 16
GeoTiff ผลลัพธ์ที่แสดงโดย gdalinfo คือ:
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)
การทดสอบครั้งสุดท้ายคือการใช้ GeoTiff กับการบีบอัด JPEG ภายใน แต่เราได้รับ:
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.
....
ดังนั้นจะไปจากที่นี่ หน้า lib2000 โปรแกรมควบคุม Jasper ของ GDAL แสดงพารามิเตอร์บางอย่างเพื่อสร้างอิมเมจ 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