• 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.3data_dirgwc图层名称”,可以点进去看看,由于我发布的影像范围本来就很小,所以是从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服务的缓存切片

      

  • 相关阅读:
    JS和C#对Json的操作
    JS图形化插件利器组件系列 —— Gojs组件
    Android APK反编译 apktool使用教程
    UML系列图
    多线程学习 ---- 系列教程
    大型网站架构之系列
    经典算法题锦集
    基本算法系列15天速成
    居转户--相关信息
    使用C#创建Windows服务
  • 原文地址:https://www.cnblogs.com/youzi-xuchongyou/p/13129121.html
Copyright © 2020-2023  润新知