OpenLayers調用GeoServer發布的影像切片


  背景

  影像發布為WMS調用時會很慢。

  環境:Win7

     OpenLayers4.6.5

     Geoserver2.14.3

  解決方案

  考慮發布為TMS,然后用OpenLayers調用。

  步驟

  一.發布切片影像

  以tif影像為例,首先要將影像發布出來,發布的時候要把坐標系設置為“3857”,另外“Suggested Tile Size”設置為“256,256”

  

 

   新建/復制Gridsets文件。我們已知文件中有check按鈕是灰色的,因為這是GeoServer自帶的,不能刪除,我們可以直接copy系統自帶的文件,然后自己用,不過可以根據需要做一下修改

  

  系統自帶的是21級,但是不滿足我的需求,所以多加了幾個縮放級別到24級,點擊保存

  

 

 

 

  

 

  然后回到已發布的圖層文件,設置瓦片緩存

   

 

   此處圖片可以只設置png,如果多選會切多種格式的圖片;

  添加我們之前設置的Gridset,設置縮放級別。此處Gridset也可以多選,多選會根據多種切片規則來切,我們只選擇一種;

  點擊保存,啟動任務

  

   單擊“Tile Layers”,顯示切片圖層列表,找到要切片的圖層,單擊Seed/Truncate

  

 

   設置完成后單擊submit,如果級數很多耗時也會很多,等待就好了

   

 

   生成的切片文件默認目錄為“E:\Program Files (x86)\GeoServer 2.14.3\data_dir\gwc\圖層名稱”,可以點進去看看,由於我發布的影像范圍本來就很小,所以是從14以上才有的切片

  

 

   二.用openlayers調用切片服務

  找到調用地址,主頁里面

  

 

   

 

 

  核心代碼  

 1       var url2='http://x.x.x.x:8090/geoserver/gwc/service/tms/1.0.0/Demo%3APark@My_EPSG%3A4326@png/';
 2      
 3       var projectionXYZ=new ol.proj.get("EPSG:4326");
 4       var resolutions = [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 0.0006866455078125, 0.00034332275390625, 0.000171661376953125, 0.0000858306884765625, 0.00004291534423828125, 0.000021457672119140625, 0.000010728836059570312, 0.000005364418029785156, 0.000002682209014892578, 0.000001341104507446289, 6.705522537231445e-7, 3.3527612686157227e-7,0.0000001676380634,0.0000000838190317,0.0000000419095159];
 5       
 6       var testLayer = new ol.layer.Tile({
 7           // extent: [],
 8           source: new ol.source.XYZ({
 9             projection: projectionXYZ,
10             maxZoom: 24,
11             minZoom: 0,
12             tileGrid: ol.tilegrid.createXYZ({
13                     extent: projectionXYZ.getExtent()
14                 }),
15             tileGrid: new ol.tilegrid.TileGrid({
16               extent: ol.proj.get('EPSG:4326').getExtent(),
17               origin: [-180, -90],
18               resolutions:resolutions,
19               
20             }),
21             tileUrlFunction: function (tileCoord) {
22               projection:new ol.proj.get('EPSG:4326');
23               var z = tileCoord[0];
24               var x = tileCoord[1];
25               var y = tileCoord[2];
26               return url2 + z + '/' + x + '/' + y + '.png'
27             }
28           })
29         });
View Code

 

  參考

  geoserver發布切片影像地圖

  openlayer4 調用 geoserver的 tms 服務

  GEOServer-OpenLayer-矢量切片3:PBF格式格式展示(tms服務)

  OL4如何以TMS服務調用WMTS服務的緩存切片

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM