GeoServer:缓存在重新投影时失败

GeoServer: caching fails on reprojection

我想在 Oracle DBMS 中发布数据。

由于数据的SRS(即EPSG:3093)与客户端想要的SRS(即EPSG:5179)不同,必须进行转换

所以,我在Edit Layer页面上设置图层属性如下:

问题现在开始。

当我为 Native Bounding Box 单击“Compute from data”时,它在 Declared SRS 中显示结果坐标,没有 Native SRS。

这是正确的行为吗?由于它是“Native Bounding Box”,因此值应该在 Native SRS 中。

无论如何,当我为 Lat/Lon 边界框单击“从本机边界计算”时,它正确地从“声明的 SRS”转换而来。 也许那时在 Declared SRS 中显示 Native Bounding Box 是正确的。 (奇怪)

无论如何,客户端 (OpenLayers 3) 都能正确显示数据。

但是还有一个问题。

集成 GeoWebCache 拒绝缓存切片图像。

当日志记录设置为 VERBOSE_LOGGING 时,它会记录以下错误: org.geowebcache.grid.OutsideCoverageException: Coverage [minx,miny,maxx,maxy] is [0, 4097, 6143, 6143, 11], index [x,y,z] is [3101, 2791, 11]

由于缓存对不转换源数据的其他层正常工作(因为数据已经在 EPSG:5179 中),那一定是转换问题。或者另一个。

当我在GeoServer的Demos/SRS列表页面看到EPEG:3093的覆盖区域时,区域好像是错误的。 (它甚至不包括东京!)http://epsg.io/3093 显示正确的。

这是缓存问题的原因吗?

GeoWebCache是​​否查找SRS的覆盖范围,拒绝越界请求?

我的 GeoServer 版本是 2.7.1.1。

您应该将数据存储在本机投影中,因为当客户端在不同的投影中发出请求时,GeoServer 会自动重新投影数据。

然后缓存和 bbox 将起作用。

我追踪了从GridSubset.java到GeoServerTileLayer.java的源代码,发现gwc-layers图层文件的内容有错误的gridSubset extent coords minY值。 (太高了)

我不知道为什么...因为我使用 Git 管理 gwc-layers 层文件,也许一些文件日期不一致混淆了 GeoServer 同步值。或者也许我只是打破了一些东西。我只能猜测...现在更改该值后,缓存有效。