Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品。它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。

关于填挖方分析


从百度百科查找到的关于填方和挖方的定义如下:

填方:填方指的是路基表面高于原地面时,从原地面填筑至路基表面部分的土石体积。
挖方:指的是路基表面低于原地面时,从原地面至路基表面挖去部分的土石体积。

在简书里,也找到一篇 基于GIS的填挖方平衡分析 的文章,并给出了在ArcGIS软件中的实操。

本文着重要介绍的是在Cesium中如何计算填方与挖方,其中会借鉴小专栏里的另外一篇文章 Cesium专栏-剖面分析 中关于地形高度采样的内容。

需要注意的是:本文使用的计算方式只是一种研究行方案,用于拓展思路,并不是最准确的计算方式,请评估后慎用!

具体做法


1.定义地形服务,绘制施工区域

  • // 在使用地形服务前,请设置好 Cesium.Ion.defaultAccessToken
  • var terrainProvider = Cesium.createWorldTerrain({
  • requestWaterMask: true,
  • requestVertexNormals: true
  • });
  •  
  • // 定义填挖方的基准面高度
  • var excavateHeight = 2300; // 开挖高度
  • var buryHeight = 6000; // 填埋高度
  •  
  • // 定义施工区域
  • var scope = [
  • Cesium.Cartesian3.fromDegrees(99, 29),
  • Cesium.Cartesian3.fromDegrees(100, 29),
  • Cesium.Cartesian3.fromDegrees(100, 30),
  • Cesium.Cartesian3.fromDegrees(99, 30)
  • ];

2.剖分施工区域,计算每个区域的面积与填挖高度

核心思想:计算 开挖/填埋 的 开挖量/填方量 的 核心思想就是 剖分 微积分

  • // 设置剖分最小单元 0.01°
  • var subdivisionCell = 0.01; // 剖分精度自定义
  • // 存储所有的剖分矩形
  • var subRectangles = [];
  • for (var i = 99; i <= 100; i = i + subdivisionCell) {
  • for (var j = 29; j <= 30; j = j + subdivisionCell) {
  • var subRectangle = new Cesium.Rectangle(
  • Cesium.Math.toRadians(i),
  • Cesium.Math.toRadians(j),
  • Cesium.Math.toRadians(i + subdivisionCell),
  • Cesium.Math.toRadians(j + subdivisionCell)
  • );
  • subRectangles.push(subRectangle);
  • }
  • }

  • // 计算每个矩形的中心点作为这个矩形的代表
  • var subRectanglesCenterPoints = [];
  • subRectangles.forEach(subRectangle => {
  • var centerPoint = Cesium.Cartographic.fromRadians((subRectangle.west + subRectangle.east) / 2, (subRectangle
  • .north +
  • subRectangle.south) / 2);
  • subRectanglesCenterPoints.push(centerPoint);
  • });
  • // 采样每个中心点到达地表的高度
  • var promise = Cesium.sampleTerrainMostDetailed(terrainProvider, subRectanglesCenterPoints);
  • Cesium.when(promise, function (updatedPositions) {
  • // 所有高度
  • var heights = [];
  • updatedPositions.forEach(point => {
  • heights.push(point.height);
  • });
  • });

3.计算填挖方

更多详情见下面链接文章

GIS之家小专栏此文章:Cesium专栏-填挖方分析(附源码下载)

文章提供源码,对本专栏感兴趣的话,可以关注一波

Cesium专栏-填挖方分析(附源码下载)的更多相关文章

  1. Cesium专栏-地形开挖(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  2. cesium 实现风场图效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  3. leaflet 结合 d3.js 实现 geojson 数据地形剖面分析(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  4. Cesium专栏-空间分析之剖面分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  5. Cesium-空间分析之通视分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  6. Cesium专栏-雷达遮罩动态扫描(附源码下载)

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

  7. Cesium专栏-地形开挖2-任意多边形开挖(附源码下载)

    “任意多边形地形开挖” 是“地形开挖”的补充篇,在这节里,我们介绍关于如何使用任意多边形对地形进行开挖,同时,由于有不少小伙伴也咨询了关于“地形开挖”篇后序内容中的填充地形的效果,之前没放出来,是想让 ...

  8. cesium 圆圈警戒扫描(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  9. cesium 雷达扫描(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

随机推荐

  1. Asp.net Core 3.0 Identity 使用smtp账户确认和密码恢复

    当新建一个core项目后,使用identity基架后,确认邮件出现了错误,并不能正常使用. 建立文档在这里 https://docs.microsoft.com/zh-cn/aspnet/core/s ...

  2. 创建raid5(3个raid2个备份)

    创建raid5(3个raid2个备份) 1.首先创建五个磁盘 2.创建RAID5并设置2块备份故障盘: 3.可查看下阵列的详细信息(Spare Devices数量为1): 4.将磁盘阵列格式化为ext ...

  3. luogu P3913 车的攻击 |数学

    题目描述 N×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_i行,第C_i列.求至少被一个车攻击的格子数量. 车可以攻击所有同一行或者同一列的地方. 输入格式 第1 行,2 个整数N,K. 接 ...

  4. HDU3032 Nim or not Nim?(Lasker’s Nim游戏)

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. asp.net core 配置微信返回信息接口

    这玩意弄了两天 微信的API需要升级了 只有一份PHP的DEMO 还有个坑 返回值一定要是 微信传入的echostr 否则 出现配置失败,这个问题耗了我俩小时 最后还是在论坛看到的解决方案. 项目必须 ...

  6. vue 页面间使用路由传参数,刷新页面后获取不到参数的问题

    情况 情况再简单说明一下: 有三个页面(a-列表页面,b-内页1,c-内页2),页面a->页面b->页面c有参数传递.从a进入b后,刷新b页面拿不到a页面传进来的参数.或者b页面再进入c页 ...

  7. servlet读取请求参数后流失效的问题

    在用reset接口的时候,常常会使用request.getInputStream()方法,但是流只能读取一次,一旦想要加上一个过滤器用来检测用户请求的数据时就会出现异常. 在过滤器中通过流读取出用户p ...

  8. 【Eclipse】Spring Tool Suite插件

    Spring Tool Suite插件 最新下载地址:https://spring.io/tools3/sts/all 以前下载地址:https://spring.io/tools3/sts/lega ...

  9. python学习-os引入

    # 引入import os # 路径处理 -- 外部资源-os # 获取当前的工作路径workspace = os.getcwd() # os模块下的getcwd函数print(workspace) ...

  10. CSS3新特性简单总结(持续补充常用到的情景)

    1.CSS3边框border-radius 左上右下box-shadow box-shadow: 水平阴影(可负值,必) 垂直阴影(可负值,必) 模糊距离 阴影尺寸 颜色颜色 inset(将外部阴影改 ...