c++ 读取 .tfw 文件数据(读取 .tif 影像中的投影信息)

简介: c++ 读取 .tfw 文件数据(读取 .tif 影像中的投影信息)

 关于读取 .tif 影像的投影信息,下面介绍了两种方法:

       1、按读取 .txt 的方法读取 .tfw 文件;

       2、使用 GDAL 直接从 .tif 影像中读取投影信息!


1、按读取 .txt 的方法读取 .tfw 文件


#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <vector>
#include <stdio.h>
#include <cmath>
#include <opencv2\opencv.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include "opencv2\imgproc\types_c.h"
using namespace std;
using namespace cv;
int main() 
{
  ifstream ifs;             //创建流对象
  ifs.open(".\\wgs.tfw", ios::in);    //打开文件
  if (!ifs.is_open())           //判断文件是否打开
  {
    cout << "打开文件失败!!!";
    return 0;
  }
  //读取正确匹配特征点
  vector<string> item;        //用于存放文件中的一行数据
  string temp;            //把文件中的一行数据作为字符串放入容器中
  while (getline(ifs, temp))          //利用getline()读取每一行,并放入到 item 中
  {
    item.push_back(temp);
  }
  vector<double> res;
  for (int i = 0; i < item.size(); i++)
  {
    //数据类型转换,将string类型转换成float,如果字符串不是有数字组成,q则字符被转化为 0
    res.emplace_back(atof(item[i].c_str()));
  }
  for (double num : res)
    cout << num << endl;
  system("pause");
  return 0;
}


2、使用 GDAL 直接从 .tif 影像中读取投影信息


#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <vector>
#include <stdio.h>
#include <cmath>
#include"gdal_priv.h"
using namespace std;
int main() 
{
  GDALAllRegister();
  GDALDataset* podataset = (GDALDataset*)GDALOpen("..\\WGS84\\wgs.tif", GA_ReadOnly);
    //保存 .tif 文件的投影信息' x=geo[0]、y=geo[3]、像素大小=geo[1]
  double geo[6];
  podataset->GetGeoTransform(geo);
  for (int i = 0; i < 6; i++)
    cout << geo[i] << endl;
  system("pause");
  return 0;
}


相关文章
|
14天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
42 12
|
5天前
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
13 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
2月前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
47 5
|
2月前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
5月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
55 0
Linux c/c++文件的基本操作
|
6月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
5月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
102 0
|
5月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
132 0
|
6月前
|
算法 数据安全/隐私保护 C++
超级好用的C++实用库之MD5信息摘要算法
超级好用的C++实用库之MD5信息摘要算法
143 0
|
6月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
72 0