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 });
参考
openlayer4 调用 geoserver的 tms 服务
GEOServer-OpenLayer-矢量切片3:PBF格式格式展示(tms服务)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
2018-06-15 Python idle运行代码出现'ascii' codec can't encode characters in position 0-2