首页 > 其他分享 >WebGL几种常用服务图层的制作流程

WebGL几种常用服务图层的制作流程

时间:2023-05-26 11:44:24浏览次数:45  
标签:缓存 服务 WebGL Cesium new 图层 流程

当前,越来越多的用户开始使用三维GIS平台SuperMap iClent3D for WebGL,对于新用户来说最常见的两个问题就是:1.为什么打开场景看不到数据?2.为何范例能实现的效果,我的数据就不行了?而造成这两个问题绝大多数的原因是数据处理不当,本文将讲解制作WebGL常用服务图层的流程及注意事项。

 

 

###一.Spatial 3D Model类型服务图层:S3MTilesLayer

 

Spatial 3D Model(以下简称s3m)类型服务图层通常来源于矢量数据,模型数据,倾斜摄影数据以及各种专题图切s3m格式的缓存,然后将缓存发布成三维服务。(1)矢量数据和专题图切缓存必须先保存场景,然后选中保存的场景,点击鼠标右键,生成场景缓存,缓存格式为s3m。(2)模型数据可以先保存场景,然后选中保存的场景点击鼠标右键,生成场景缓存,也可以直接选中模型数据集,点击鼠标右键,生成场景缓存,缓存格式为s3m。(3)倾斜摄影数据(OSGB)同样需要转换成s3m格式,转换工具位于:“倾斜摄影”选项卡--“WebGL客户端”--“生成s3m数据”。

 

总结:矢量数据,模型数据,倾斜摄影数据以及各种专题图都必须先切s3m格式的缓存,然后再发布服务,注意切缓存的时候图层名不能带有特殊字符'#',否则WebGL解析服务地址时会出错。另外值得一提的是,当矢量数据必须以贴地模式才能展示良好效果时,就不要把矢量数据切s3m缓存,因为目前WebGL中S3MTilesLayer 暂不支持贴地模式,建议将矢量数据做成二维地图,然后在WebGL中直接调用发布的二维地图服务。
###二.影像地图服务图层:ImageryLayer
影像地图服务图层通常来源于本地图片,iserver发布的Rest地图服务,iserver发布的Rest三维影像服务以及第三方厂商地图服务,OGC标准地图服务(WMS和WMTS)。

 

(1)WebGL加载本地图片建议将图片长宽比处理成2:1,示范代码:

 

function onload(Cesium) {
  var viewer = new Cesium.Viewer('cesiumContainer',{
      //使用本地的一张图片初始化地球,建议图片长宽比2:1
      imageryProvider:new Cesium.SingleTileImageryProvider({
          url : './images/worldimage.jpg'
      })
  });
}

 

(2)WebGL加载iserver发布的Rest地图服务和iserver发布的Rest三维影像服务方式是一样的。对于地图服务只需制作好地图,发布成Rest地图服务即可。对于Rest三维影像服务,在对影像数据集切缓存的时候,必须通过选中数据集点击鼠标右键的方式来生成三维影像缓存,不能将影像数据集添加到场景对整个场景切缓存,否则WebGL加载不出来三维影像服务图层,示范代码:

 

function onload(Cesium) {
  var viewer = new Cesium.Viewer('cesiumContainer');
  var layer = viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
              url : url
          }));
}

 

(3)WebGL支持加载Arcgis,天地图,谷歌,必应等多个第三方在线地图服务,以加载必应在线地图为例:

 

function onload(Cesium) {
  //使用BingMap影像服务初始化viewer部件
  var viewer = new Cesium.Viewer('cesiumContainer',{
      imageryProvider :  new Cesium.BingMapsImageryProvider({
          key : "AjQhMyw76oicHqFz7cUc3qTEy3M2fC2YIbcHjqgyMPuQprNVBr3SsvVdOfmlVc0v",//可至官网(https://www.bingmapsportal.com/)申请key
          url : '//dev.virtualearth.net'
      })
  });
}

 

(4)WebGL加载WMS和WMTS服务,以加载WMS服务为例:

 

function onload(Cesium) {
  var viewer = new Cesium.Viewer('cesiumContainer');
  var provider = new Cesium.WebMapServiceImageryProvider({
         url : 'https://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer',
         layers : '0',
         proxy: new Cesium.DefaultProxy('/proxy/')
});
viewer.imageryLayers.addImageryProvider(provider);
}

 

###三.地形服务图层:TerrainProvider
WebGL只能加载一个地形图层,如果有多个地形图层想添加怎么办?需要先在iDesktop中合并Tin缓存,然后再把合并后的Tin缓存发布成服务,合并的功能位于:“数据”选项卡--“Tin地形”--“合并Tin缓存”。值得一提的是,如果要使用坡度坡向分析,就需要生成“带法线图”的Tin缓存才行。

 

 

WebGL加载地形服务图层范例代码如下:

 

function onload(Cesium) {
var viewer = new Cesium.Viewer('cesiumContainer',{
//创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
  terrainProvider : new Cesium.CesiumTerrainProvider({
      url : 'http://www.supermapol.com/realspace/services/3D-ZF_normal/rest/realspace/datas/srtm_54_07@zhufeng',
      isSct : true//地形服务源自SuperMap iServer发布时需设置isSct为true
  })
});
}

 

###四.KML图层:KmlDataSource
KML图层通常是将对象绘制好了之后,再添加到WebGL上使用,但是点,线,面,地标怎么添加上去?模型怎么添加上去?什么格式的模型才能添加上去?模型节点动画怎么制作?用iDesktop可以制作吗?下面将一一回答这些问题。

 

首先尽管iDesktop创建的KML也是符合opengis标准,但是由于其支持的对象类型更加多样,对象风格更为复杂,所以暂时不能直接用到WebGL上面。

 

(1)推荐在Google Earth上面为KML图层添加点,线,面,地标对象。

 

(2)WebGL主要支持的模型格式为gltf和s3m。gltf格式模型的制作方式可参考文章:http://support.supermap.com.cn:8090/webgl/examples/TopicDoc/LoadGltfModel_OperateTopic.html。
s3m格式的模型可以先将模型处理成超图的模型数据集,然后将模型数据集在场景中打开,选中模型后点击鼠标右键,导出模型,导出格式为s3m。

 

(3)添加模型到KML文件上以及制作节点动画的方法是直接修改KML文件。首先打开WebGL包目录下examplesSampleDatakmlmodel.kml文件,将../models/Cesium_Ground.gltf节点内的路径修改成目标模型所在的路径,然后修改



作者:SuperMap技术控
链接:https://www.jianshu.com/p/f092627e7803
来源:简书

标签:缓存,服务,WebGL,Cesium,new,图层,流程
From: https://www.cnblogs.com/6xiaoxian9/p/17434336.html

相关文章

  • 软件开发流程
    软件开发流程/生命周期软件生命周期软件定义(需求讨论确定、原型效果图制作)、开发实施、测试与bug修复、上线、服务与更新、停服。以我当前的经验或者认知,软件服务公司给别人做产品的具体流程大致应该是这这样的:需求分析阶段(第一版功能、不可缺少的必要功能)。//沟通,与确定。......
  • 客户至上,服务至极 ——优维服务流程标准化体系
    ◎如何用服务打动客户?在思考这个问题之前,首先我们要了解做好服务最难的是什么?和机器不一样,流水线的作业出来的东西都是一样的,因为人们完成了手工作业向工业流水线作业的转变。而服务,是需要人来参与的,当由不同的人来完成某件事的时候,就会出现差异。所以,服务最难的就是交付物的一致......
  • 恒生电子笔试(笔试流程,笔试介绍,题型,以往笔试题)
    2019网申渠道已开放,全国行程将在9月份正式开启完整流程:网申-笔试-2轮面试(群面+单面)-收到实习录取通知笔试流程:通过宣讲会,然后现场笔试。一般早上9点开始笔试,笔试时间两小时,大概1个多小时完成答题。笔试后一天或一周,收到人力通知参加面试笔试介绍:1.参加笔试的学生分A-F卷,每套卷子......
  • springmvc执行流程和视图解析器
    代码在course1中1. springmvc请求的处理流程  9 1)发起some.do 2)tomcat(web.xml--url-pattern知道 *.do的请求给DispatcherServlet) 3)DispatcherServlet(根据springmvc.xml配置知道 some.do---doSome()) 4)DispatcherServlet把some.do转发个MyController.doSome()方法 5)框架......
  • tracee源码初探(二)TCP处理流程
    handleEvents(ctx),processNetCaptureEvents(若开启Capture.Net)协程一直常驻,并等待netCapChannel消息通知.当有事件传过来时,程序先看该事件是否需要处理,也就是说tracee是上报所有事件的,然后过滤来处理事件。在tracee.go中的initBPF函数里t.bpfModule.InitPerfBuf( "net_cap_......
  • 使用react-flow制作流程图
    1.react-flow react-flow是一个用于构建基于节点的应用程序的库。这些可以是简单的静态图或复杂的基于节点的编辑器。同时react-flow支持自定义节点类型和边线类型,并且它附带一些组件,可以查看缩略图的MiniMap和悬浮控制器Controls.2.react-flow安装npminstallreac......
  • 变量、流程控制与游标
    变量、流程控制与游标作者:FL博客:https://www.cnblogs.com/flblogs/注意:本笔记部分参考尚硅谷-宋红康1.变量MySQL中的变量是一种可以在SQL语句中动态存储和传递数据的机制。与其他编程语言类似,在MySQL数据库中,变量分为系统变量以及用户自定义变量。常量:字符串常量......
  • APP中RN页面渲染流程-ReactNative源码分析
    在APP启动后,RN框架开始启动。等RN框架启动后,就开始进行RN页面渲染了。RN页面原生侧页面渲染的主要逻辑实现是在RCTUIManager和RCTShadowView完成的。通过看UIMananger的源码可以看到,UIMananger导出给JS端的API接口在对UI的操作上,基本都会同时对View和ShadowView进行操作。......
  • 【JavaScript用法】JavaScript(JS)的基本语法(JS数据类型,JS变量,JS运算符,JS流程控制语句
    JavaScript(JS)的基本语法目录JavaScript(JS)的基本语法一.与html结合方式二.注释三.数据类型:四.变量五.运算符(和Java有点类似)六.流程控制语句(和JAVA 类似):七.JS特殊语法:一.与html结合方式       1.内部JS:定义<script>,标签体内容就是js代码(可以理解为和html......
  • 边缘计算AI硬件智能分析网关V1版的接入流程与使用步骤
    我们的AI边缘计算网关硬件——智能分析网关目前有两个版本:V1版与V2版,两个版本都能实现对监控视频的智能识别和分析,支持抓拍、记录、告警等,在AI算法的种类上和视频接入上,两个版本存在些许的区别。V1的基础算法有人体检测、区域入侵检测、戴口罩识别、安全帽识别;V2目前有15种算法,包括......