【Cesium for Unreal】叠加/卸载GeoServer发布的多个shapefile

目录

效果

步骤

一、使用GeoServer发布shapefile 

二、在UE中实现多个shapefile的叠加和卸载

三、通过UI界面控制图层显隐


效果

通过左上角勾选框控件控制叠加或卸载GeoServer发布的多个shapefile,效果如下。

步骤

一、使用GeoServer发布shapefile 

1. 在上一篇博客(【Cesium for Unreal】通过GeoServer加载铁路路网)中,已经在GeoServer中发布了四川的铁路路网,现在我们再在GeoServer中发布一个四川的公路路网。(注意:需要将铁路和公路的仓库放在同一个工作空间内

先将工作空间“railways”改为“ways”

扫描二维码关注公众号,回复: 17641623 查看本文章

2. 下面开始创建公路仓库和图层

复制如下资源

2. 在“GeoServer/data”中新建一个文件夹,这里命名为“roads”

将复制的资源粘贴到“roads”文件夹中

3. 添加一个新的存储仓库

点击“shapefile”

设置工作空间为“ways”,数据名称为“roads”,Shapefile文件的位置选择“GeoServer/data/roads”中的.shp文件,设置完后点击保存。

点击发布

4. 在编辑图层页面中填写图层命名、图层标题和摘要 

点击“从数据中计算”和“Compute from native bounds”

点击“发布”

这里样式使用默认的样式line

设置后点击保存

5. 在图层列表中可以看到此时我们拥有了“railways”和“roads”两个图层,这两个图层的工作空间相同(:之前的),存储仓库可以不同。

6. 在图层预览中可以分别打开“railways”和“roads”图层的“OpenLayers”

可以看到他们的“OpenLayers map preview”中的BaseUrl是相同的,都是“http://localhost:8082/geoserver/ways/wms

二、在UE中实现多个shapefile的叠加和卸载

1. 选中“Cesium World Terrain”,添加一个“CesiumWebMapServiceRasterOverlay”组件,在该组件中设置“Base Url”为“OpenLayers map preview”中的 “http://localhost:8082/geoserver/ways/wms”,“Layers”设置为“ways:roads”,“Material Layer Key”设置为“Overlay1”。此时可以看到地图上已经显示了公路路网。

如果我们想同时叠加公路和铁路路网,只需要将“Layers”修改为“ways:roads,railways”即可(这里railways图层在roads图层之上,如果改为“ways:railways,roads”则roads图层在railways图层之上

如果没有生效可以尝试刷新一下

如果要卸载shapefile只需将组件的“Base Url”和“Layer”参数设置为空即可。

三、通过UI界面控制图层显隐

1. 新建一个控件蓝图,添加如下两个勾选框用于控制公路和铁路路网的显隐

设置两个勾选框为变量

在事件图表中,先获取CesiumWorldTerrain和CesiumWebMapServiceRasterOverlay组件的引用

勾选框状态变化时执行如下逻辑

2. 在HUD中创建并显示控件蓝图

运行效果如文章开头所示。