第二个GDAL程序

news2024/10/5 18:31:57

之前看过一个GDAL入门程序,下面再看一个,熟悉一下GDAL;

#include "stdafx.h"
#include <gdal_priv.h>

int main()
{
	//注册文件格式
	GDALAllRegister();

	const char* pszFile = "D:\\3dtile\\GDALtestdata\\7-Data\\calss.tif";
	//使用只读方式打开图像
	GDALDataset *poDataset = (GDALDataset*)GDALOpen(pszFile, GA_ReadOnly);
	if (poDataset == NULL)
	{
		printf("File: %s不能打开!\n", pszFile);
		return 0;
	}

	//输出图像的格式信息
	printf("Driver:%s/%s\n",
		poDataset->GetDriver()->GetDescription(),
		poDataset->GetDriver()->GetMetadataItem(GDAL_DMD_LONGNAME));

	//输出图像的大小和波段个数
	printf("Size is%dx%dx%d\n",
		poDataset->GetRasterXSize(), poDataset->GetRasterYSize(),
		poDataset->GetRasterCount());

	//输出图像的投影信息
	if (poDataset->GetProjectionRef() != NULL)
		printf("Projectionis `%s'\n", poDataset->GetProjectionRef());

	//输出图像的坐标和分辨率信息
	double adfGeoTransform[6];
	if (poDataset->GetGeoTransform(adfGeoTransform) == CE_None)
	{
		printf("Origin =(%.6f,%.6f)\n",
			adfGeoTransform[0], adfGeoTransform[3]);

		printf("PixelSize = (%.6f,%.6f)\n",
			adfGeoTransform[1], adfGeoTransform[5]);
	}

	//读取第一个波段
	GDALRasterBand *poBand = poDataset->GetRasterBand(1);

	//获取该波段的最大值最小值,如果获取失败,则进行统计
	int            bGotMin, bGotMax;
	double         adfMinMax[2];
	adfMinMax[0] = poBand->GetMinimum(&bGotMin);
	adfMinMax[1] = poBand->GetMaximum(&bGotMax);

	if (!(bGotMin&& bGotMax))
		GDALComputeRasterMinMax((GDALRasterBandH)poBand, TRUE, adfMinMax);

	printf("Min=%.3fd,Max=%.3f\n", adfMinMax[0], adfMinMax[1]);

	int nXSize = poBand->GetXSize();
	float *pafScanline = new float[nXSize];

	//读取图像的第一行数据
	poBand->RasterIO(GF_Read, 0, 0, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0);

	delete[]pafScanline;

	//关闭文件
	GDALClose((GDALDatasetH)poDataset);
}

输出了tif文件的一些信息,然后输出了第一个波段的最大值最小值; 

项目的配置是这样,

 

 

 

D盘要有这些;

 

gdal的dll拷贝到项目中;

这是一个书上的代码和示例数据;先了解一下;

我还不太了解tif文件;下面看一下gis的tif文件和通用的tif文件;

GEOTIFF和TIFF都是图像文件格式,但前者包含了地理元数据,使其适用于地理信息领域,而后者是通用的图像文件格式,用途广泛,但通常不包含地理信息。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA使用-通过Database面板访问数据库

文章目录 前言操作过程注意事项1.无法下载驱动2.“Database”面板不显示数据库表总结前言 作为一款强大IDE工具,IDEA具有很多功能,本文将以MariaDB数据库访问为例,详细介绍如何通过IDE工具的Database面板来访问数据库。 操作过程 不同的版本操作会略有差异,这里我们用于演…

【Java笔试强训】Day8(WY20 两种排序方法、HJ108 求最小公倍数)

WY20 两种排序方法 链接&#xff1a;两种排序方法 题目&#xff1a; 考拉有n个字符串字符串&#xff0c;任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法&#xff1a; 1.根据字符串的字典序排序。例如&#xff1a; “car” < “carriage” < “c…

Kubernetes 二进制部署

目录 服务器配置 部署 etcd 集群 准备签发证书环境 部署 docker引擎 flannel网络配置 K8S中Pod网络通信 Overlay Network VXLAN Flannel简介 Flannel工作原理 ETCD之Flannel提供说明 Flannel部署 在master01节点上操作 在所有node节点上操作(以node01为例) 修改d…

【Nginx37】Nginx学习:SSL模块(一)简单配置与指令介绍

Nginx学习&#xff1a;SSL模块&#xff08;一&#xff09;简单配置与指令介绍 又是一个重点模块&#xff0c;SSL 模块&#xff0c;其实就是我们常见的 HTTPS 所需要的配置模块。HTTPS 的重要性不用多说了吧&#xff0c;现在所有的 App、小程序 都强制要求是 HTTPS 的&#xff0…

【数据结构初阶】之单链表

【数据结构初阶】之链表 1. 链表是什么2. 单链表的逻辑结构和物理结构 3.如何创建一个单链表的自定义类型4.单链表的增删查改及各种功能的实现4.1 单链表创建一个节点4.2 单链表的头插4.2.1 头插的函数设计&#xff08;参数类型及其返回值&#xff09;4.2.1 头插的函数实现 4.3…

【SOC基础】单片机学习案例汇总 Part1:电机驱动、点亮LED

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

mybatisplus 增删改查

文章目录 1.BaseMapperBaseMapper中提供的CRUD方法&#xff1a; CURD实例通用ServiceIService中的CRUD方法 Service层操作数据实例 1.BaseMapper 说明: 通用 CRUD 封装BaseMapper 接口&#xff0c;为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器…

集成测试、单元测试、系统测试之间的关系和区别

前言 为了使软件正常工作&#xff0c;所有单元都应集成在一起并正常运行。集成测试就像是要求不同工种的工人修建一个房子&#xff0c;希望他们都团结协作。如何判断他们在一起是否可以按照计划完成建设呢&#xff1f;唯一了解的方法是通过将它们全部拉在一起并测试它们如何相互…

写时拷贝+进程终止

目录 一、写时拷贝 二、创建多进程 三、进程终止 &#xff08;一&#xff09;main函数的返回值 1. main函数的返回值 2. 退出码 3. 查看进程的退出码 &#xff08;二&#xff09;错误码VS退出码 &#xff08;三&#xff09;代码异常终止 1. 基本概念 2. 信号 &…

Visual Studio 2022打不开net4.5项目的解决方案

1 问题 是因为你本机没有装相关的netframework的包&#xff0c;具体文件夹的路径在&#xff1a; C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework 如下图&#xff1a; 进入目录看&#xff0c;我的net4.5.2是空的&#xff0c;如下图&#xf…

jsp 网上订餐Myeclipse开发mysql数据库web结构java编程计算机网页项目

选题目的 本设计课题为网上订餐系统设计与实现&#xff0c;提供无纸化点餐、支付&#xff0c;实现点餐快捷&#xff0c;方便管理。餐厅电子化是目前的潮流和趋势&#xff0c;大多数企业都将公司内部运营流程电子化。网上订餐管理系统应运而生&#xff0c;能够有效提高公司的管…

【干货】<img/>加载成功||失败

功能描述 img标签绑定URL时&#xff0c;图片加载会出现如下情况&#xff1a; 加载成功展示url加载失败显示默认图片&#xff08;require(/assets/images/imgError.png)&#xff09; dom代码 <img :src"url" alt"" error"errorImageShow($even…

第57篇-某钩招聘网站加密参数分析【2023-10-31】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析1.X-S-HEADER参数2.请求参数data3.响应机密值data一、前言 网址: aHR0cHM6Ly93d3cubGFnb3UuY29t…

优化 FPGA HLS 设计

优化 FPGA HLS 设计 用工具用 C 生成 RTL 的代码基本不可读。以下是如何在不更改任何 RTL 的情况下提高设计性能。 介绍 高级设计能够以简洁的方式捕获设计&#xff0c;从而减少错误并更容易调试。然而&#xff0c;经常出现的问题是性能权衡。在高度复杂的 FPGA 设计中实现高性…

【element-ui】表格

效果展示 组件代码 <el-table class"compTableClass" ref"tableOOOOO":class"(className in tableConfig)?tableConfig.className:":data"tableConfig.data" :height"tableConfig.height" style"width: 100%"…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all&#xff08;匹配所有&#xff09;1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

CUMT-----Java课后第三章编程作业

文章目录 一、题11.1 题目描述1.2 代码块1.3 运行截图 二、题22.1 题目描述2.2 代码块2.3 运行截图 一、题1 1.1 题目描述 1.2 代码块 public class Book {private String name;private int pages;public String getname(){return name;}public void setname(String name){th…

HarmonyOS(二)—— 初识ArkTS开发语言(上)之TypeScript入门

前言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;而Huawei进一步推出了ArkTS。因此在学习使用ArkTS前&#xff0c;需要掌握基本的TS开发技能。 ArkTS介绍 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&am…

网络安全安全领域最容易搞混的四个名词:Network网络安全、Cyber网络安全、数据安全、信息安全

在安全领域我们经常会遇到Network网络安全、Cyber网络安全、数据安全、信息安全&#xff0c;它们看起来都差不多&#xff0c;那么它们之间有什么区别呢&#xff1f; 如果你对网络安全入门感兴趣&#xff0c;那么你需要的话可以点击这里&#x1f449;【入门&进阶全套282G学…

基于PyTorch的共享单车使用数量预测研究

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、预测模型的实现3.1数据的获取和预处理3.2划分数据集3.3构建神经网络 二、PyTorch框架三 原理2.1前馈神经网络2.1.1 BP神经网络 四 预测效果验证4.1小批量梯度下降4.2批量梯度下降4.3随机梯度下降 五 结 论目录…