前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积

这篇具有很好参考价值的文章主要介绍了前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积完整代码

前端开发中,使用Vue框架可以帮助开发者更高效地开发复杂的Web应用程序,并且越来越多的项目开始集成三维地球数据可视化。Cesium是一个开源的JavaScript库,可以轻松地实现地球数据的可视化,同时支持3D场景的绘制。

本文将介绍如何使用Vue框架和Cesium加载3dtiles,以及在加载完成后如何计算3dtiles的面积。本文将会提供完整的代码和样例,以帮助初学者更容易地理解该过程。

界面的预览

在本文中,我们将使用Vue框架和Cesium加载3dtiles文件,并且计算这个3dtiles的面积。下面是我们完成的UI界面的样子。

当用户上传3dtiles文件后,我们将会开始加载这个文件,并且在3D地球上绘制出来。同时,我们会在地球的右上角展示出计算得到的面积。

开始编写代码

首先,我们需要在Vue项目中集成Cesium。我们可以通过在Vue项目中安装Cesium相关的依赖包来完成。在控制台中输入以下命令:

npm install cesium

接下来,在Vue组件中,我们可以通过如下方式引入Cesium:

import * as Cesium from 'cesium/Cesium'
import 'cesium/Widgets/widgets.css'

当然,你需要额外添加Cesium的样式文件。

然后,我们需要创建一个Vue组件,以便我们在页面上展示UI界面。在Vue组件的script标签中,我们首先需要引入Cesium。

<script>
    import * as Cesium from 'cesium/Cesium'
    import 'cesium/Widgets/widgets.css'
    export default {
        data() {
            return {
                viewer: null, // 用于存放3D地球对象
                area: null // 用于存放计算得到的面积
            }
        },
        methods: {
            // 加载3dtiles文件并绘制到3D地球上
            loadTileset() {
                const viewer = this.viewer
                const tileset = new Cesium.Cesium3DTileset({
                    url: 'static/models/Tileset/FirstPersonRunner/tileset.json'
                })
                viewer.scene.primitives.add(tileset)
                viewer.zoomTo(tileset)
            },
            // 计算3dtiles的面积
            calculateArea() {
                const that = this
                const viewer = this.viewer
                const tileset = viewer.scene.primitives.get(0)
                Cesium3DTilesInspector.TilesetPanel.getDefaultViewModels(scene, tileset).then(function(panel) {
                    that.area = panel.boundingSphere.area
                })
            }
        },
        mounted() {
            this.viewer = new Cesium.Viewer('cesiumContainer', {
                sceneMode: Cesium.SceneMode.SCENE3D,
                animation: false,
                timeline: false,
                vrButton: false,
                scene3DOnly: true,
                selectionIndicator: false,
                shadows: false
            })
            this.loadTileset() // 加载3dtiles文件并绘制到3D地球上
        }
    }
</script>

在上面的代码中,我们创建了一个Vue对象,并且定义了两个方法:loadTileset和calculateArea。在mounted方法中,我们初始化了3D地球对象,并且调用loadTileset方法,将3dtiles文件绘制到地球上。

接下来,我们需要在模板中添加UI界面。在Vue组件的template标签中,我们可以按如下方式添加界面。

<template>
    <div>
        <div id="cesiumContainer"></div>
        <div>
            <input type="file" @change="loadTileset()">
            <button @click="calculateArea()">计算面积</button>
            <span v-if="area">面积: {{area}}</span>
        </div>
    </div>
</template>

在上面的代码中,我们为用户提供了一个上传文件的按钮和一个计算面积的按钮。在计算面积的按钮旁边,我们添加了一个span标签,用于展示计算出的面积。

最后,在style标签中添加一些样式,以美化我们的界面。

<style>
    #cesiumContainer {
        width: 100%;
        height: 800px;
    }
    input[type="file"]{
        display: inline-block;
        margin-right: 10px;
    }
    button {
        display: inline-block;
        margin-right: 10px;
    }
    span {
        font-size: 20px;
    }
</style>

代码解析

在上面的代码中,我们定义的loadTileset方法用于加载并绘制3dtiles文件。由于Vue组件是异步的,所以我们需要使用Promise来处理3dtiles文件的加载。

const tileset = new Cesium.Cesium3DTileset({
    url: 'static/models/Tileset/FirstPersonRunner/tileset.json'
})
viewer.scene.primitives.add(tileset)
viewer.zoomTo(tileset)

在上面的代码中,我们首先定义了一个Cesium3DTileset对象,然后通过viewer.scene.primitives.add(tileset)将这个对象添加到3D地球上,最后调用viewer.zoomTo(tileset)将地球缩放至3dtiles的范围内。

接下来,我们来看calculateArea方法,这个方法用于计算3dtiles的面积。

Cesium3DTilesInspector.TilesetPanel.getDefaultViewModels(scene, tileset).then(function(panel) {
    that.area = panel.boundingSphere.area
})

在上面的代码中,我们使用Cesium3DTilesInspector工具来获取3dtiles的TilesetPanel对象,并且计算这个对象的boundingSphere属性的面积。

最后,我们需要在mounted方法中初始化3D地球对象,并且调用loadTileset方法加载3dtiles文件。

this.viewer = new Cesium.Viewer('cesiumContainer', {
    sceneMode: Cesium.SceneMode.SCENE3D,
    animation: false,
    timeline: false,
    vrButton: false,
    scene3DOnly: true,
    selectionIndicator: false,
    shadows: false
})
this.loadTileset() // 加载3dtiles文件并绘制到3D地球上

在上面的代码中,我们使用Cesium.Viewer对象初始化一个3D地球,并且传递了一些配置参数。最后,我们调用loadTileset方法,将3dtiles文件加载并且绘制到地球上。

总结

在本文中,我们介绍了如何使用Vue框架和Cesium通过加载3dtiles文件来展示3D地球,并且计算了3dtiles的面积。我们提供了完整的代码和样例,以帮助初学者更容易地学习此过程。

希望通过本文的介绍,能够对读者有所帮助。如果您有任何疑问或者建议,欢迎在评论区留言。文章来源地址https://www.toymoban.com/news/detail-478099.html

到了这里,关于前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cesium地图上加载3DTiles模型

    1,使用Blender创建模型: 官网下载Blender:https://www.blender.org/,在Github上下载Building Tools插件,通过编辑-偏好设置-插件-安装,导入压缩包使用,这个可以自己创建小房子,文件-导出为obj格式 2,将.obj转成3dtiles格式: 1,第一种方法通过加载本地文件展示: 1,github下载ObjTo3

    2024年02月03日
    浏览(46)
  • Cesium 加载3Dtiles数据-最佳方法对比

            Cesium加载空间数据的方法有很多种,网络上关于3Dtiles数据集加载的废话连篇,看着就很无语。这里我本人直抒胸臆,简单介绍一下数据的加载方式。         先打开Cesium的深度检测的开关,也可以不打开。                完成以上步骤后,利用Cesium的readyPromi

    2024年02月11日
    浏览(97)
  • Cesium加载3Dtiles模型-大疆智图

    Cesium加载3Dtiles模型步骤: (一)如果您使用的是大疆智图,则该软件可以直接输出3Dtiles格式(B3DM切片)的数据,如图所示:   (二)如果您使用的是CC(Smart3D),该软件可以输出OSGB格式的数据,我们可以借助: 1.osg2cesiumApp v1.3软件来将我们的OSGB倾斜摄影数据转换成3Dtil

    2024年02月11日
    浏览(43)
  • Cesium加载城市白膜数据3DTiles

    首先,城市建筑数据可以去网上扒一些,拿到的都是 shp格式 的文件。 shp文件可以很方便的转为 Geojson文件 ,然后再通过Cesium导入也可以实现效果。效果如下所示: 图中就是用Geojson数据添加到地图中,大约有117000条数据,加载的效果还可以。但是数据量大加载时间会比较长

    2024年02月11日
    浏览(62)
  • cesium——加载3DTiles,模型的选中,高亮效果

    3DTiles是一种用于组织和传输大规模地理数据的规范,旨在提供一种高效、可扩展的方式来加载和显示复杂的3D模型。它革新了地理数据可视化领域,为创建逼真的三维地图提供了新的可能性。 3DTiles采用了一种层次化的数据结构,将地理信息按照空间范围划分成小块,类似于

    2024年02月07日
    浏览(59)
  • cesium加载显示点云及倾斜模型(3dtiles)

            在cesium加载并显示点云或者倾斜模型之前,需要将不同格式的数据转为3dtiles,具体参考倾斜、点云转3dtiles(osgb、las转3dtiles)切片         转换完成后就可以写代码将其加载到cesium地球上。         有时候加载完成并不能贴地显示,或者贴地显示的具体位置和底

    2024年04月23日
    浏览(48)
  • Cesium介绍及3DTiles数据加载时添加光照效果对比

    Cesium原意是化学元素铯,铯是制造原子钟的关键元素,通过命名强调了Cesium产品专注于基于时空数据的实时可视化应用。熟悉GIS开发领域的读者都知道,Cesium是一个用于创建3D地理空间应用程序的开源JavaScript库,它允许开发人员在Web浏览器中构建高性能的虚拟地球应用,支持

    2024年01月25日
    浏览(52)
  • Cesium.js加载3dTiles格式倾斜摄模型影悬浮空中的解决办法

    在之前的博文中,已经讲过如何在Cesium中加载3dTiles格式的倾斜摄影模型(Cesium加载3D Tiles模型)。最近发现一个问题,新加载的倾斜摄影模型,都漂浮在空中,无法很好的贴合地面。分析了一些这个问题,可能是由于以下原因造成的: 飞行器的精度 倾斜摄影的参数问题 Ces

    2024年02月12日
    浏览(58)
  • Cesium clipping planes 3dtiles模型剖切 3dtiles模型贴地 vue代码

    使用Cesium的clippingPlanes实现对3dtiles模型的剖切效果。 相关官方文档地址:ClippingPlaneCollection、Cesium3DTileset 官方Demo地址:3D Tiles Clipping Planes 官方介绍:Cesium Feature Highlight: Clipping Planes 函数用于加载和显示3D Tiles模型以及剪切平面clipping planes。 在函数内部,首先创建了一个 Cesium.P

    2024年04月23日
    浏览(37)
  • vue+cusium加载3dtiles模型

    结合cesium,有很多种方法,这里举例最简单的,小白入门首选 添加完,就可以正常运行了 正常打包完,直接打开index是不会加载的,有的还会报错,这是跨域所致,要配置服务器 具体步骤 一、打开dist文件,输入cmd 二、配置服务器npm install http-server -g 三、添加请求头http-serv

    2024年02月05日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包