如果要做矢量切片+ ceisum架构的话,arcgis是指望不上了,这时候就要用geoserver作为替代品。
geoserver相比较arcgis是更偏向后端的,甚至是难用的,连基本的中文支持都很僵硬,毕竟是开源的产品。
这里把工作中接触到的相关内容都列举出来,仅作一个记录,预防中年痴呆。
1.安装
基本没啥好说的,网上都是教程。geoserver有两种选择,爱折腾的会点后端的选war包安装,不作为服务器用作实际生产环境的就下客户端,但两者的前提都是java环境。
war包
http://sourceforge.net/projects/geoserver/files/GeoServer/2.18.1/geoserver-2.18.1-war.zip
要说一句的是,用tomcat启动服务时要给用户对该文件夹完全的操作权限,否则文件读写会出现问题。
客户端
https://github.com/geoserver/geoserver/archive/2.18.1.zip
2.跨域
nginx转发并不能解决跨域的问题,应该是geoserver本身内部逻辑造成的,我自己用的是这里的解决方案,照葫芦画瓢就行。
Geoserver 2.18.0 解决跨域www.cnblogs.com3.发布服务
情景:轻度使用,发布一些shp文件作为切片资源从前端获取
1.先建个工作区,没什么好说的

2.再建个数据存储,创建geoserver与shp文件之间的索引

3.再再图层标签中添加图层

4.样式
对导入的shp做个样式的控制,否则会有两个问题,
一个是切片不带label,
第二个是不能控制带label的显示层级,在小尺度下显得凌乱

geoserver自带一个tiger_roads的样式,
copy下来做两个地方的修改

一个是label的属性名称要对应上
<ogc:PropertyName>NAME</ogc:PropertyName>
另一个是控制label的显示层级
<MaxScaleDenominator>32000</MaxScaleDenominator>
当然这不是全部,花两天时间系统地了解下吧
GeoServer 2.18.x User Manualdocs.geoserver.org5.切片

进入后,
-type of operation: ressed //重新切片
-grid set // 切片方案,自己感觉900913出现最后加载不上去的问题比较少
styles:自定义style,但要设置过,否则列表中不会存在选项
设置过程:



6.cesium加载
geoserver结合cesium最离谱的地方就在这个加载,不得不否认geoserver在ol和leaflet这些轻量级gis框架上的支持确实不赖,但在cesium上是真的离谱,以至于现在还没实现对geojson格式的加载。
先贴实现的代码
tms
viewer.scene.imageryLayers.addImageryProvider(
new Cesium.UrlTemplateImageryProvider({
url: 'http://localhost:8080/geoserver/gwc/service/tms/1.0.0/tms%3Ariver@EPSG%3A900913@png/{z}/{x}/{reverseY}.png'
tilingScheme: new Cesium.GeographicTilingScheme()
})
)
其中这一串http://localhost:8080/geoserver/gwc/service/tms/1.0.0/tms%3Ariver@EPSG%3A900913@png
是在这里


wtms
var tileScheme = new Cesium.GeographicTilingScheme();
var wmtsProvider = new Cesium.WebMapTileServiceImageryProvider({
url: "http://localhost:8080/geoserver/gwc/service/wmts?",
layer: "tiger:tiger_roads",
style: '',
format: 'image/png',
tileMatrixSetID: 'EPSG:4326',
tilingScheme: tileScheme,
tileMatrixLabels: [
'EPSG:4326:0', 'EPSG:4326:1', 'EPSG:4326:2', 'EPSG:4326:3', 'EPSG:4326:4', 'EPSG:4326:5', 'EPSG:4326:6', 'EPSG:4326:7', 'EPSG:4326:8', 'EPSG:4326:9', 'EPSG:4326:10', 'EPSG:4326:11', 'EPSG:4326:12',
'EPSG:4326:13', 'EPSG:4326:14', 'EPSG:4326:15', 'EPSG:4326:16', 'EPSG:4326:17', 'EPSG:4326:18', 'EPSG:4326:19', 'EPSG:4326:20', 'EPSG:4326:21', 'EPSG:4326:22', 'EPSG:4326:23'
],
minimumLevel: 0,
maximumLevel: 19,
tileWidth: 256,
tileHeight: 256
});
需要注意的点是,请求之前记得把切片切好,要不然可能加载不出来,或者加载不了自己想要的样式。
全文结束。。
ps:谁有方法把geojson格式加载出来就是我大哥