Vue + Cesium 缓冲分析实现

这篇博客详细介绍了如何在Cesium中进行缓冲分析,包括点、线、面的缓冲区创建,并提供了关键代码示例。通过Vue组件调用,实现了不同类型的缓冲分析功能,辅助地理空间数据的处理和展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、缓冲分析效果图

二、部分关键代码

1、点缓冲分析

2、线缓冲分析

3、面缓冲分析

4、生成缓冲区

三、vue中调用

1、引入缓冲分析对应类

2、点线面的缓冲分析调用方法

四、缓冲分析类源码


一、缓冲分析效果图

二、部分关键代码

1、点缓冲分析

  /**
   * @author: 
   * @Date: 2022-03-15 18:00:49
   * @note: 注意事项
   * @description: 创建点的缓冲区
   */
  createPointBuffer() {
    this.addPoint()
    const coordinate = this.cartesianToLatlng(this.positions[0]).slice(0, 2);
    let pointF = turf.point(coordinate)
    let buffered = turf.buffer(pointF, this.radius)
    let coordinates = buffered.geometry.coordinates;
    let points = coordinates[0]
    let degreesArray = this.pointsToDegreesArray(points);
    this.createBuffer(Cesium.Cartesian3.fromDegreesArray(degreesArray))
  }

2、线缓冲分析

  /**
   * @author:
   * @Date: 2022-03-15 18:00:00
   * @note: 注意事项
   * @description: 创建线缓冲区
   */
  createLineBuffer() {
    var points = this.getLngLats(); // 坐标数组
    var polylineF = turf.lineString(points);
    var bufferd = turf.buffer(polylineF, this.radius);
    var coordinates = bufferd.geometry.coordinates;
    points = coordinates[0]
    var degreesArray = this.pointsToDegreesArray(points)
    this.createBuffer(Cesium.Cartesian3.fromDegreesArray(degreesArray))
  }

3、面缓冲分析

  /**
   * @author: 
   * @Date: 2022-03-15 17:57:41
   * @note: 注意事项
   * @description: 计算多边形缓冲区
   */  
    createPolygonBuffer() {
    var points = this.getLngLats(); // 坐标数组
    points.push(points[0])
    var polygonF = turf.polygon([points]);
    var bufferd = turf.buffer(polygonF, this.radius);
    var coordinates = bufferd.geometry.coordinates;
    points = coordinates[0]
    var degreesArray = this.pointsToDegreesArray(points)
    this.createBuffer(Cesium.Cartesian3.fromDegreesArray(degreesArray))
  }

4、生成缓冲区

  /**
   * @author: 
   * @Date: 2022-03-15 18:01:35
   * @note: 注意事项
   * @description: 生成缓冲区坐标数据
   */
  createBuffer(array) {
    const bufferPolygon = this.viewer.entities.add({
      polygon: {
        hierarchy: new Cesium.PolygonHierarchy(array),
        material: Cesium.Color.RED.withAlpha(0.5),
        classificationType: Cesium.ClassificationType.BOTH
      },
    });
    this.bufferEntities.push(bufferPolygon)
  }

三、vue中调用

1、引入缓冲分析对应类


import bufferAnalysisUtil from '../../../../bufferAnalysisUtil'

2、点线面的缓冲分析调用方法

    /**
     * @author: 
     * @Date: 2022-03-16 14:29:53
     * @note: 注意事项
     * @description: 缓冲分析
     */    
    bufferTool(){
      switch (this.bufferLabel) {
        case 'Point':
          m_bufferAnalysis.active({type:'Point',radius: Number(this.input) / 1000})
          break;
        case 'Line':
          m_bufferAnalysis.active({type:'Line',radius: Number(this.input) / 1000})
          break;
        case 'Polygon':
          m_bufferAnalysis.active({type:'Polygon',radius: Number(this.input) / 1000})
          break;
        case 'clear':
          m_bufferAnalysis.deactive()
          break;
      }
    },

四、缓冲分析类源码

下载:缓冲分析类 bufferAnalysisUtil

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向着太阳往前冲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值