【问题标题】:GeoServer: caching fails on reprojectionGeoServer:重投影时缓存失败
【发布时间】:2015-10-08 08:05:49
【问题描述】:

我想在 Oracle DBMS 中发布数据。

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

所以,我在 Edit Layer 页面上设置了 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 List 页面上看到 EPEG:3093 的覆盖区域时,该区域似乎是错误的。 (它甚至不包括东京!)http://epsg.io/3093 显示正确的。

这是导致缓存问题的原因吗?

GeoWebCache 是否寻找 SRS 的覆盖范围并拒绝越界请求?

我的 GeoServer 版本是 2.7.1.1。

【问题讨论】:

    标签: geoserver


    【解决方案1】:

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

    然后缓存和 bbox 将工作。

    【讨论】:

    • 我几乎可以肯定我的数据在本机投影中并且重新投影正在工作,因为数据在 OpenLayers 3 层上正确显示。我会阅读 GeoWebCache 源代码(可能还会放一些日志代码),看看为什么它认为 tile 超出范围。
    • 我从 GridSubset.java 追踪到 GeoServerTileLayer.java 的源代码,发现 gwc-layers 图层文件的内容有错误的 gridSubset extent coords minY 值。 (太高了)我不知道为什么...由于我使用 Git 管理 gwc-layers 图层文件,可能某些文件日期不一致使 GeoServer 无法同步值。或者,也许我只是打破了一些东西。我只能猜测......现在在更改该值之后,缓存工作。谢谢。
    【解决方案2】:

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

    我不知道为什么...由于我使用 Git 管理 gwc-layers 图层文件,因此可能某些文件日期不一致使 GeoServer 无法同步值。或者,也许我只是打破了一些东西。我只能猜测...现在更改该值后,缓存就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      相关资源
      最近更新 更多