2015-09-14 103 views
2

我想在Oracle DBMS中發佈數據。GeoServer:重新投影時緩存失敗

由於數據的SRS(即EPSG:3093)與客戶需要的SRS(即EPSG:5179)不同,因此必須進行轉換。

所以,我給自己定的編輯圖層頁面上的圖層屬性如下:

  • 本土SRS:EPSG:3093(東京/ UTM區52N)
  • 申報SRS:EPSG:5179(韓國2000 /統一CS)
  • SRS處理:重新投影原產於宣佈

現在的問題開始。

當我單擊「從數據計算」爲原始邊界框時,它將在聲明的SRS中顯示結果座標,不顯示本地SRS。

這是正確的行爲?由於它是'Native Bounding Box',所以這些值應該在Native SRS中。

無論如何,當我點擊Lat/Lon Bounding Box的「從原始邊界計算」時,它會正確地從「已聲明的SRS」轉換。 也許在聲明的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。

回答

0

我已經將源代碼從GridSubset.java追蹤到GeoServerTileLayer.java,發現gwc-圖層圖層文件的內容錯誤的gridSubset範圍coords minY值。 (它太高了)

我不知道爲什麼......由於我使用Git管理gwc層圖層文件,因此可能某些文件日期不一致導致GeoServer同步這些值。或者,也許我只是打破了一些。我只能猜測......現在改變了這個值之後,緩存起作用了。

0

您應該將數據存儲在本機投影中,因爲當客戶端以不同的投影方式發出請求時,GeoServer會自動重新投影數據。

然後緩存和bbox將工作。

+0

我幾乎可以肯定,我的數據是在本地投影和重投影正在工作,因爲數據在OpenLayers 3圖層上正確顯示。我將閱讀GeoWebCache源代碼(也許會放入一些日誌代碼),看看它爲什麼認爲這個tile出界了。 – zeodtr

+0

我已經將源代碼從GridSubset.java跟蹤到GeoServerTileLayer.java,發現gwc-圖層圖層文件的內容具有錯誤的gridSubset範圍coords minY值。 (它太高了)我不知道爲什麼...因爲我使用Git管理gwc-layer圖層文件,可能某些文件日期不一致導致GeoServer同步這些值。或者,也許我只是打破了一些。我只能猜測......現在改變了這個值之後,緩存起作用了。謝謝。 – zeodtr