GeoServer在Windows环境下发布Tif为WMS失败:
GeoServer发布Tif为WMS
问题描述:
通过GeoServerManager在Windows环境下将Tif发布为WMS后,过程中没有任何异常,但是服务是失败的无法访问。但是在Linux环境下一切正常。以下是发布代码
GeoServerRESTManager manager = new GeoServerRESTManager(new URL(geoServerUrl), geoServerUser, geoServerPassword);
if (!manager.getReader().getWorkspaceNames().contains(workspace)) {
manager.getPublisher().createWorkspace(workspace);
}
boolean b = manager.getPublisher().publishGeoTIFF(workspace, "tif_"+param.getEpsg(), resourceName, file,
"EPSG:" + param.getEpsg(), GSResourceEncoder.ProjectionPolicy.FORCE_DECLARED, "光伏_可用区域");
发布成功后将Linux环境下GeoServer的相同样式复制到Windows,在获取WMTS时候出现异常。
400: Error searching max and min scale denominators for style '光伏_可用区域'.
原因分析:
WMS发布失败分析:
通过排除法,结合在Linux环境下发布正常,在Windows下文件本地文件路径格式为:E:\test\cd\test\1.tiff。判断为文件路径格式有误。
获取WMTS时候出现异常解决方案分析:
点击样式预览发现编码异常,Windows是GBK编码,Linux估计同事设置了UTF-8。
解决方案:
发布错误解决方案:
将 \ 符号替换成 / 再次发布后,一切正常。
File file = new File(param.getPath().replaceAll("\\\\", "/"));
获取WMTS时候出现异常解决方案:
把上图中的UTF-8修改为系统的编码,我此处设置为了GBK编码后,一切正常
总结:
这两个狗问题,搞了我大概三四个小时,特别是发布失败,最奇葩的是,我不改图层的任何参数,点一下保存,发布失败的图层居然就好了???
当时还以为是GeoServer版本有问题,把Linux服务器下的war包复制到我电脑上测试。搞了半天,全是无用功。上网查又查不到,写个博客给搬砖佬们排坑吧。