将gdal压缩的GeoTIFF与GeoServer一起使用

问题描述 投票:4回答:1

我有一个很大的GeoTIFF,我想通过GeoServer(v.2.11)中的WMS流式传输。图像的大小约为7GB,由非常大的高分辨率RGB图像组成。我已在JVM中允许足够的堆空间以显示图像。但是,我想压缩图像,以便在浏览时可以更快地响应,因此分配的内存更少。我遵循了一些建议here

我的策略是使用JPEG压缩压缩GeoTIFF,并将其用作GeoServer中的数据存储。但是,这似乎不起作用。这是我用来翻译图像的gdal命令:

gdal_translate -of GTiff -co "BIGTIFF=YES" -co "COMPRESS=JPEG"  -co "TILED=YES" -co "BLOCKXSIZE=512" -co "BLOCKYSIZE=512" -a_srs "EPSG:3057" D:\raster\image.tif 
D:\raster\image_translate.tif

使用openlayers预览图像时,我什么也没有,只有空白底图。 GeoServer的日志告诉我投影中的某些东西变坏了

2017-06-09 13:16:47,551 INFO [geoserver.wms] - 
Request: getServiceInfo
2017-06-09 13:16:47,561 WARN [lite.gridcoverage2d] - Could not reduce the grid geometry inside the valid area bounds: ReferencedEnvelope[-1.7976931348623157E308 : 1.7976931348623157E308, -85.0 : 85.0]
Grid geometry isGridGeometry2D[GeneralGridEnvelope[0..357, 0..357], PARAM_MT["Affine", 
  PARAMETER["num_row", 3], 
  PARAMETER["num_col", 3], 
  PARAMETER["elt_0_0", 0.7353351955307262], 
  PARAMETER["elt_0_2", 584219.1848475977], 
  PARAMETER["elt_1_1", -0.7353351955307262], 
  PARAMETER["elt_1_2", 383937.61122240225]]]
2017-06-09 13:16:47,566 ERROR [geoserver.ows] - 
org.geoserver.platform.ServiceException: Error rendering coverage on the fast path

然后我尝试将另一种压缩策略与GDAL配合使用,即“ DEFLATE”

gdal_translate -of GTiff -co COMPRESS=DEFLATE -co PREDICTOR=2 -co ZLEVEL=9 -co "BIGTIFF=YES" -a_srs "EPSG:3057"  D:\raster\image.tif D:\raster\image_translate2.tif
在openlayers中预览时,

起作用的。这是GeoServer日志:

2017-06-09 13:28:27,137 INFO [geoserver.wms] - 
Request: getServiceInfo
2017-06-09 13:28:27,146 WARN [lite.gridcoverage2d] - Could not reduce the grid geometry inside the valid area bounds: ReferencedEnvelope[-1.7976931348623157E308 : 1.7976931348623157E308, -85.0 : 85.0]
Grid geometry isGridGeometry2D[GeneralGridEnvelope[0..357, 0..357], PARAM_MT["Affine", 
  PARAMETER["num_row", 3], 
  PARAMETER["num_col", 3], 
  PARAMETER["elt_0_0", 0.7353351955307262], 
  PARAMETER["elt_0_2", 584219.1848475977], 
  PARAMETER["elt_1_1", -0.7353351955307262], 
  PARAMETER["elt_1_2", 383937.61122240225]]]
2017-06-09 13:28:27,231 INFO [geoserver.wms] - 
Request: getMap

我也尝试过使用JPEG压缩并且不进行平铺来执行gdal_translate,并且我在GeoServer日志中也遇到了错误,并且openlayers预览什么也没有显示。

所以我的问题是,压缩要在WMS中使用的GeoTIFF文件的最佳策略是什么?目前,似乎DEFLATE是唯一的工作方式,但是压缩并不是最佳方法。 任何人都能够成功将JPEG压缩的GeoTIFF上传到Geoserver吗?

gdal geoserver image-compression wms geotiff
1个回答
0
投票

如果对我有帮助,如下所示。

[首先,我将光栅切成较小的图块,大小并不重要,对我来说,通常是256x256、512x512或1024x124。

我使用从gdal2tiles.py到我自己的本地C#应用程序的许多不同程序。

重要的是,这些瓷砖是正方形的。

一旦在文件夹中放置了图块,就可以使用gdaltindex

[这会为每个图块创建一个带有一个正方形的shapefile,正确地进行了地理定位(假设您的栅格是)以及每个图块的名称,我通常告诉gdaltindex将绝对路径写入shapefile。

然后我将该形状称为mapserver中的图块层,我不能说geoserver是否会接受基于形状的图块索引,但是由于gdal可以使它们和其他基于WMS的服务器可用的开源(mapserver)可以使用它们,那么如果geoserver无法使用它们,我将感到非常惊讶。

© www.soinside.com 2019 - 2024. All rights reserved.