GeoServer:缓存在重新投影时失败
GeoServer: caching fails on reprojection
我想在 Oracle DBMS 中发布数据。
由于数据的SRS(即EPSG:3093)与客户端想要的SRS(即EPSG:5179)不同,必须进行转换
所以,我在Edit Layer页面上设置图层属性如下:
- 本地 SRS:EPSG:3093(东京/UTM 区 52N)
- 声明的 SRS:EPSG:5179(韩国 2000/统一 CS)
- SRS 处理:将本机重新投影到已声明
问题现在开始。
当我为 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 同步值。或者也许我只是打破了一些东西。我只能猜测...现在更改该值后,缓存有效。
我想在 Oracle DBMS 中发布数据。
由于数据的SRS(即EPSG:3093)与客户端想要的SRS(即EPSG:5179)不同,必须进行转换
所以,我在Edit Layer页面上设置图层属性如下:
- 本地 SRS:EPSG:3093(东京/UTM 区 52N)
- 声明的 SRS:EPSG:5179(韩国 2000/统一 CS)
- SRS 处理:将本机重新投影到已声明
问题现在开始。
当我为 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 同步值。或者也许我只是打破了一些东西。我只能猜测...现在更改该值后,缓存有效。