Cesium tif上球

方法一

setTifFn 函数封装

const setTifFn = async () => {
  const loading = ElLoading.service({
    lock: true,
    text: 'Loading',
    background: 'rgba(0, 0, 0, 0.7)'
  });
  axios.get('/tif/航空站/0e87918e39ee449eb721fb0f4d2b4980.tif', { responseType: 'blob' }).then(async (res: any) => {
    const tiff = await fromBlob(res.data);
    let image = await tiff.getImage();
    let [west, south, east, north] = image.getBoundingBox();
    const code = image.geoKeys.ProjectedCSTypeGeoKey || image.geoKeys.GeographicTypeGeoKey;
    const [red = [], green = [], blue = []] = await image.readRasters();
    const canvas = document.createElement('canvas');
    let width = image.getWidth();
    let height = image.getHeight();
    canvas.width = width;
    canvas.height = height;
    let ctx: any = canvas.getContext('2d');
    let imageData = ctx.createImageData(width, height);
    for (var i = 0; i < imageData.data.length / 4; i += 1) {
      imageData.data[i * 4 + 0] = red[i];
      imageData.data[i * 4 + 1] = green[i] || 0;
      imageData.data[i * 4 + 2] = blue[i] || 0;
      imageData.data[i * 4 + 3] = red[i] === 0 ? 0 : 255;
    }
    ctx.putImageData(imageData, 0, 0);
    let rectangle = window.Cesium.Rectangle.fromDegrees(west, south, east, north);
    let du = canvas.toDataURL();
    window.Viewer.imageryLayers.addImageryProvider(
      new window.Cesium.SingleTileImageryProvider({
        url: du,
        rectangle
      })
    );
    window.Viewer.camera.setView({
      destination: rectangle
    });
    loading.close();
  });
};

geotiff.js

https://github.com/geotiffjs/geotiff.js

方法二

if (data.mbnm) {
    this.targetId = String(data.mbnm);
    this.$refs.targetDetails.getApiSelectTargetDetail(data.mbnm, res => {
      let geoServerData = res.geoserverImageList[0].fwdz.split('?layers=');
      _this.tifLayer = new Cesium.WebMapServiceImageryProvider({
        url: process.env.VUE_APP_GEOAPIURL + geoServerData[0],
        layers: 'LFQ:' + geoServerData[1],
        style: 'raster',
        parameters: {
          service: 'WMS',
          format: 'image/png',
          transparent: true
          // srs:'EPSG:4326'
        }
      });
      let dataS = window.viewer.imageryLayers.addImageryProvider(_this.tifLayer);
      _this.defaultCheckedKeys = [2];
      this.layerList.push(dataS);
    });
    this.$refs.targetDetails.TabSwitch(3, data.mbnm);
    this.isdirectoryTreeDetails = true;
  }


  window.earth.imageryLayers.remove(tifAll[i]); // 重置场景
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值