点击查看:最新Cesium可视化系统实战视频课程

2025020618270121b55368d62b83a8ef75064627587fac614CZML(Cesium Language)是一种基于JSON的格式,用于在Cesium(一个开源的虚拟地球框架)中描述3D地理数据。CZML文件通常用于动态地显示位置、路径、对象的变化等数据。它允许表示从简单的静态数据到复杂的动态数据,并可以用于可视化地理空间数据(如卫星轨迹、物体移动、标记等)。下面是对给定CZML代码的详细讲解。

1. 第一部分:Document对象


{
  "id": "document",
  "version": "1.0",
  "clock": {
    "interval": "2018-07-19T15:18:00Z/2018-07-19T15:18:30Z",
    "currentTime": "2018-07-19T15:18:00Z",
    "multiplier": 2,
    "range": "LOOP_STOP",
    "step": "SYSTEM_CLOCK_MULTIPLIER"
  }
}
  • id:"document"这是CZML文件的顶层对象,通常用来包含元数据和全局配置。
  • version:"1.0"指定了CZML文件的版本。在这个案例中,文件版本为1.0。
  • clock: 这个部分定义了时间控制设置。
    • interval:"2018-07-19T15:18:00Z/2018-07-19T15:18:30Z" – 这是CZML时间的有效区间,表示文件的时间范围从2018年7月19日下午3:18:00至3:18:30(UTC)。
    • currentTime:"2018-07-19T15:18:00Z" – 设置当前时间为时间区间的开始。
    • multiplier:2 – 设置时间的加速因子,即时间会以2倍的速度进行播放。
    • range:"LOOP_STOP" – 表示当时间结束时,时间会停止并回到起始点。
    • step:"SYSTEM_CLOCK_MULTIPLIER" – 这意味着时间步进将按照系统时钟的乘法器进行。

2. 第二部分:CesiumMilkTruck模型


{
  "id": "CesiumMilkTruck",
  "model": {
    "gltf": "models/CesiumMilkTruck/CesiumMilkTruck.glb"
  },
  "position": {
    "interpolationAlgorithm": "LINEAR",
    "forwardExtrapolationType": "HOLD",
    "cartesian": [
      "2018-07-19T15:18:00Z",
      1216327.3893347275,
      -4736164.778028102,
      4081507.5209477833,
      "2018-07-19T15:18:10Z",
      1216369.543258349,
      -4736201.237448179,
      4081447.3732212726,
      "2018-07-19T15:18:20Z",
      1216434.7507773656,
      -4736241.372142024,
      4081386.1802605274,
      "2018-07-19T15:18:30Z",
      1216525.7792628652,
      -4736271.927759278,
      4081319.744558958
    ]
  },
  "orientation": {
    "unitQuaternion": [
      0.3084011337938999,
      0.3210181022701266,
      -0.45850421987074924,
      0.7686388857813198
    ]
  }
}

  • id:"CesiumMilkTruck"该对象的唯一标识符,可以在Cesium场景中引用。
  • model:
    • gltf:"models/CesiumMilkTruck/CesiumMilkTruck.glb" – 指定了3D模型的路径,表示加载一个.glb格式的模型文件(在此案例中是一个“Milk Truck”)。
  • position:
    • interpolationAlgorithm:"LINEAR" – 该属性定义了位置的插值方法。LINEAR表示位置变化是线性插值,即以恒定速度移动。
    • forwardExtrapolationType:"HOLD" – 如果时间超出提供的区间,模型将保持当前状态而不移动(”HOLD”)。
    • cartesian – 位置数据以“笛卡尔坐标”表示,即[x, y, z]坐标。这里列出了模型在不同时间点的位置,每个时间点跟随3D坐标值(东经、北纬、海拔)。
      • 示例:
        • "2018-07-19T15:18:00Z", 1216327.3893347275, -4736164.778028102, 4081507.5209477833 表示在2018年7月19日15:18:00时,模型的位置为 (1216327.3893347275, -4736164.778028102, 4081507.5209477833)
      • 一共提供了四个时间点(从2018年7月19日15:18:00到15:18:30),这些数据描述了物体沿路径的运动。
  • orientation:
    • unitQuaternion – 用四元数表示模型的旋转。四元数用于描述3D旋转,避免了欧拉角所带来的万向锁问题。这里的四元数定义了模型在空间中的朝向。

3. 第三部分:Polyline(折线)


{
  "id": "Polyline",
  "polyline": {
    "positions": {
      "cartesian": [
        1216327.3893347275,
        -4736164.778028102,
        4081507.5209477833,
        1216369.543258349,
        -4736201.237448179,
        4081447.3732212726,
        1216434.7507773656,
        -4736241.372142024,
        4081386.1802605274,
        1216525.7792628652,
        -4736271.927759278,
        4081319.744558958
      ]
    },
    "material": {
      "polylineOutline": {
        "color": {
            "rgba": [100, 149, 237, 140]
        },
        "outlineWidth": 0
      }
    },
    "width": 12,
    "clampToGround": true
  }
}
  • id:"Polyline"这是折线的标识符。
  • polyline: 描述一条由多个点连接的折线。
    • positions:
      • cartesian – 提供了折线的多个点坐标,使用笛卡尔坐标系表示每个点的位置。
  • material:
    • polylineOutline – 设置折线的颜色和外边框样式。
      • color: 使用RGBA颜色模式([100, 149, 237, 140])表示颜色,其中前三个数字是RGB值,最后一个数字是透明度。
      • outlineWidth: 设置边框的宽度为0,意味着没有边框。
  • width:12设置折线的宽度为12个像素。
  • clampToGround:true表示该折线会被“钉”到地面上,确保其始终与地面相接。

总结

该CZML文件包含三个主要部分:

  1. Document部分:设定了时钟和时间范围的参数。
  2. CesiumMilkTruck模型:描述了一个模型(“Milk Truck”)的3D显示和运动轨迹。
  3. Polyline部分:定义了一条折线,连接了多个3D点并且为这条折线设置了颜色、宽度和地面钉住属性。

这些对象共同构成了一个在Cesium中动态展示3D模型和路径的场景。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注