1.1WMS
1.1.1WMS地图服务(OpenGIS Web Map Service),将地图数据发布为WEB服务,提供网络地图图片。
1.1.2WMTS,访问已经切成瓦片分层的数据
1.2WFS要素服务(Web Feature Service)目的是提供对矢量地图的查询、编译等操作。
("矢量地图":使用直线和曲线来描述图形)
1.3WCS地理覆盖服务(Web Coverage Service),目标是发布原始栅格数据。
("栅格数据":就是将空间分割成有规律的网格,每一个网格称为一个单元,并在各单元上赋予相应的属性值来表示实体的一种数据形式)
1.4只浏览,不需做编辑、查询、分析的图层,比如行政区划、河流、道路图层,切片较好, 切片后显示效率高,不切片的话每次加载或图像范围发生变化都需要重新渲染地图;

1.5WMS请求规范
1.5.1GetCapabitities(返回服务级元数据)服务名服务关键字类信息,对WMS服务请求参数以及输出格式的描述,图层layer(格式为namespace:layer)的列表等
service 服务名 WMS
version 服务版本 1.0.0,1.1.0,1.1.1,1.3.0选一
request 请求名 GetCapabitities
1.5.2GetMap(获取影像)
service 服务名 WMS
version 服务版本 1.0.0,1.1.0,1.1.1,1.3.0选一
request 请求名 GetCapabitities
layers 图层名
styles 请求的风格文件名 不填使用服务端默认
srs 坐标系,常用EPSG:4326
bbox 请求的map的边界的大小
width map输出宽像素大小
height map输出高像素大小
format map图片输出格式
1.5.3GetFeatureInfo 用于以多种格式(如 HTML、XML 和纯文本)文件形式返回地图中所查询要素的属性。
1.6WFS请求规范
1.6.1GetCapabilities操作 返回描述 WFS 服务元数据的XML文档, 服务元数据描述了该 WFS服务可以提供的地理要素类型以及针对每个要素类型的操作;
1.6.2DescribeFeatureType操作 返回WFS能够提供的地理要素类型的GML应用模式描述文档;
1.6.3GetFeature操作 根据用户查询条件,从WFS中获取地理要素,用户可以设定空间和非空间查询条件;
1.6.4Transaction 操作 为事务请求提供服务。用于描述地理数据变化的操作方法, 如创建、 修改和删除地理要素的操作;
1.6.5LockFeature操作 WFS可以在一个事务处理期间锁定一个地理要素类型中的一个或多个地理要素实例, 这使 WFS具有支持可序列化事务的能力;
1.6.6GetGmlObject 操作 一个 WFS 服务可能通过追踪Xlinks 来获取客户请求所需的构成地理要素的子要素实例。
1.7WCS请求规范
1.7.1GetCapabilities操作返回描述服务和数据集的XML文档。
1.7.2GetCoverage操作是在GetCapabilities确定什么样的查询可以执行、什么样的数据能够获取之后执行的,它使用通用的覆盖格式返回地理位置的值或属性。
1.7.3DescribeCoverageType操作允许客户端请求由具体的WCS服务器提供的任一覆盖层的完全描述。

动态出图可以使用WMS中的GetMap请求。
矢量查询可以使用WFS中的GetFeature请求。
要素编辑可以使用WFS中的Transaction请求。

2.管理平台

2.1管理平台数据部分

2.1.1工作区
工作区类似我们工作空间,概念可以类比我们进行其他开发时所配置的项目根目录,用于对某一项具体的工作进行统一的管理。对应于GeoServer所用于的web服务,也可以理解为是一个web网站的根目录。

2.1.2数据存储
数据存储用于管理GeoServer的数据存储,我们可以将其理解为为Web服务提供数据支持的“数据库”。

2.1.2.2数据配置
(1)设置数据表的字符集时应该和源数据一致,如果不知道源数据的字符集,考虑选择UTF-8
(2)本机SRS是指地图数据本身的坐标参考系统,这是由地图数据本身的属性决定的,也是不可修改的。GeoServer会自动从数据文件中读取这一信息。
相对应的Native Bounding Box则是根据本机SRS自动计算出来的边框,我们点击从数据中计算就能计算出来边框范围。
定义SRS是指我们自己想要定义显示地图数据的坐标参考系统。强制申明会让自定义SRS覆盖本机SRS。
对于国内用户来说,常用的坐标系统可以通过键入4326进行查找选择。选择确定后,通过点击“compute from nativ bounds”可以计算出在这个坐标系统下的边界。

2.1.2.3发布配置
(1)
http缓存响应头 - 如果勾选,GeoServer将不会在指定的缓存时间内请求相同tile。
(2)
Queryable - 控制图层是否可以通过WMS GetFeatureInfo请求进行查询。
(3)
Default style - 当用户没有在GetMap请求中指定样式时使用的默认样式。
Selected Styles - 用户可在GetMap中选择的样式
(4)
Default rendering buffer - GetMap / GetFeatureInfo请求中的默认缓冲大小。

2.1.3图层和图层组
图层和图层组都是用来发布和管理新图层,并可以使用组的形式来进行组织和管理。

2.1.4styles
styles是数据显示的样式,在图层发布指定默认以及可用样式

2.2管理平台服务部分

2.2.1WCS用于管理元数据信息和WCS、WFS、WMS通用的配置信息,如数据请求读写最大值等。
2.2.2WFS用于配置和管理Feature Data、服务级别以及GML输出等。
2.2.3WMS用于管理和配置栅格数据和SVG选项以及切片地图压缩和分级情况。

2.3管理平台tile cache部分
2.3.1在tilte layers中选择Seed,裁剪瓦片的级别后,在Geoserver的根目录的\geoserver\data\gwc\中会保存瓦片数据,如果没有数据,尝试将\geoserver\WEB-INF\web.xml中GEOSERVER_DATA_DIR的参数设为\geoserver\data的全路径数据目录,一般非安装版的geoserver可能出现此问题。

GEOSERVER_DATA_DIR
D:\tomcat\apache-tomcat-8.0.23\webapps\geoserver\data

2.3.2在gridset中添加各缩放等级的分片策略
(关于缓存:Geowebcache服务器拦截来至客户端的请求,判断本次请求的数据是否已经被缓存。如果请求数据已被缓存,则将这些缓存图片直接渲染至客户端;如果请求数据没有被缓存,则发送请求至WMS Server(提供网络地图服务的服务器如geoserver),由服务器处理请求数据,并返回给Geowebcache服务器,Geowebcache服务器进过渲染及缓存数据图片后绘制到客户端。)

5.style编写部分
5.1一些简单标记的意义,详细内容请参考sld规范文档

样式名称

要素样式

规则

过滤器

用来定义在两个属性值之间的过滤器

用来定义在小于某个属性值的过滤器

用来定义在大于某个属性值的过滤器

属性字段名

属性值

点标记器

线标记器

面标记器
5.2 style文件中包含中文应该把xml encoding改为"GB2312",否则会出现问题

6.geoserver的默认为不允许跨域访问。在geoserver项目目录的web.xml中添加(在其他filter之前)

CorsFilter
org.apache.catalina.filters.CorsFilter


CorsFilter
/*

7.geoserver发布tif高程数据
7.1数据源预处理: 需要先将16位的tiff转换为8位tiff
7.2下载Cesium1.4.4
7.3使用Cesiume 加载GeoserverTerrainProviderkai开源插件
var terrainProvider = new Cesium.GeoserverTerrainProvider({
heightMapWidth: 65, //其他值可能出现地形变形
heightMapHeight: 65, //其他值可能出现地形变形
url: 'http://127.0.0.1:8080/geoserver/map/wms', //wms服s务地址
layerName: 'ASTGTM2_N30E100_dem', //图层
maxLevel: 20,//最大切片等级
formatImage: {format : "image/png",extension: "png"}, //建议png,使用jpeg会压缩图片导致出现地形异常
styleName: 'generic', //使用通常的栅格数据风格
waterMask: false, //是否加载水纹数据
});

8.geoserver切割tif瓦片
使用geoserver自带的切片工具会导致瓦片之间会错位
需要使用geotiles工具,在layer Preview界面以png格式打开tif图层,复制url到geotiles中进行切割
将切割的瓦片放入"gwc/图层名/"文件夹下

9.其他
使用 gdal将tif切成小块tif
安装python3.6
python -m pip install wheel
下载GDAL-2.2.4-cp36-cp36m-win_amd64.whl
python -m pip install 路径\GDAL-2.2.4-cp36-cp36m-win_amd64.whl
gdal_retile.py -v -r bilinear -levels 4 -ps 256 256 -co "TILED=YES" -co "COMPRESS=JPEG" -targetDir E:\data\tiles E:\data\map\World1.tif

10.相关有价值的参考网站
10.1GeoServer中WMS、WFS的请求规范
https://www.cnblogs.com/naaoveGIS/p/5508882.html
10.2WFS、WMS、WCS的测试用例
https://wenku.baidu.com/view/8e86554d852458fb770b5653.html
10.3Cesium请求地形数据插件使用说明
https://github.com/kaktus40/Cesium-GeoserverTerrainProvider

11.GeoWebServer目录命名规则
第一层:x x为级数
第二层:x_y x范围为 0 到 2的第一层级级数加一除以2取整的次方再减一,y相同
第三层:x_y x范围为 2的第一层级级数除以2取整加1的次方乘以第二层x 到 2的第一层级数除以2取整加2的次方乘以第二层x,y相同
第二层是一层索引,第三层存放的是实际瓦片

12.geoserver影像发布
支持geotiff,geojpg,geopng,geobmp,img,mbtiles等格式影像的发布
geotiff有单独的数据源支持
数据源WorldImager支持所有geo格式图片发布,图片和描述图片坐标系和相对地理位置的配置文件在同一个文件夹下,这个图片就是满足geo格式的图片,使用地图软件导出的geo格式图片需要检查配置文件是否正确
还可以通过安装插件支持例如img,mbtiles等格式的影像发布

13.关于mbtiles
mbtils格式文件原理:利用一个嵌入式类型数据库sqlite数据表里字段来存储图片的byte,使用时通过查询数据表就可以读取图片
mbtils资料:优点是大大减少存储量,缺点是大量的查询会拖慢服务器,较适合离线地图使用。
geoserver使用水经注生成的mbtiles导入时会报错
几乎没有案例,但是官方有导入导出mbtiles的python工具

14.MBtiles格式转换
python setup.py install安装mbutil
使用mbutil将瓦片目录转换为.mbtiles格式文件(geoserver不支持jpg格式瓦片转换的mbtiles,检测瓦片的文件头是否为png,后戳为png文件头也可能为jpg)
生成mbtiles文件后发布即访问