高清正射影像如何装入手机使用?

随着无人机航测的普及,高清正射影像在房屋确权、土地调查等领域发挥重要作用。本文介绍了如何将tif格式的影像转换为LRP格式,并在手机上通过‘图新地球’和‘外业精灵’app进行查看和定位使用,支持野外作业时的地图需求。
摘要由CSDN通过智能技术生成

无人机航测越来越平民化,人人都能做航测,高清正射影像获取变得很容易,极大地解决了做房屋确权、土地调查、电力巡检、基建工程施工管理等领域对高清地图的需求。

那么问题来了,手上有大量的无人机航测正射影像(tif格式),如何放到手机里面,便于在野外作业的时候看图定位使用?

 

答案:只需要三步。

查看获取全国高清卫星影像

第一步:使用“图新地球”(点击下载)软件把tif格式的影像转成LRP格式。

 

第二步:把LRP文件copy到手机上的任意目录中。

 

第三步:在“外业精灵”app(从手机应用市场下载)的菜单中选择“导入卫星影像”,选择LRP文件即可在图层管理界面看到。

使用 GDAL 库中的 RasterIO 函数可以读取 tiff 正射影像的像素数据。具体步骤如下: 1. 打开 tiff 文件,获取数据集指针: ```c++ GDALDataset* poDataset = (GDALDataset*)GDALOpen("your_tiff_file.tif", GA_ReadOnly); ``` 2. 定义读取区域和像素数目: ```c++ int nXOff = 0; // 读取区域左上角 x 坐标 int nYOff = 0; // 读取区域左上角 y 坐标 int nXSize = poDataset->GetRasterXSize(); // 读取区域宽度 int nYSize = poDataset->GetRasterYSize(); // 读取区域长度 ``` 3. 定义读取的像素数据类型和缓存区: ```c++ GDALDataType eType = poDataset->GetRasterBand(1)->GetRasterDataType(); // 数据类型 int nBandCount = poDataset->GetRasterCount(); // band 数量 GByte* pabyData = new GByte[nXSize * nYSize * nBandCount * GDALGetDataTypeSizeBytes(eType)]; // 缓存区 ``` 4. 调用 RasterIO 函数读取像素数据: ```c++ poDataset->RasterIO(GF_Read, nXOff, nYOff, nXSize, nYSize, pabyData, nXSize, nYSize, eType, nBandCount, NULL, 0, 0, 0); ``` 其中,GF_Read 表示读取模式,pabyData 是指向缓存区的指针,nXSize 和 nYSize 分别是读取区域的宽度和长度,eType 是数据类型,nBandCount 是 band 数量,最后三个参数是用于控制采样和输出的选项,这里可以使用默认值。 5. 关闭数据集并释放内存: ```c++ GDALClose((GDALDatasetH)poDataset); delete[] pabyData; ``` 完整的代码示例如下: ```c++ #include "gdal_priv.h" #include "cpl_conv.h" // for CPLMalloc() #include <iostream> int main() { GDALAllRegister(); // 打开 tiff 文件 GDALDataset* poDataset = (GDALDataset*)GDALOpen("your_tiff_file.tif", GA_ReadOnly); if (poDataset == NULL) { std::cout << "Failed to open tiff file." << std::endl; return 1; } // 定义读取区域和像素数目 int nXOff = 0; int nYOff = 0; int nXSize = poDataset->GetRasterXSize(); int nYSize = poDataset->GetRasterYSize(); // 定义读取的像素数据类型和缓存区 GDALDataType eType = poDataset->GetRasterBand(1)->GetRasterDataType(); int nBandCount = poDataset->GetRasterCount(); GByte* pabyData = new GByte[nXSize * nYSize * nBandCount * GDALGetDataTypeSizeBytes(eType)]; // 调用 RasterIO 函数读取像素数据 poDataset->RasterIO(GF_Read, nXOff, nYOff, nXSize, nYSize, pabyData, nXSize, nYSize, eType, nBandCount, NULL, 0, 0, 0); // 输出第一个像素点的值 int nOffset = 0; // 第一个像素点在缓存区中的偏移量 for (int i = 0; i < nBandCount; i++) { std::cout << "Band " << i + 1 << ": " << (int)pabyData[nOffset + i] << std::endl; } // 关闭数据集并释放内存 GDALClose((GDALDatasetH)poDataset); delete[] pabyData; return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值