geoserver發佈wms服務和wmts服務,並在cesium上進行調用

最近的業務需求要求將一張tiff影像加載到cesium的地形上,網上查閱了很多資料,有很多的方法。結合我的業務需求需要使用開源軟件,所以我考慮用geoserver發佈wms以及wmts服務,然後cesium來調用。
首先我需要在geoserver上將tiff影像發佈爲wms服務,進而將wms服務通過切片生成wmts服務。網上給了很多解決方案,發現都是搬的GIS之家的文章,但是這篇文章寫的真的不是太清楚。
鏈接:https://www.cnblogs.com/giserhome/p/7774548.html
下面我就我的經驗進行詳細的介紹。
1.首先是根據tiff發佈wms服務。
第一步:進入geoserver後,點擊工作區,然後選擇“添加新的工作區”
在這裏插入圖片描述
新建工作區:
在這裏插入圖片描述
新建完成
在這裏插入圖片描述
第二步:添加數據存儲,導入我們要發佈的tiff影像
在這裏插入圖片描述
選擇GeoTIFF數據源
在這裏插入圖片描述
在這裏插入圖片描述
第三步:發佈數據
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
第四步:預覽圖層及參數獲取
在這裏插入圖片描述
在layer preview中找到發佈的圖層,選擇用openlayes進行預覽。
進入後,打開f12,刷新看network下的請求,隨意點擊一個wms請求,查看詳細信息。

在這裏插入圖片描述
在這裏插入圖片描述
第五步:cesium加載wms服務。
記住上一步幾個參數後,在cesium中用如下代碼調用:

var provider = new Cesium.WebMapServiceImageryProvider({ 
              url: 'http://112.***.**.**2:8080/geoserver/gwc/service/wms',   //第一個url參數
              layers: 'kj:kjtiff2',   //參數集合2 ,這裏填充
              parameters: { 
                  service : 'WMS', 
                  format: 'image/png', 
                  transparent: true
              } 
          }); 
     viewer.imageryLayers.addImageryProvider(provider); 

調用結果:
在這裏插入圖片描述
我自己的亞太地區tiff影像就加上去了,其他地區的用了cesium默認的影像。
a------------------------------------------------------------

發佈wmts服務

在“Tile layer”下,找到發佈的切片選項。選擇一種座標系比例尺進行預覽。在這裏插入圖片描述
預覽wmts服務,表示wtms服務可用。不過此時看到的瓦片服務是geowebcache動態生成的,並沒有生產全套的瓦片集合。
在這裏插入圖片描述
在想要生產瓦片的條目上點擊“seed/Truncate”,意爲以種子生產瓦片。
在這裏插入圖片描述
進入切圖配置頁面,對當前選擇的地圖服務進行瓦片生產參數的配置。
在這裏插入圖片描述
點擊提交後,會跳轉到對應的生產瓦片進程頁面。如果沒有出現這個,要不是瓦片生產數過少,瞬間完成了,要不就是geoserver報錯了,如果你是在tomcat中部署的,請查看Catalina.out檢查日誌信息。
在這裏插入圖片描述
生產完成後,在geoserver數據目錄的gwc目錄下,找到對應服務命名的文件夾,查看生成的瓦片。
在這裏插入圖片描述
至此,wmts服務的瓦片生產已經完成了。
另外,在配置生產瓦片的時候有一個切片策略的參數,上面是用了默認的EPSG:900913。如果你需要,可以自己設置切圖策略(自定義切圖比例尺)
在這裏插入圖片描述
打開gridset,可以看到已係統已經內置了五種切片策略。點擊Create a copy,配置自己的切片策略。 在這裏插入圖片描述
在這裏插入圖片描述
配置完成並保存後,在Caching defaults中,將你剛剛配置的新切片策略加入默認切片集,下次再切圖就可以選擇你自定義的切片策略了。在這裏插入圖片描述
a------------------------------------------------------------------------------------------------
wmts瓦片生產完了,如何在前端進行調用?

使用cesium加載wmts服務

要加載發佈圖層的切片地圖服務,我們首先要找到幾個重要參數:
工作空間:圖層名稱
在這裏插入圖片描述
服務地址:

http://192.168.213.202:8080/geoserver/gwc/service/wmts/rest/sichuan:sv1-03_20181210_l2a0000808046_1103190005003_011/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format=image/png

獲取方式:
在這裏插入圖片描述
打開wmts能力文檔後,搜索對應的工作空間名稱和圖層名
在這裏插入圖片描述
向下查找找到對應的服務鏈接
在這裏插入圖片描述
另外還需要找到style,座標系等參數,我這裏的服務沒有設置那麼多,用默認值就可以了。
選擇獲取tile對象的ResourceURL,style是圖層樣式,TileMatrixSet是採用瓦片座標系格式,TileMatrix(url需要將{TileMatrix}改爲{TileMatrixSet}:{TileMatrix})代表該座標系下的縮放級別,TileRow和TileCol代表着瓦片行列座標。

var wmtsImageryProvider = new Cesium.WebMapTileServiceImageryProvider({
            url: 'http:///192.168.213.201:9090/geoserver/gwc/service/wmts/rest/sichuan:sv1-03_20181210_l2a0000808046_1103190005003_011/{style}/{TileMatrixSet}/{TileMatrixSet}:{TileMatrix}/{TileRow}/{TileCol}?format=image/png',
            layer: 'sichuan:sv1-03_20181210_l2a0000808046_1103190005003_011',
            style: '',
            format: 'image/png',
            tileMatrixSetID: 'EPSG:900913'      //一般使用EPSG:3857座標系
        });
 viewer.imageryLayers.addImageryProvider(wmtsImageryProvider);

效果
在這裏插入圖片描述
打開控制檯,查看請求,可以看到每次請求發送的具體參數,其中一個例子是:

http://192.168.213.201:9090/geoserver/gwc/service/wmts/rest/sichuan:sv1-03_20181210_l2a0000808046_1103190005003_011//EPSG%3A900913/EPSG%3A900913:13/3199/6698?format=image%2Fpng

這個鏈接的意思就是訪問這個wmts瓦片服務在EPSG:900913座標系下第13級,3199行,6698列的一個瓦片數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章