Cesium在三维模型中的应用

一、Cesium简介

1、Cesium介绍

  1. Cesium是一个跨平台,跨浏览器的展示三维地球和地图的javascript库
  2. Cesium使用WebGL 来进行硬件加速图形,使用时不需要任何插件支持,但是浏览器必须支持WebGL
  3. Cesium是基于Apache2.0许可的开源程序,它可以免费的用于商业和非商业用途/2、Cesium特点
  1. 支持2D,2.5D,3D 形式的地图展示
  2. 可以绘制各种几何图形,高亮区域,支持导入图片,甚至3D模型等多种数据可视化展示
  3. 可用于动态数据可视化并提供良好的触摸支持,支持绝大多数的浏览器和mobile
  4. Cesium还支持基于时间轴的动态数据展示

1、Cesium效果展示

Cesium在三维模型中的应用

二、Cesium环境搭建

1、Cesium基础环境

2、学习Cesium 网站

3、​Cesium目录详情

Cesium在三维模型中的应用

+-- Apps[目录]                      // 项目的DOM展示,用于预览项目
+-- Build[目录]                     // 项目使用的包目录,开发使用和上线使用的都在里边
|  +--  Cesium[目录]                //打包未编译的源代码
|  +-- CesiumUnminified[目录]        //打包编译的源代码
|  +-- Documentation[目录]        
|  +-- Specs[目录]    
|  +-- package.json
+--  Cesium[目录] 
+--  packages[目录]  
+--  Source[目录]  
+--  Specs[目录]  
+--  ThirdParty[目录]  
+-- .eslintignore
+-- .eslintrc.json
+-- .prettierignore
+-- build.js
+-- CHANGES.md
+-- favicon.ico                    // 项目的矢量图标
+-- gulpfile.js                   
+-- index.cjs
+-- index.html                     
+-- LICENSE.md                     // 开源的一些协议,官方文件
+-- package.json                    // 项目依赖包管理文件和Script文件,比如如何启动项目的命令
+-- README.md                       // 对项目的描述文件,markdown语法
+-- server.js                      
+-- web.config                             

三、原生Cesium项目搭建

  • 项目结构

Cesium在三维模型中的应用

  • 创建cesium_dom文件夹
  • 把文件复制到文件夹中
    • 在下载的Cesium 项目中的找到Build目录下,复制Cesium文件到cesium_dom目录下
  • 文件夹中创建.html文件
    • 在html 文件中输入 ! + tab 键 快速生成html格式代码
    • 在head 头部中 引入Cesium文件下的Cesium.js文件
    <script src="./Cesium/Cesium.js"></script>
    • 在head 头部中引入Cesium 文件下的Widgets目录下widgets.css文件
     <link rel="stylesheet" href="./Cesium/Widgets/widgets.css">
    • 在body 区域创建一个以ID为选择器的容器
      <div id="container"></div>
    • 在body区域创建script 标签
       <script>
            var viewer = new Cesium.Viewer("container", {})
       </script>
  • 代码结构
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
      <title>导入cesium文件</title>
      <script src="./Cesium/Cesium.js"></script>
      <link rel="stylesheet" href="./Cesium/Widgets/widgets.css">
      <style>
          html,
          body {
              width: 100%;
              height: 100%;
              padding: 0;
              margin: 0;
          }
      </style>
    </head>
    
    <body>
      <div id="container"></div>
    
      <script>
          var viewer = new Cesium.Viewer("container", {})
      </script>
    </body>
    
    </html>
  • 运行效果如下展示,

    注意:

    ​ 运行的时候要用网络地址打开,open with Live server ,不能使用绝对路径

Cesium在三维模型中的应用

四、Cesium与Vue集成

上方讲到了cesium 是什么,和在html搭建Cesium项目

接下来,我们来讲如何在vue 中搭建Cesium 项目,

因为vue框架 在大家日常开发中用的比较多

第一种静态文件引入方法

  • 在vue项目中找到public 目录下
  • 把前面中的Cesium文件夹放到public 目录下 全局引入

Cesium在三维模型中的应用

第二种安装依赖引入方法

​ 1.使用npm安装

​ npm install cesium

​ 2.使用yarn 安装

​ yarn add cesium

3.使用cnpm 安装

​ cpm install cesium

  • 用第二种安装的依赖的方法来使用Cesium的话,需要配置vue.config.js文件
  • 项目源码地址:https://gitee.com/ls870061011/vue_cesium
  • 在vue.config.js 中配置的时候需要安装webpack ,copy-webpack-plugin 这个两个依赖
  • vue.config.js中的配置
     /* eslint-disable no-param-reassign */
     const webpack = require('webpack');
     const CopyWebpackPlugin = require('copy-webpack-plugin');
     const path = require('path');
    
     function resolve(dir) {
       return path.join(__dirname, './', dir);
     }
    
     // The path to the CesiumJS source code
     const cesiumSource = 'node_modules/cesium/Source';
     const cesiumWorkers = '../Build/Cesium/Workers';
    
     module.exports = {
       publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
       outputDir: 'dist',
       lintOnSave: true,
       productionSourceMap: false,
       css: {
         loaderOptions: {
           scss: {
             additionalData: `
             @import "~@/styles/variables.scss";
             @import "~@/styles/mixin.scss";
             `,
           },
         },
       },
       configureWebpack: (config) => {
         if (process.env.NODE_ENV === 'production') {
           // 为生产环境修改配置...
           config.mode = 'production';
         } else {
           // 为开发环境修改配置...
           config.mode = 'development';
           config.devtool = 'source-map'; // 开发环境显示源码,方便调试
         }
    
         config.plugins = [
           ...config.plugins,
           // Copy Cesium Assets, Widgets, and Workers to a static directory
           new CopyWebpackPlugin({
             patterns: [
               { from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' },
               { from: path.join(cesiumSource, 'Assets'), to: 'Assets' },
               { from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' },
             ],
           }),
           new webpack.DefinePlugin({
             // Define relative base path in cesium for loading assets
             CESIUM_BASE_URL: JSON.stringify(''),
           }),
         ];
       },
       chainWebpack: (config) => {
         config.plugin('preload').tap(() => [
           {
             rel: 'preload',
             fileBlacklist: [/.map$/, /hot-update.js$/, /runtime..*.js$/],
             include: 'initial',
           },
         ]);
         // 修复HMR(热更新)失效
         config.resolve.symlinks(true);
    
         // 移除prefetch插件
         config.plugins.delete('prefetch');
    
         // 设置别名
         config.resolve.alias.set('cesium', resolve(cesiumSource));
       },
     };
  • 在src 目录下创建cesium 文件夹下
  • cesium文件夹创建Config.js 和SceneViewer.js文件
  • config.js的配置详情
    /**
    * 内部配置文件
    */
    
    class Config {
    static viewer;
    }
    
    export default Config;
    
  • SceneViewer.js的配置是 场景视图的配置
    import { Viewer } from 'cesium/Cesium';
    
    import Config from './Config';
    
    /**
    * 场景视图类
    */
    class SceneViewer extends Viewer {
    /**
     *
     * @param {Object} options
     *
     * @constructor
     */
    constructor(options) {
      super(options);
      Config.viewer = this;
    }
    }
    
    export default SceneViewer;
  • 在组件中使用

Cesium在三维模型中的应用

原创文章,作者:rheafarnsworth6,如若转载,请注明出处:https://www.wudianban.com/cesium.html

(1)
上一篇 2023年3月29日 上午10:53
下一篇 2023年3月30日 上午10:41

相关推荐

  • 如何使用ChatGPT-4

    OpenAI的最新产品名为GPT-4,与 11 月发布的版本不同,此版本不可免费访问,但也有可尝试使用的途径。 OpenAI 实际上已经发布了近五年的GPT版本,于 2020 年首…

    2023年3月24日
  • 典型智能湿度控制系统设计

    文章目录一、总体设计思路二、AT89C52单片机三、系统设计思路四、设计原理五、系统流程图六、电路1. 温湿度检测电路2. 加湿、除湿电路3. 设置按键电路七、 实现功能 一、总体…

    2023年3月16日
  • 数据驱动的人工智能技术在电力设备状态分析中的研究与应用

    摘 要:电力设备作为电力系统的基本要素,其运行状态对电网的安全经济运行有直接影响。随着电力物联网的 建设和智能传感器技术的不断发展,电力设备运行状态的相关信息呈现出多源、异构的数据…

    2023年5月6日
  • 高比例新能源电力系统研究综述

    摘要:随着双碳目标的提出,新能源发电得以快速发展,未来高比例新能源并网将对电力系统带来重大影响。分析了高比例新能源对电力系统建模、运行以及规划3个方面的影响,并梳理了高比例新能源系…

    2023年4月10日
  • Git常用命令

    项目中经常使用git管理文件和代码,git的管理工具也有很多。本文章主要是给新手使用者提供一些简单的教程帮助大家尽快的熟悉git的使用方法。 文章目录一、Git介绍二、Git常用操…

    2023年3月10日
  • 电压暂降的治理方法

    电力系统中,电压暂降是指瞬时电压降低的现象,其持续时间一般不超过数秒钟,但会给电力设备和电子设备造成较大的影响。因此,对于电压暂降的治理显得尤为重要。下面是几种电压暂降的治理方案。…

    2023年3月9日
  • 屋顶光伏项目中三维勘察技术之CesiumLab集成三维模型

    在做屋顶光伏项目的过程中,发现屋顶勘探是一个很麻烦的事情,需要人工上屋顶测量,效率地下且存在安全隐患,人工测量的尺寸容易漏掉且人员素质参差不齐,导致最后给出的草图无法理解,导致设计…

    2023年2月14日
  • 电气工程自动化施工技术要点

    电气工程及其自动化施工技术是电气工程项目建设当中极为重要的一环。通过自动化技术的应用能够有效提升电气工程的施工质量和施工效率,针对电气工程及其自动化施工技术进行了探讨。 文章目录一…

    2023年3月23日
  • COMTRADE格式解析

    文章目录一、COMTRADE格式介绍二、COMTRADE格式详解2.1 COMTRADE格式的头文件包括以下信息2.2 COMTRADE格式的数据文件包含以下信息2.3 COMTR…

    2023年3月13日
  • ChatGPT申请及集成开发

    随着人工智能技术的成熟,其应用领域也越来越广泛,以最近爆火的ChatGPT为例,本期出一个与系统集成的案例。 文章目录一、了解ChatGPT1、ChatGPT 介绍2、GPT-3 …

    2023年2月27日

发表回复

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