使用geoserver发布超大TIF文件过程
尝试直接发布图层
由于冤种客户给的tif文件太大了,有11.4G,直接使用geoserver发布图层会发现每次加载的时候,等待时间会特别长,基本没有使用体验。所以去查找看看有没有办法将文件进行切片处理,再进行发布。
FWTools工具的下载和使用
下载地址:http://fwtools.maptools.org/ 。这里我安装的是windows版
按自己安装软件的习惯进行安装。这个我们使用的这个功能需要用到python,我电脑安装的是python2。
使用python3会报错
TypeError: 'float' object cannot be interpreted as an integel
主要原因是:
python2和python3中运算符的区别,python2中的/等价于python3的//,在python3中,//表示取整除 - 返回商的整数部分 (向下取整)。
我们要用的工具使用的是python2的写法。
fwtools247版本有一个bug,需要我们去 软件安装主目录/bin/gdal_retile.py文件中查找第273行 end=’ ‘,并将end=’ '去掉。修改成如下图。
尝试使用命令 python.exe F:\FWTools2.4.7\bin\gdal_retile.py -v -r bilinear -levels 10 -ps 8000 8000 -co "TILED=YES" -co COMPRESS=JPEG -targetDir F:\geoserver-2.21.2-bin\data_dir\data\arcIn F:\geoserver-2.21.2-bin\data_dir\data\arcIn\hhg-0528-3857.tif
来进行切片的操作。
记得将 F:FWTools2.4.7\ 换成你自己的软件安装路径
一些基础参数的解释:
- -level 10 代表分级,我的原始文件过大所以我调高了一些。
- -ps 8000 8000 代表切片大小为 8000*8000
- COMPRESS JPEG 代表按照jpeg方式压缩
- -targetDir F:\geo… 表示 在哪里存放切片后的文件
- F:\geoserver-2.21.2-bin\data_dir\data\arcIn\hhg-0528-3857.tif 最后的文件表示要将谁进行切片
在运行命令后开始的时候,我遇到了无法引入gdal插件的报错。我们可以去https://www.lfd.uci.edu/~gohlke/pythonlibs/
这里下载gdal包来进行安装。
主要要与自己的python版本匹配。我的python版本是2.7.16。所以我选择的是下图中标出的文件。
然后使用pip install GDAL‑2.2.4‑cp27‑cp27m‑win_amd64.whl 来进行安装。之后再运行命令就可以了。
再之后会是一个漫长的等待过程,等待命令行输出FINISHED 。
geoserver扩展ImagePyramid安装
https://geoserver.org/release/2.21.2/
在上边的网址下载ImagePyramid扩展。注意链接后边的/2.21.2要与你当前的geoserver一致。
下载完成后将zip文件解压至F:\geoserver-2.21.2-bin\webapps\geoserver\WEB-INF\lib 目录下。重启geoserver服务。在添加数据源界面就可以看到ImagePyramid选项。
切片后发布
添加栅格数据源,链接参数输入file:data/pyramid。file:是固定的,data/pyamid 是相对于geoserver主目录下/data_dir 文件夹的相对路径。
我的切片后数据就放在了 geoserver主目录/data_dir/data/pyramid 下边。
发布新图层,点击新建以后,选择刚才新加的储存仓库,然后点击发布。
这里有两个基本的操作。第一个是选择你要用的坐标参考系统,第二个是从数据中计算边框。之后点击保存
点击下图位置,就可以进行图层预览了。
发现图层响应速度正常了。至此结束。