cesium 区域掩膜 显示区域影像 反选设置展示

效果如下图,反选,设置地表透明,设置立体墙
在这里插入图片描述

  let viewer = window.viewer;

      //设置地表透明
      let globe = window.viewer.scene.globe;
      let scene = window.viewer.scene;
      globe.depthTestAgainstTerrain = false;
      viewer.scene.skyAtmosphere.show = false; //关闭大气层阴影
      // screenSpaceCameraController获取用于摄像机输入处理的控制器;
      // enableCollisionDetectio启用或禁用摄影机与地形的碰撞检测,
      //   为true不会进入地下;
      // scene.screenSpaceCameraController.enableCollisionDetection = false;
      globe.translucency.frontFaceAlphaByDistance = new Cesium.NearFarScalar(
        400.0,
        0.0,
        800.0,
        1.0
      );
      globe.translucency.enabled = true;
      globe.translucency.frontFaceAlphaByDistance.nearValue = Cesium.Math.clamp(
        0.3,
        0.0,
        0.1
      );
      globe.translucency.frontFaceAlphaByDistance.farValue = 1.0;
      viewer.scene.screenSpaceCameraController.minimumZoomDistance = 10000;
      viewer.scene.screenSpaceCameraController.maximumZoomDistance = 50000;
      let bounds = [];
      // viewer.scene.globe.depthTestAgainstTerrain = true;
      let response = pinggubianjieJson;
      const maskpointArray = [];
      for (
        let i = 0;
        i < response.features[0].geometry.coordinates[0].length;
        i++
      ) {
        bounds.push([
          response.features[0].geometry.coordinates[0][i][0],
          response.features[0].geometry.coordinates[0][i][1],
        ]);
        maskpointArray.push(response.features[0].geometry.coordinates[0][i][0]);
        maskpointArray.push(response.features[0].geometry.coordinates[0][i][1]);
      }
      boundspolygon = turf.polygon([bounds]);
      var maskspoint = Cesium.Cartesian3.fromDegreesArray(maskpointArray);
      const entity1 = new Cesium.Entity({
        id: 1,
        polygon: {
          hierarchy: {
            // 绘制的区域太大容易卡顿
            positions: Cesium.Cartesian3.fromDegreesArray([
              // 100, 0, 100, 89, 150, 89, 150, 0,
              113.37890625, 37.50972584293751, 121.28906250000001,
              37.50972584293751, 121.28906250000001, 42.35854391749705,
              113.37890625, 42.35854391749705, 113.37890625, 37.50972584293751,
            ]),
            // holes是图形内需要挖空的区域
            holes: [
              {
                positions: maskspoint,
              },
            ],
          },
          material: Cesium.Color.fromCssColorString("#0C1F34"),
          // material: Cesium.Color.WHITE.withAlpha(1),
        },
      });

      const entity3 = new Cesium.Entity({
        name: "动态立体墙",
        wall: {
          positions: maskspoint,
          maximumHeights: maskspoint.map((res) => {
            return 600;
          }),
          minimumHeights: maskspoint.map((res) => {
            return -600;
          }),
          material: Cesium.Color.fromCssColorString("#6dcdeb"),
        },
      });
      viewer.entities.add(entity1);
      viewer.entities.add(entity3);
      viewer.flyTo(entity3, {
        duration: 3,
      });

cesium 可以关注微信公众号 Da6668Lei 有很多的ceisum特效展示案例,数据格式讲解,代码详细讲解等

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Cesium是一种地理信息系统(GIS)工具,它可以用来创建和展示区域等高线。区域等高线是一种在地图上表示地形高度变化的方法。它们通过连接同一等高线的所有点来形成轮廓线,使我们能够直观地了解地势起伏和地形特征。 在Cesium中,创建区域等高线可以通过以下几个步骤完成。首先,我们需要获取地形数据。可以从现有的GIS数据库、卫星图像或其他数据源中获取。然后,将这些数据导入到Cesium中。Cesium支持多种数据格式,如GeoTIFF、DEM等。 在导入数据后,我们可以使用Cesium中的绘图工具择并标出我们感兴趣的区域。然后,通过插件或内置的工具,我们可以生成等高线。Cesium提供了一些可定制的参数,如等高线间距、颜色、线宽等,以满足不同需求。生成等高线后,我们可以在地图中展示它们,并进行进一步的可视化和分析。 使用Cesium区域等高线可以帮助我们更好地理解和分析地形特征。它们可以用于城市规划、土地利用、交通规划等多个领域。例如,在城市规划中,区域等高线可以帮助我们确定最佳的建筑位置以及道路和交通网络的设计。而在农业领域,区域等高线可以用来识别适合农作物种植的地区。 总之,Cesium提供了一个强大的工具,可以创建和展示区域等高线。使用它,我们可以更好地理解地形特征,并在各个领域中应用这些信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值