十四、openlayers官网示例Cloud Optimized GeoTIFF (COG) from a Blob示例——加载blob格式GeoTIFF数据源

官网demo地址:

Cloud Optimized GeoTIFF (COG)

这篇讲的是加载blob格式的GeoTIFF数据源。

我们找一个tif文件下载下来

https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/36/Q/WD/2020/7/S2A_36QWD_20200701_0_L2A/TCI.tif

放到项目里

然后使用网络请求获取文件并且转为blob格式就可以加载到地图上啦。

fetch("data/tcl.tif")
      .then((response) => response.blob())
      .then((blob) => {
        const source = new GeoTIFF({
          sources: [
            {
              blob: blob,
            },
          ],
        });
})
})

小细节:

source.getView().then的回调里还可以获取到View对象,还可以更改属性。

view: source.getView().then((viewConfig) => {
            console.log('viewConfig',viewConfig);
            viewConfig.showFullExtent = true;
            return viewConfig;
          }),

完整代码:

<template>
  <div class="box">
    <h1>Cloud Optimized GeoTIFF (COG) from a Blob</h1>
    <div id="map"></div>
    <div class="btn"></div>
  </div>
</template>

<script>
import GeoTIFF from "ol/source/GeoTIFF.js";
import Map from "ol/Map.js";
import TileLayer from "ol/layer/WebGLTile.js";
export default {
  name: "",
  components: {},
  data() {
    return {
      map: null,
    };
  },
  computed: {},
  created() {},
  mounted() {
    fetch("data/tcl.tif")
      .then((response) => response.blob())
      .then((blob) => {
        const source = new GeoTIFF({
          sources: [
            {
              blob: blob,
            },
          ],
        });

        const map = new Map({
          target: "map",
          layers: [
            new TileLayer({
              source: source,
            }),
          ],
          view: source.getView().then((viewConfig) => {
            console.log('viewConfig',viewConfig);
            viewConfig.showFullExtent = true;
            return viewConfig;
          }),
        });
      });
  },
  methods: {},
};
</script>

<style lang="scss" scoped>
#map {
  width: 100%;
  height: 500px;
}
.box {
  height: 100%;
}
</style>

### 使用 OpenLayers 加载 GeoTIFF 文件 #### 安装必要的依赖项 为了在项目中使用 OpenLayersGeoTIFF 功能,需要安装 `ol` 库以及支持 GeoTIFF 的库 `geotiff.js`。可以通过 npm 或 yarn 来完成这些依赖的安装[^2]。 ```bash npm install ol geotiff --save ``` 或者通过 CDN 引入 `geotiff.js`: ```html <script src="https://cdn.jsdelivr.net/npm/geotiff"></script> ``` --- #### 创建地图实例并加载 GeoTIFF 数据 以下是完整的代码示例,展示如何使用 OpenLayers 渲染 GeoTIFF 文件。此方法适用于本地文件路径或远程 URL 地址的数据源[^1][^3]。 ```javascript import 'ol/ol.css'; import Map from 'ol/Map'; import View from 'ol/View'; import TileLayer from 'ol/layer/WebGLTile'; import { GeoTIFF as GeoTIFFSource } from 'ol/source'; // 初始化地图视图 const map = new Map({ target: 'map', layers: [], view: new View({ center: [0, 0], zoom: 2, }), }); // 获取 GeoTIFF 文件并通过 Blob 格式加载 fetch('path/to/your/tcl.tif') // 替换为实际的 GeoTIFF 文件地址 .then((response) => response.blob()) .then((blob) => { const geoTiffSource = new GeoTIFFSource({ sources: [ { blob: blob, }, ], }); const tileLayer = new TileLayer({ source: geoTiffSource, }); map.addLayer(tileLayer); }); ``` 上述代码片段展示了如何利用 Fetch API 将 GeoTIFF 文件转换为 Blob 对象,并将其传递给 `GeoTIFFSource` 实现渲染功能[^5]。 --- #### 处理常见错误 当尝试加载 GeoTIFF 文件时,可能会遇到一些常见的问题,例如显示 undefined 或无法正常渲染的情况。这通常是因为缺少必要的外部脚本(如 `geotiff.js`),或者是未正确配置数据源所致。确保按照官方文档中的说明引入所需的资源。 另外,在某些情况下可能还需要额外处理颜色映射逻辑来实现更精确的颜色渲染效果[^4]。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值