如何通过geoserver发布包含多个不同比例尺下显示图层的wms服务并通过cesium加载

本文主要记录通过geoserver发布包含多个图层的wms服务-其中每个图层有其显示比例尺范围,且数据源是从postgis数据库中读出来,方便动态变化,并且由cesium加载正确显示的过程,其间涉及多个易入坑,有些操作还需要单独上网查资料,所以在这里统一记录下来,方便日后查阅。

最终达到的效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上图所示,其中第二张和第三张图片显示两个图层,一个图层显示红色十字架样式的点(第二张),一个图层显示蓝色方框样式的点(第三张),每个图层有他们自己的显示比例尺范围,比如第三张图中图层显示比例尺范围大于第二张图中的图层显示比例尺范围,只有地球放大到一定级别才显示第三张,缩小显示第二张,我们可以在一个wms服务中配置任意多个这样的图层。

步骤:新建shp图层——导入postgis数据库——编辑样式——发布样式——发布图层——发布图层组——应用程序加载图层组

  • 新建图层
    自己建立shp图层,创建要素,新建两个shp点图层,座标系定义为WGS84,给它们新建三个属性:name、desc_、poinum:
    在这里插入图片描述
    在arcmap中创建要素,定义属性,此处样式不用考虑,不会成为最终显示样式,只要能看清楚即可:
    在这里插入图片描述
    属性定义如下,随便乱写:
    在这里插入图片描述
    在这里插入图片描述

  • 导入postgis数据库
    安装pgadmin,然后打开PostGIS Shapefile Import/Export Manager工具:
    在这里插入图片描述
    然后连接数据库,将我们刚才新建的shp导入进来,注意此处需要设置座标系为4326。可以参考网络上的相关资料说明。

  • 编辑样式
    使用udig工具编辑样式,没有udig的先去下载,打开udig,添加postgis中刚导入的两个图层,然后设置样式。右击图层,选择changestyle:
    在这里插入图片描述
    然后选择simplefeature选项卡:
    在这里插入图片描述
    其中可以看到minscale和maxscale,但是注意,这里的值是根据当前座标系下对应比例尺来确定的,所以我们要先选择当前座标系,设置为wgs84座标系。
    在这里插入图片描述
    在这里插入图片描述
    注意,当地图座标系变成如下图所示才能去设置minscale和maxscale,此时当前的比例尺值也发生了改变。
    在这里插入图片描述
    另外要注意的是,在changestyle中设置的minscale和maxscale其实对应的是最大比例尺和最小比例尺,也就是1/1000000,中的分母最小值和最大值,比如我们要设置一个图层的显示比例尺范围:1:100000-1:1000,那么我们要设置minscale为1000,maxscale为100000。

设置完比例尺显示样式后可以设置其他普通的样式,比如颜色、形状、图案等,此处还可以根据属性来显示标注,在label选项卡中,大家可以自己探索。

  • 发布样式
    在udig中设置完样式以后,就可以到geoserver中添加style,其中样式设置则为udig中xml的内容,只要直接复制过去就行了,注意要是有中文字符就把开头xml中编码由UTF-8改成GB2312:
    在这里插入图片描述
    在这里插入图片描述
    由于两个图层有不同样式,则要新建两个样式,待会发布图层时使用对应样式。
  • 发布图层
    geoserver发布postgis中两个导入的图层,样式选择刚才新建的两个样式
  • 发布图层组
    在新建图层组中添加刚才发布的两个图层,注意图层组也有bounds范围,只要点击“生成边界”按钮即可自动生成,也不用我们操心啦:
    在这里插入图片描述
  • 应用程序加载图层组
    cesium使用WebMapServiceImageryProvider类,加载对应图层组即可,加载完成后,其中图层会按照我们设定的样式在指定比例尺下显示。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章