我想在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。
我幾乎可以肯定,我的數據是在本地投影和重投影正在工作,因爲數據在OpenLayers 3圖層上正確顯示。我將閱讀GeoWebCache源代碼(也許會放入一些日誌代碼),看看它爲什麼認爲這個tile出界了。 – zeodtr
我已經將源代碼從GridSubset.java跟蹤到GeoServerTileLayer.java,發現gwc-圖層圖層文件的內容具有錯誤的gridSubset範圍coords minY值。 (它太高了)我不知道爲什麼...因爲我使用Git管理gwc-layer圖層文件,可能某些文件日期不一致導致GeoServer同步這些值。或者,也許我只是打破了一些。我只能猜測......現在改變了這個值之後,緩存起作用了。謝謝。 – zeodtr