基于GDAL库读取tiff文件的C++代码

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <math.h>

#include "gdal_priv.h"
#include "gdal.h"

BYTE * imread(const char *filename, int &nbands, int &lWidth, int &lHeight)
{
	GDALAllRegister();
	GDALDataset *pDataSet = (GDALDataset *)GDALOpen(filename, GA_ReadOnly);
	if (!pDataSet)
	{
		printf("open tif file failed!\n");
		return NULL;
	}
	nbands = pDataSet->GetRasterCount();
	lWidth = pDataSet->GetRasterXSize();
	lHeight = pDataSet->GetRasterYSize();
	BYTE* pData = new BYTE[lWidth*lHeight*nbands];//{x,y}(0),{x,y}(1),...,{x,y}(n)
	pDataSet->RasterIO(GF_Read, 0, 0, lWidth, lHeight, pData, lWidth, lHeight, GDT_Byte, nbands, 0, 0, 0, 0);

	return pData;
}

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在three.js中显示tiff文件,您需要使用gdal将其加载为图像数据,然后将其转换为three.js支持的格式。以下是一些步骤: 1. 安装gdal 使用以下命令安装gdal: ``` pip install gdal ``` 2. 使用gdal加载tiff文件 使用以下代码加载tiff文件: ```python from osgeo import gdal # 打开tiff文件 ds = gdal.Open('path/to/tiff/file') # 读取tiff文件中的图像数据 data = ds.ReadAsArray() # 获取图像数据的相关信息 width = ds.RasterXSize height = ds.RasterYSize channels = ds.RasterCount # 关闭tiff文件 ds = None ``` 3. 转换图像数据为three.js支持的格式 使用以下代码将图像数据转换为three.js支持的格式: ```javascript // 将图像数据转换为three.js支持的格式 var texture = new THREE.DataTexture(data, width, height, channels, THREE.RGBAFormat); // 设置纹理属性 texture.magFilter = THREE.LinearFilter; texture.minFilter = THREE.LinearFilter; texture.wrapS = THREE.ClampToEdgeWrapping; texture.wrapT = THREE.ClampToEdgeWrapping; // 创建材质 var material = new THREE.MeshBasicMaterial({ map: texture }); // 创建网格 var geometry = new THREE.PlaneGeometry(width, height); var mesh = new THREE.Mesh(geometry, material); // 添加网格到场景中 scene.add(mesh); ``` 这些代码将创建一个平面网格,其中纹理使用从tiff文件加载的图像数据。您可以根据需要调整平面网格的大小和位置。 请注意,由于gdal是用C++编写的,因此在使用Python时可能会遇到一些性能问题。如果您需要更高的性能,请考虑使用其他,例如OpenCV。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值