使用openlayers加载geoserver发布的arcgis瓦片

openlayers版本:6.5

geoserver版本:2.18.0

1. geoserver发布arcgis瓦片

·首先去maven上面找最新的gwc-arcgiscache

https://mvnrepository.com/artifact/org.geowebcache/gwc-arcgiscache/1.19.1

·把这个jar包下载下来放到目录geoserver/WEB-INF/lib下面

·geoserver/WEB-INF/lib/gs-gwc-2.18.0.jar解压。

·修改gs-gwc-2.18.0/geowebcache-servlet.xml

  添加以下代码

<import resource="geowebcache-arcgiscache-context.xml"/>

·修改gs-gwc-2.18.0/geowebcache-core-context.xml

  添加以下代码

<bean id="gwcArcGISCacheGridsetConfiguration" class="org.geowebcache.arcgis.layer.ArcGISCacheGridsetConfiguration" />

·重新把解压并修改完代码的目录打包回jar包,替换原来的jar包。

·在这里可以看到

2. 发布arcgis瓦片

·将瓦片目录test拷贝到数据目录:data_dir/gwc/下面

·瓦片目录应该包含以下文件或文件夹

        _alllayers conf.cdi conf.xml

·修改geoserver/data/gwc/geowebcache.xml

  添加如下配置

<arcgisLayer>
    <name>test</name>
    <tilingScheme>/geoserver/data_dir/gwc/test/conf.xml</tilingScheme>
    <tileCachePath>/geoserver/data_dir/gwc/test/_alllayers</tileCachePath>
    <hexZoom>false</hexZoom>
</arcgisLayer>

·保存后重启geoserver即可在刚才页面预览瓦片数据了。

·此时瓦片发布出的服务为wmts服务。

3. openlayes加载geoserver发布的wmts服务

·参考arcgis瓦片配置

·extent取自cong.cdi 的 EnvelopeN

·如果不配置extent限制瓦片范围的话,openlayers会默认全球范围内有数据,在浏览地图时发出很多无效的瓦片请求,甚至影响瓦片的加载速度。

·加载瓦片时需要注意的是,如果要匹配瓦片的自定义分辨率,需要设置tileGrid。完整代码如下

let projection = ol.proj.get('EPSG:3857');
        let resolutions = [
            16.000031750063503, 
            8.000015875031751,
            4.000007937515876,
            2.00000529167725,
            1.000002645838625,
            0.5000635001270003,
            0.25003175006350015
        ];
        let matrixIds = [
            "EPSG:3857_test:"+0,
            "EPSG:3857_test:"+1,
            "EPSG:3857_test:"+2,
            "EPSG:3857_test:"+3,
            "EPSG:3857_test:"+4,
            "EPSG:3857_test:"+5,
            "EPSG:3857_test:"+6
        ];
        let origin=[-5120900, 9998100];
        let layerExtent=[12622093.239879629, 2614535.6303767636, 12660720.220221946, 2638689.9684551316];
        let wmtsTileGrid = new ol.tilegrid.WMTS({
            origin: origin,
            resolutions: resolutions,
            matrixIds: matrixIds
        });
        // WMTS数据源与地图
        let wmtsSource = new ol.source.WMTS({
            url: "http://domain/geoserver/gwc/service/wmts",
            layer: "test",
            matrixSet: 'EPSG:3857_test',
            format: 'image/png',
            projection: projection,
            // 投影坐标系
            tileGrid: wmtsTileGrid
        });
        let wmtsLayer = new ol.layer.Tile({
            source: wmtsSource,
            extent:layerExtent
        });

宝剑锋从磨砺出,梅花香自苦寒来.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengbo_eva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值