Định dạng và cài đặt nào sẽ được sử dụng cho ảnh trên không trong QGIS?


10

Sau câu hỏi liên quan đến việc xử lý Aerials với ArcGIS:

Định dạng hiệu quả nhất để quản lý ảnh chụp từ trên không chỉ để xem

Có vẻ như có 2 tùy chọn chính để lưu trữ / định cỡ lại / định hướng lại, v.v.

  1. JP2000 / JP2 / JPEG 2000 (gần đây là 5 mã để xử lý GDAL)
  2. ECW (Vòng đeo tay nén ERDAS (.ecw))
  3. Có ai khác tôi đã bỏ lỡ?

gdal định dạng có sẵn

Những gì tôi đã hiểu tùy thuộc vào phiên bản QGIS cho cả hai thường phải cài đặt một số thư viện bổ sung. ECW có một số hạn chế - đối với nhu cầu nén để mua giấy phép?

Tôi đã thử nghiệm jpeg mà tôi không thể sử dụng cho các tệp lớn (giới hạn kích thước tối đa) và nó cũng chậm với kích thước lớn hơn.

Câu trả lời nên chứa:

  1. Những gì có sẵn theo mặc định với máy tính để bàn QGIS 2.0.1 và / hoặc OSGEO?
  2. Làm thế nào nó hoạt động với các tập tin lớn - phóng to / thu nhỏ (kim tự tháp)?
    • lựa chọn Creation - NGHỊ QUYẾT cho kim tự tháp jp2?

1
Chỉ là cách tiếp cận khác: Một loạt lớn orthophoto thường được phục vụ như một dịch vụ OGC WMS / WMTS với một nhà cung cấp phụ trợ như GeoServer hoặc MapServer.
Jakob

2
GeoTIFF và NITF là phổ biến cho hình ảnh vệ tinh. Cũng được hỗ trợ trong GDAL, nhưng không chắc chắn liệu QGIS có hỗ trợ NITF hay không.
BradHards

@Jakob - Tôi thấy điểm. Nhưng hình ảnh vẫn phải được lưu bằng cách nào đó trên máy chủ (ở một số định dạng), phải không?
Miro

@BradHards - Tiff thực sự là lựa chọn đầu tiên của tôi nhưng cách duy nhất để lưu nó được nén một cách hiệu quả là nén JPEG, đưa tôi đến giới hạn kích thước tối đa giống như được lưu trực tiếp vào JPEG. Điều này là đối với hình ảnh vệ tinh, hầu như không cần nén nén. Nhưng câu hỏi này tập trung nhiều hơn vào các bức ảnh chụp từ trên không có thể chịu một số tổn thất vì tiết kiệm lưu trữ / truyền dữ liệu khổng lồ.
Miro

Câu trả lời:


8

Dựa trên câu trả lời của huckfinn, một vài bình luận khác và cùng với kết quả của tôi:

Định dạng chiến thắng là JPEG2000 (tại sao và phiên bản nào được đề cập bên dưới Tại sao không phải là phiên bản khác )

Tại sao không phải là người khác:

  1. JPEG
    • Giới hạn kích thước cả kích thước và kích thước dữ liệu (4GB và 65500x65500)
    • khả năng không có kim tự tháp (bên trong) = hình ảnh càng lớn thì càng mất nhiều thời gian để hiển thị nó khi pan / phóng to / thu nhỏ
  2. GeoTIFF
    • Tốt cho lưới nhưng đối với hình ảnh raster không có nén mất hiệu quả ngoại trừ JPEG = vấn đề tương tự như JPEG
  3. ECW và ông SID
    • Bạn cần giấy phép đặc biệt để có thể lưu trong ECW và Mr. SID - bạn không thể làm điều đó theo mặc định với GDAL (QGIS). Nếu bạn có giấy phép đặc biệt, có lẽ bạn không cần phải đọc câu trả lời này vì xử lý hình ảnh là bánh mì hàng ngày của bạn (công ty chúng tôi thường lấy hình ảnh ở định dạng ECW từ khách hàng của chúng tôi)
  4. Cơ sở dữ liệu / máy chủ bản đồ
    • Đây chắc chắn là một lựa chọn tốt nếu bạn đã chạy một số cơ sở dữ liệu / máy chủ bản đồ hoặc ít nhất là biết cách thực hiện dễ dàng và nhanh chóng. Trong trường hợp đó, dữ liệu có thể được lưu trong GeoTIFF hoặc bất cứ điều gì và thường được gửi dưới dạng JPEG đến máy khách của bạn - trình duyệt web hoặc phần mềm Máy tính để bàn như QGIS. Nhưng nếu bạn không có máy chủ và muốn một cái gì đó dễ tải / xem hình ảnh dễ dàng trong QGIS, thì quá phức tạp.

TẠI SAO JPEG2000:

Như tôi đã đăng trong Câu hỏi của mình - GDAL cung cấp nhiều tùy chọn hơn để lưu ở định dạng JPEG2000 nhưng như được liệt kê trên trang web GDAL, không được cung cấp trong phiên bản mặc định của GDAL. Tôi đã thử có lẽ 6 phiên bản khác nhau của QGIS trong khi thử nghiệm và tất cả chúng đều có ít nhất một tùy chọn JPEG2000 (trên Windows 7). Để đảm bảo tôi đề nghị cài đặt phiên bản OSIS OSGeo4W (32 hoặc 64 bit) và kiểm tra vỏ OSGeo4W nếu có bất kỳ mã JPEG2000 nào. (trên Windows chỉ cần chạy shell OSGeo4W từ menu / chương trình bắt đầu và viết lệnh đó gdal_translate --formatshoặc gdalwarp --formats).

Trong tất cả các phiên bản của QGIS tôi đã cố gắng có JP2OpenJPEG mã (OpenJPEG thư viện (v2)) có sẵn. Và sau một số thử nghiệm dài hơn bao gồm cả những người khác, tôi thấy rằng một trong những tiện dụng nhất.

Ưu điểm của JP2OpenJPEG

  • miễn phí sử dụng để mở / lưu
  • không có giới hạn kích thước "nhỏ" (chắc chắn có thể vượt quá 65500x65500)
  • nén rất hiệu quả (có thể đặt%)
  • bao gồm các kim tự tháp (xem trước) để xem nhanh (cũng có thể đặt)

(tùy chọn để đặt nén ( -co CHẤT LƯỢNG ), kim tự tháp ( -co GIẢI QUYẾT ) và một số chi tiết khác - http://www.gdal.org/frmt_jp2openjpeg.html )

Ví dụ đơn giản về chuyển đổi trong QGIS bằng gdal_translate (trong QGIS đi tới Raster / Converion / Dịch , đặt bất cứ điều gì bạn cần và có thể nhấp vào nút chỉnh sửa để điều chỉnh lệnh phù hợp với nhu cầu của bạn):

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

6

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


1
Cảm ơn bạn, thực sự đánh giá cao điều này. Tôi cũng đã làm các bài kiểm tra của riêng mình trong khi đó. Như tôi thấy JPEG2000 là định dạng đi kèm. Như tôi đã đề cập trước đây TIFF không sử dụng becuase, tôi chỉ có thể sử dụng nén JPEG (không phải JP2000) nên có giới hạn kích thước. Tôi đã sử dụng trình điều khiển (mã) JP2OpenJPEG có sẵn trong phiên bản QGIS / GDAL của tôi và không giới hạn kích thước. Và quan trọng nhất là nó có các tùy chọn tạo tốt - trong số các độ phân giải khác và BLOCK * SIZE (cả hai đều được đặt thành giá trị mặc định hợp lý).
Miro

Cảm ơn, đó là tin tốt. Thật không may, Debian khò khè không hỗ trợ trình điều khiển này vào lúc này .. nhưng thật tốt khi biết ai trong số nhiều jp2000'ends là người cứng nhắc nhất. -
huckfinn

5

Đối với chủ đề 1. QGIS sử dụng GDAL làm QSSRasterdataProvider. Vì vậy, khả năng đọc và viết một định dạng raster được thực hiện bởi lib GDAL. Bạn có thể tìm thấy một định dạng được hỗ trợ theo liên kết sau http://www.gdal.org/formats_list.html . Lệnh gdal-config --formats cung cấp cho bạn một cái nhìn tổng quan về công cụ định dạng được xây dựng thành lib hoặc phiên bản của bạn. Những gì được cung cấp bởi phiên bản của bạn là tùy thuộc vào gói, hệ điều hành của bạn, v.v. Để biết thêm thông tin, hãy đọc http://trac.osgeo.org/gdal/wiki/BuildH gợi ý .


Cảm ơn bạn đã gdal-config --formats. Phần đầu tiên của câu đố được thực hiện.
Miro

1
gdal-config --formats chỉ dành cho các hệ thống Unix. Trên Windows, có thể thực hiện gdal_translate --formats hoặc gdalwarp --formats để xem những gì có sẵn.
Miro

Hừm, đó là gdal-config thực sự cung cấp cho các trình biên dịch unix một lời khuyên cho các cáo buộc của thư viện. OK, điều đó không có ý nghĩa gì trong Windows (cygwin hoặc mingw exepted). Nhưng gdalinfo --format $ DRIVERNAME cung cấp cho bạn thông tin.
huckfinn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.