大数据量的兴趣点如何在Cesium快速加载?

Posted ONEGISER(ZPC)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据量的兴趣点如何在Cesium快速加载?相关的知识,希望对你有一定的参考价值。

非常感谢UP主GIS小呲花和超图的技术工程师,在SuperMap系列软件这块给了全部的方案。

我的客户有19w条地名地址数据需要在Cesium前端展示,经过测试如果用传统的添加Label根本是不可行的,在这块天地图的三维标注方案是最好的解决方案,因为客户用的是超图平台,于是咨询超图的工程师最终得到了答案,下面将解决步骤记录如下,便于大家使用参考。

技术路线

使用SuperMap IDesktop切三维缓存,使用SuperMap IServer发布服务,使用SuperMap IClient加载

操作步骤

1. IDesktop切三维缓存

注意的是三维场景和数据的坐标必须一致,不然会闪退,还有软件也要是最新的,技术支持给的版本请在下面链接下载
链接:https://pan.baidu.com/s/12L_xUwi6ZSx6JTj6VsiWzw
提取码:tdp6
(1)构建三维数据集,二维数据集有不贴地的问题

(2)将三维数据集添加至新球面场景

(3)然后制作标签专题图

(4)保存场景,生成缓存


2. IServer发布服务

如果发布了不能预览,请将第三步的iClient包复制到iServer下
(1) 将文件拷贝至服务器


(2)问题记录,名字里不要出现#,将其重命名

3. IClient加载

一定要下载之后的版本

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
  <title>三维标注</title>
  <link href="/SuperMapCesium/Widgets/widgets.css" rel="stylesheet">
  <!-- <script src="http://support.supermap.com.cn:8090/webgl/Build/Cesium/Cesium.js"></script> -->
  <script src="/SuperMapCesium/Cesium.js"></script>
  <style>
    html,
    body,
    #cesiumContainer 
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden;
    
  </style>
</head>

<body>
  <div id="cesiumContainer">
  </div>
  <div style="position: absolute;top:10px;left:10px;z-index: 1000;">
    <div id="add" style="background:#fff;cursor:pointer;">添加</div>
    <div id="remove" style="background:#fff;cursor:pointer;">移除</div>
  </div>
  <script>
    const viewer = new Cesium.Viewer('cesiumContainer', 
      imageryProvider: new Cesium.ArcGisMapServerImageryProvider( url: "https://elevation3d.arcgis.com/arcgis/rest/services/World_Imagery/MapServer" ),
      terrainProvider: new Cesium.CesiumTerrainProvider(
        url: 'https://data.marsgis.cn/terrain',
        isSct: false,
      ),
    )
    viewer.scene.globe.depthTestAgainstTerrain = true


    const name = "base"
    const add = (name) => 
      const promise = viewer.scene.addS3MTilesLayerByScp("/iserver/services/3D-local3DCache-POIshanice/rest/realspace/datas/POI_shan@ice/config",  name );
      promise.then((layer) => 
        viewer.zoomTo(layer)
      )
    
    add(name);


    document.getElementById("add").onclick = () => 
      add(name);
    

    document.getElementById("remove").onclick = () => 
      viewer.scene.layers.remove(name, true)
    

  </script>
</body>

</html>

以上是关于大数据量的兴趣点如何在Cesium快速加载?的主要内容,如果未能解决你的问题,请参考以下文章

大数据量的报表如何快速分页呈现,有什么好的处理方法

大数据量的处理方案(递归)

如何高效快速的学习大数据

Cesium项目实战-城市各类POI数据制作加工展示

Cesium项目实战-城市各类POI数据制作加工展示

cesium 加载shp格式的白模建筑