下载地形、矢量图层、卫星影像到本地并geoserver发布为服务,后使用Cesium加载

本文详细介绍了如何在离线环境下使用Cesium进行地图展示。首先,通过QGIS下载并处理地形、遥感影像和矢量数据到本地。接着,利用CesiumLab和各种服务器软件发布本地的影像、矢量图层和地形服务。最后,展示了在Cesium中加载这些离线服务的方法,包括影像、矢量数据和地形的加载步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

教程应用场景:要求项目数据全部本地化,无需链接互联网使用,所以要把地形、遥感影像、矢量数据都下载到本地,然后在本地离线发布,并用Cesium加载。

0.Cesium在离线情况下启动

Cesium.js会默认访问在线数据,如果不做设置,在没联网的情况下Cesium会启动失败。参考官方demo已经展示如何离线情况下使用Cesium库: 官方demo演示如何离线调用cesium.js

1 下载数据

1.1 下载离线影像

QGIS里面加载一个卫星影像(天地图、谷歌都可以) => 工具箱(上方蓝色齿轮的图标) => 栅格工具 => 将地图转为栅格 => 渲染最小范围(要下载的范围)=> 每像素地图单位数,一般是0.5(精度:米/像素) => 运行 => 导出

天地图、谷歌等比较好找,这里提供一个第一次全国风险普查的成果卫星影像服务,添加WMTS服务即可获得,网址如下:https://fxpc.mem.gov.cn/data_preparation/39699eaf-2ebd-42fe-8553-de3ac44cac9b/161ba32a-106e-4197-a4e3-cd9f1ac5a6db/img08/wmts/AB0EC656D56BD380345A16C87D539C6C/WMTSCapabilitie

### 如何通过 GeoServer 发布 TIF 影像Cesium加载 #### 准备工作 在开始之前,需确认已成功安装配置好 GeoServerCesium。以下是具体操作流程: --- #### 1. GeoServer发布 TIF 数据 要将 TIF 文件作为影像图层发布GeoServer,可以按照以下步骤完成。 ##### 创建工作区 进入 GeoServer 的 Web 界面,在 **Layers** -> **Workspaces** 下创建一个新的工作区[^2]。 命名该工作区以便于后续管理。 ##### 添加数据源 导航至 **Data Stores** 页面,点击“Add new Data Store”,选择适合的存储类型(通常为 “GeoTIFF” 或其他栅格支持格式)。上传准备好的 TIF 文件,指定其投影坐标系[^5]。 ##### 配置图层 返回主界面后,前往 **Publish Layer** 步骤,定义新图层的相关参数,例如边界范围、分辨率等属性。完成后保存设置。 ##### 测试 WMS/WMTS 输出 确保可以通过浏览器访问生成的服务 URL 地址来验证图像是否正常渲染[^4]。例如: ``` http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=test:tif_layer&styles=&bbox=-90,-180,90,180&width=768&height=384&srs=EPSG:4326&format=image/png ``` --- #### 2. 去除 TIFF 背景颜色干扰 如果发现发布的 TIF 图像存在不必要的黑色背景区域,则可通过调整透明度通道实现消除效果[^3]。具体做法如下: - 打开对应图层编辑页面; - 定位到样式部分下的 SLD 编辑器选项卡; - 修改 XML 结构内的 `<ColorMapEntry>` 标签值,将其 opacity 属性设为 `transparent` 对应的颜色编码。 --- #### 3. 在 Cesium 加载 GeoServer 提供的地图服务 当上述准备工作全部就绪之后,就可以利用 JavaScript 将远程服务器上的地理空间资源嵌入到三维场景之中了。 ##### 初始化 Cesium Viewer 实例 首先初始化一个基本视窗组件用于展示最终成果。 ```javascript var viewer = new Cesium.Viewer('cesiumContainer', { terrainProvider : Cesium.createWorldTerrain() }); ``` ##### 动态添加遥感图片覆盖物 借助 ImageryLayer API 方法动态绑定来自外部 RESTful 接口的数据流。 ```javascript viewer.imageryLayers.addImageryProvider( new Cesium.WebMapTileServiceImageryProvider({ url : 'http://localhost:8080/geoserver/gwc/service/wmts?', layer : 'workspace_name:layer_id', style : '', format : 'image/png', tileMatrixSetID : 'GoogleMapsCompatible' }) ); ``` ##### 设置观察视角 为了让用户能够直观看到目标位置的效果,还需要适当调节摄像机的位置与方向向量。 ```javascript viewer.camera.flyTo({ destination : Cesium.Cartesian3.fromDegrees(longitude, latitude, height), orientation : { heading : Cesium.Math.toRadians(heading_angle), // 方向角 (东经正北顺时针旋转角度) pitch : Cesium.Math.toRadians(pitch_angle), // 抬头/低头倾斜程度 (-π 到 π之间变化) roll : 0 // 自身翻转轴偏移幅度,默认水平放置即可满足需求 } }); ``` --- #### 总结说明 以上即完成了整个从本地导入原始素材直至在线可视化呈现的过程描述。值得注意的是实际开发过程中可能还会遇到诸如性能优化、异常处理等问题需要额外关注解决办法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值