QGIS中用于航拍照片的格式和设置是什么?


10

以下问题是有关使用ArcGIS处理天线的更多问题:

管理航空摄影仅查看的最有效格式

似乎有2个主要选项用于存储/重新采样/重新投影等天线:

  1. JP2000 / JP2 / JPEG 2000(最近有5个用于GDAL处理的代码)
  2. ECW(ERDAS压缩小波(.ecw))
  3. 还有其他我想念的吗?

gdal可用格式

我了解的取决于QGIS版本,通常都必须安装一些其他库。ECW有一些限制-为了压缩购买许可证的需求?

我测试了jpeg,该文件不能用于大文件(最大尺寸限制),并且在使用较大尺寸时也很慢。

答案应包含:

  1. QGIS 2.0.1桌面和/或OSGEO默认情况下有哪些功能?
  2. 大文件如何工作-放大/缩小(金字塔)?
    • 创建选项 - 决议案为JP2金字塔?

1
另一个方法是:大型正射影像通常作为OGC服务WMS / WMTS与后端提供程序(例如GeoServer或MapServer)一起使用。
雅各布2014年

2
GeoTIFF和NITF在卫星图像中很常见。GDAL也受支持,但不确定QGIS是否支持NITF。
BradHards 2014年

@Jakob-我明白了。但是仍然必须以某种方式(以某种格式)将图像保存在服务器上,对吗?
米罗2014年

@BradHards-Tiff实际上是我的首选,但是将其有效压缩的唯一方法是JPEG压缩,这使我达到了与直接保存到JPEG相同的最大尺寸限制。对于卫星图像来说,最需要的是无损压缩。但是这个问题更多地集中在航拍照片上,为了节省大量的数据存储/传输,航拍照片可能会遭受一些损失。
米罗2014年

Answers:


8

基于huckfinn的答案,其他一些评论以及我的发现:

获奖格式为JPEG2000(为什么以及下面提到哪个版本,为什么不其他

为什么不其他:

  1. JPEG格式
    • 数据大小和尺寸的大小限制(4GB和65500x65500)
    • 没有(内部)金字塔的可能性=放大/缩小/缩小图像时,图像越大显示时间越长
  2. GeoTIFF
    • 适用于网格,但适用于栅格图像,除JPEG =与JPEG相同的问题外,没有有效的有损压缩
  3. ECW和SID先生
    • 您需要特殊许可证才能保存在ECW和SID先生中-默认情况下,GDAL(QGIS)无法这样做。如果您拥有特殊许可,则可能不需要阅读此答案,因为处理图像是您的日常工作(我们公司通常会从我们的客户那里获得ECW格式的图像)
  4. 数据库/地图服务器
    • 如果您已经在运行某些数据库/ Map服务器,或者至少知道如何轻松,快速地进行操作,那么这绝对是一个不错的选择。在这种情况下,数据可以保存在GeoTIFF或其他格式中,并且通常以JPEG格式发送到您的客户端-Web浏览器或QGIS之类的桌面软件。但是,如果您没有服务器,并且想要在QGIS中轻松加载/轻松查看图像,则它太复杂了。

为什么使用JPEG2000:

正如我在问题中发布的那样,GDAL提供了更多以JPEG2000格式保存的选项,但正如GDAL网站上列出的那样,默认版本的GDAL中不应该提供。在测试时,我尝试了6种不同版本的QGIS,并且所有版本都至少具有一个JPEG2000选项(在Windows 7上)。为确保我建议安装QGIS的OSGeo4W(32或64位)版本,并在OSGeo4W Shell中检查是否有可用的JPEG2000代码。(在Windows上,只需从开始菜单/程序运行OSGeo4W shell并在其中写入命令gdal_translate --formatsgdalwarp --formats)。

我尝试过在所有版本的QGIS中使用JP2OpenJPEG代码(OpenJPEG库(v2))。经过更长时间的测试(包括其他测试),我发现它是最方便的。

JP2OpenJPEG的优点

  • 免费用于打开/保存
  • 没有“小”尺寸限制(绝对可以超过65500x65500)
  • 非常有效的压缩(可以设置%)
  • 包括金字塔(预览),可快速查看(也可以设置)

(选项设定的压缩(-CO QUALITY),棱锥(-CO决议)和多一些- http://www.gdal.org/frmt_jp2openjpeg.html

使用gdal_translate在QGIS中进行转换的简单示例(在QGIS中,转到Raster / Converion / Translate,设置所需内容,然后单击“编辑”按钮以调整命令以适应您的需求):

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

6

对于主题2:这是对JP2的更长篇研究,因为我也有兴趣使用更有效的压缩。IMO的结果是:在GDAL / QGIS(作为QgsRastrerDataProvider)中,您无法以简单的方式结合适当的jpeg2000压缩和快速缓存选项(如图块集和块结构)。

通常,我认为GeoTiff是Raster-DB的,它很久以来就得到了GDAL的良好支持,并具有许多使生活更轻松的功能。

您可以在gdal页面上找到数据驱动器JP2的功能。为了您的需要jp2k,在此页面上列出了JPEG2000(libjasper依赖项):http ://www.gdal.org/frmt_jpeg2000.html 。如http://www.gdal.org/formats_list.html上列出的,“驱动程序”支持读取,写入,并且自GDAL 1.9版开始限制为2GiB并内置,并且具有某些块选项...

为了确定JP2有什么可能,我创建了一个测试仪。

我使用大型arial照片检测波罗的海中海鸟的大小,大约为。12000 x 10000像素(RGB),地面分辨率为2厘米(我希望它足够大)。目前,我的QGIS项目中有270个文件,容量约为130 GiB。而且,它在具有8GB和4xAMD Opteron内核的64位Debian 7.0 Linux操作系统上运行流畅且性能良好。...但是使用GeoTiff。

为了在GIS工具中快速访问,请使用以下步骤和选项(..sorry为bash脚本样式)对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是中心点。

使用图块集选项将图像扭曲到真实世界中:

    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

参数:--config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS = 4告诉Iron使用大量缓存和四个处理器线程来计算数据。重采样是通过双线性方式完成的,坐标系统是UTM-32 ..但我想要512x512的块图块,以使导航操作(缩放,平移,指向)快速流畅。这是通过选项-co TILED = YES -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512完成的。

将金字塔以2、4、8和16缩放级别写入GeoTiff。

    gdaladdo -r gauss $geo_tif 2 4 8 16

gdalinfo显示的结果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中,一切都很好!如果我尝试通过直接对话步骤创建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.
  ....

那么从这里去哪里。GDAL的JP2000 Jasper驱动程序lib页面列出了一些参数,用于创建带有块选项的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将使用哪个。


1
谢谢,真的很感激。同时,我也做了自己的测试。如我所见,JPEG2000是要使用的格式。正如我之前提到的,不要使用TIFF,因为我只能使用JPEG压缩(而不能使用JP2000),因此存在大小限制。我使用的驱动程序(代码)JP2OpenJPEG在我的QGIS / GDAL版本中可用,并且没有大小限制。最重要的是,它具有良好的创建选项-其中包括“分辨率”和“块大小”(均设置为合理的默认值)。
米罗2014年

谢谢,这是个好消息。不幸的是,Debian Wheezy目前不支持此驱动程序。但是很高兴知道许多jp2000'end中的哪个是最严格的。-
huckfinn

5

对于主题1。QGIS使用GDAL作为QgsRasterdataProvider。因此,GDAL库实现了读取和写入栅格格式的功能。您可以在以下链接http://www.gdal.org/formats_list.html下找到受支持的格式。命令gdal-config --formats概述了lib或版本中内置了哪些格式的内容。您的版本提供的功能取决于您的软件包,操作系统等。有关更多信息,请阅读http://trac.osgeo.org/gdal/wiki/BuildHints


感谢您的gdal-config --formats。拼图的第一部分完成。
米罗2014年

1
gdal-config --formats仅适用于Unix系统。在Windows上,可以执行gdal_translate --formats或gdalwarp --formats以查看可用的内容。
米罗2014年

嗯,那才是真正的gdal-config,它为Unix编译器提供了有关库密度的建议。好的,在Windows中(cygwin或mingw除外)没有意义。但是gdalinfo --format $ DRIVERNAME会为您提供信息。
huckfinn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.