geoserver发布矢量切片服务理论与实战

geoserver发布矢量数据服务前几篇文章已经分享过了,但是在实际业务中,矢量数据shp文件有时候比较大,包含上百万完个点,发布完整的服务后,有时候,前端显示还是有点慢,毕竟是一次加载完成;而且前端需要不同的样式去渲染一个地图,而不需要事先在服务器端(比如GeoServer)进行预先的样式配置;基于此,我们可以把矢量数据进行切片,前端频繁调用,每次获取少量数据。

目录

一、操作流程

 二、理论支持


一、操作流程

首先需要了解,GeoServer可以生成三种格式的矢量切片:GeoJSON,TopoJSON,MapBox Vector(MVT)。这些矢量切片格式也得到OpenLayers和其他客户端地图引擎的支持。

1、安装矢量切片插件

官网下载地址:切片下载

直接点击下载就行了。 

解压后显示:

 注意:此插件的版本和geoserver的版本必须保持一致!

2、导入jar

将下载的四个jar包复制到GeoServer的WEB-INF/lib文件夹下,即:

apache-tomcat-7.0.72\webapps\geoserver\WEB-INF\lib

3、重启前验证

点击任何一个图层查看:

目前没有切面插件相关的选项。

4、重启后验证

同样点击任何一个图层查看

 发现安装的切片插件生效了

5、发布矢量切片

点击切片图层

进入图层列表,找到准备切片的图层:

点击,然后添加四个切片相关的选项

 然后点击保存,返回列表:

发现下拉框变宽了,点击查看:

 发现切片缓存已经生成。比如选择WFS-geojson选项(wfs是可以编辑的),即矢量格式,不可编辑,矢量切片是为了读取和渲染优化的格式,如果想在客户端编辑要素,最适合的是使用 OGC 的 WFS 服务,点击:

浏览器请求地址:

http://127.0.0.1:8080/geoserver/nandaoVeloc/gwc/demo/nandaoVeloc:Veloc_201809_202102?gridSet=EPSG:4326&format=application/json;type=geojson

F12查看调用情况:

 参数查看:

 返回数据:

注意:openlayer里加载wfs,被加载的要素是自带属性,可以直接获取。

选择第四个.pdf 试试,是mapbox格式,即(.mvt):正常显示出图片

浏览器地址变了:

http://127.0.0.1:8080/geoserver/nandaoVeloc/gwc/demo/nandaoVeloc:Veloc_201809_202102?gridSet=EPSG:4326&format=application/vnd.mapbox-vector-tile
即参数变了:

返回值是二进制:

 基于此前端可以配置好参数来后端请求,放到或者缩小图层,或者点击图片,会根据点击处的位置去查是否有数据内容,如果有返回url,再根据url去后端请求返回被点击的元素的属性。

注意:wms和矢量切片不能编辑。

矢量效果对比效果

 二、理论支持

1、矢量切片特点

优点:

  • 数据在客户端渲染(例如,OpenLayers),而不是在服务器端。这允许不同的地图应用程序使用不同的样式去渲染一个地图,而不需要事先在服务器端(比如GeoServer)进行预先的样式配置。
  • 矢量切片的大小通常比图片瓦片小,这可以使得数据传输得更快以及使用更低的带宽。
  • GeoServer内嵌的GeoWebCache可以有效地存储矢量切片数据。由于样式由客户端配置,而不是在服务器配置,因此GeoWebCache只需要存储一个矢量切片就能在客户端配置不同的样式
  • 由于在客户端上可以获取到矢量数据,所以不需要相应地增加带宽,就可以绘制分辨率很高的地图
  • 客户端可以本地访问实际的要素信息(属性信息和几何信息),所以可以进行非常复杂和精细的要素渲染。

缺点:

矢量切片的主要缺点是需要对地理数据进行预处理,以便客户端能够完成所需的绘图(类似于图像瓦片地图的预处理数据)。考虑到这一点,矢量切片只能用于渲染。虽然是矢量格式,但是它们不可编辑,矢量切片是为了读取和渲染优化的格式,如果想在客户端编辑要素,最适合的是使用OGC的WFS服务。

另外理论可以参考这篇文章,我偶尔看到的文章,感觉还行:

理论支撑参考

到此,geoserver发布矢量切片服务理论与实战分享完毕,大家多测试验证几次,定会收获很多。

猜你喜欢

转载自blog.csdn.net/nandao158/article/details/130728268