写在前面的话:
用geoserver有一段时间了,也有一些心得,越来越觉得geoserver分类与做的事情刚刚好(一个恰到好处的工具比一堆杂乱的工具堆起来看似强大的软件要好的多),也用过超图,同样也用过一段时间的arcgis,gesoserver给人的感觉就是瑞士军刀,做的东西不多,但是每一项都非常有用,又有各种插件扩展,二维地图基本适用,给人很完整很舒服的感觉。
geoserver 把所有数据都放到数据库中
数据库数据例如:postgersql
栅格数据:img,tiff等文件都属于geoserver数据库
其他数据:wms,wmts远程服务
明确几点:
不论是发布postgresql还是img等数据服务默认的都只有wfs和wms两种服务,想要制作切片需要单独操作
发布服务
所有图层操作都在这里
发布服务的流程:
工作区--添加工作区
数据存储--添加数据存储--新建数据源
图层--添加新的资源--选择数据源--选择需要发布的数据
将服务进行切片
所有切片服务都在这里
title layers 图层
caching defaults 默认切片规则设置
gridsets 所有的切片规则存放地
disk quota 磁盘设置(暂时没用到过)
blobStore (也没用到过。。。)
切片发布流程:
进入图层展示页面(title layers)--进入图层发布页面(点击seed/Truncate )
三点注意:
1.切片规则自带了一些,如果需要自定义得自己去兴建切片规则
2.一定要设置切图范围,不然就是全球切
3.切图完成后页面并不会有相关提示,但是可以再geoserver日志控制台看到相关提示
访问服务
我们切好了图就可以访问wmts服务了,对应的服务地址信息可以下面的页面找到
http://localhost:8010/geoserver/gwc/
对应的服务能力地址
http://localhost:8010/geoserver/gwc/service/wmts?REQUEST=getcapabilities
http://localhost:8010/geoserver/wms?request=getCapabilities
http://localhost:8010/geoserver/gwc/service/tms/1.0.0
openlayer代码加载例子:
wmts
export function getImgWMTSLayerByCapabilities(url,layerName,matrixSet){
var layer = new TileLayer();
console.log(url);
Vue.axios.get(url)
.then(function(response) {
return response.data;
})
.then(function(text) {
var result = new WMTSCapabilities().read(text);
var options = optionsFromCapabilities(result, {
layer: layerName,// "cite:xingzhuangimg",
matrixSet:matrixSet,// "EPSG:4326"
});
var wtms = new WMTS(options);
setSourceTileLoadFunction(wtms);
layer.setSource(wtms);
})
layer.set("layerName",layerName);
return layer;
}
wms
export function getImageWMS(data) {
return new ImageLayer({
source: new ImageWMS({
url: data.url, //wms 请求地址
params: data.params, // {'LAYERS': 'ne:ne'}, 工作空间加图层名称
serverType: 'geoserver',
crossOrigin: 'anonymous', //跨域设置
})
});
}
tms
export function getTMSlayer(url){
return new TileLayer({
source: new XYZ({
url: "http://localhost:8010/geoserver/gwc/service/tms/1.0.0/cite%3Axingzhuangimg@GoogleCRS84Quad/{z}/{x}/{-y}.png"
projection: 'EPSG:4326'
}),
})
}