GDAL(python) 之GeoTransform

article/2025/11/6 1:20:24

演示

使用GDAL库读出的dataset带有两个重要的地理参数,分别是Projection和GeoTransform。有了这两个参数,就确定了影像的地理位置。

再GDAL for Python中,GeoTransform是一个六个元素的元组。
例如,我找了一个影像,读取并显示它的GeoTransform,则为如下形式:
在这里插入图片描述

形式

(486892.5, 15.0, 0.0, 4105507.5, 0.0, -15.0)

六个参数分别为:

左上角x坐标, 水平分辨率,旋转参数, 左上角y坐标,旋转参数,竖直分辨率。如另一篇博客中所说,满足如下关系式:
在这里插入图片描述
一般来说,旋转参数都为0。

实践

有了上述知识,不妨利用一张图片进行实际的验证。

总体的思路是,首先读取我下载的某Landsat8数据集的全色波段,然后截取一个2000 * 2000的部分。

然后我们手动的把图片分成上下两部分,然后给上下两部分按照他们的情况,定义新的GeoTransform,再将图片写出,看看我们定义的GeoTransform是否正确,以此验证我们的知识。

下面是代码验证:

import numpy as np
from osgeo import gdal, gdal_array
import osfilename = "F:\SRGAN_program\dataset\LC81290352019095LGN00\LC08_L1TP_129035_20190405_20190422_01_T1_B8.tif"
dataset = gdal.Open(filename, gdal.GA_ReadOnly)
if dataset == None:raise Exception("Image name error.")
else:datatype = np.float16height = dataset.RasterYSizewidth = dataset.RasterXSizeprojection = dataset.GetProjection()geotransform = dataset.GetGeoTransform()band_image = np.zeros((height, width, 1), dtype = datatype)band_data = dataset.GetRasterBand(1)band_image[:, :, 0] = band_data.ReadAsArray()del dataset
test_image = band_image[4000:6000, 4000:6000, :]
del band_imageimage_part1 = test_image[:1000, :2000, :] # 取前一千行
image_part2 = test_image[1000:2000, :2000, :] # 取1000 ~ 2000行new_x_geo = geotransform[0] + geotransform[1] * 0 # 新横坐标起始量
new_y_geo = geotransform[3] + geotransform[5] * 1000 # 新纵坐标起始量
new_geotransform = (new_x_geo, geotransform[1], geotransform[2], new_y_geo, geotransform[4], geotransform[5])save_path1 = "F:\\SRGAN_program\\dataset\\LC81290352019095LGN00\\test\\top"
save_path2 = "F:\\SRGAN_program\dataset\\LC81290352019095LGN00\\test\\bottom"def write(save_path, image, projection, geotransform, format = 'ENVI'):LANDSAT8_MULTI_BAND = 7dtype = gdal.GDT_Float32DIMENSION_OF_IMAGE = 3if(len(image.shape) != DIMENSION_OF_IMAGE):raise Exception("The dimension of the image is incorrect.") else:height = image.shape[0]width = image.shape[1]channels = image.shape[2]driver = gdal.GetDriverByName(format)ds_to_save = driver.Create(save_path, width, height, channels, dtype)ds_to_save.SetGeoTransform(geotransform)ds_to_save.SetProjection(projection)for band in range(1):ds_to_save.GetRasterBand(band + 1).WriteArray(image[:, :, band])ds_to_save.FlushCache()del imagedel ds_to_save
write(save_path1, image_part1, projection, geotransform)
write(save_path2, image_part2, projection, new_geotransform)

结果

我们将图片分成了上下两部分,并写入了我们定义的新的地理参考。下面从ENVI打开来显示一下,看我们定义的是否正确。
下半部分:
在这里插入图片描述
上半部分:
在这里插入图片描述
总体显示:


http://chatgpt.dhexx.cn/article/FNfvsoVI.shtml

相关文章

Pycharm安装gdal库

1gdal下载地址https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 2复制文件到项目venv\Scripts文件夹下 Shift鼠标右键 在此处打开命令窗口 输入pip install GDAL-3.2.2-cp38-cp38-win_amd64.whl 显示安装成功 或者按shift在此处打开命令窗口 直接输入 pip install GDAL…

新手使用GDAL详细教程

文章是po主参考了很好的GDAL初学者资料,VS2010中项目配置引入GDAL,经过自己的实际操作检验归纳 总结的,仅属于半原创。 首先介绍一下实验的环境,win7下32位系统,预先配置了VS2013。 步骤一:下载GDAL源码。…

Java使用GDAL

在使用Java调用GDAL之前,先说明一下编译。在编译的时候,需要JRE、Ant和SWIG这三个东西,没有的先下载这两个东西,下载完之后,安装,ANT和SWIG直接解压就行,不用安装。接下来用记事本打开nmake.opt…

Gdal环境配置(Windows系统)

​​​​​ 目录 前言 一、下载安装 二、环境配置 三、验证 前言 Gdal是一个空间数据分析处理和格式转换的开源工具。 官方地址:GDAL — GDAL 文档 一、下载安装 下载地址:https://www.gisinternals.com/query.html?contentfilelist&filerel…

VS2022配置GDAL

GDAL(Geospatial Data Abstraction Library)是一个用于处理地理空间数据的开源库。它提供了一组功能丰富的API,用于读取、写入、转换和处理各种地理空间数据格式,包括栅格数据(如卫星图像、数字高程模型)和…

GDAL源码剖析(一)

前言:一直在使用和研究GDAL的相关东西,发现网上对GDAL的内容倒是不少,但是很少有系统的介绍说明,以及内部的一些结构说明,基于这些原因,将本人的一些粗浅的理解放在此处,形成一个系列&#xff0…

gis利器之Gdal(一)

现如今,随着很多行业对gis的了解越来越深入,很多关于智慧的标签便纷纷贴上了,比如智慧园区、智慧交通、智慧城市、智慧校园等等诸多的行业深度应用。国内外有很多gis的相关产品,国外有大名鼎鼎的arcgis,国内有超图、ma…

GDAL教程(一)查看帮助文档

一、在GDAL官网https://www.gdal.org/可以查看英文帮助。 二、Main Page主页 1.开头介绍了什么是GDAL(Geospatial Data Abstraction Library地理空间数据抽象库)以及GDAL源码各个版本的下载链接。 2.User Oriented Documentation使用定向的文档&#x…

Ubuntu 安装 GDAL C++库

1. GDAL简介 GDAL 是读写大量的栅格空间数据格式的广泛应用的开源库。该库起源于 1998年,已经大幅进化。 它支持他自己的数据模型和应用程序接口(API)。 从最初的单一发展的起源,GDAL已发展成为一个分布式的项目,开发人员的数量相对比较大。 GDAL官网下载以及安装教程。 2. …

JAVA使用GDAL入门指南

如果你打开了这篇博客,那么你肯定和我当初一样的苦逼。 话不多说,分析下我学习gdal的一丢丢心得。 1.你要知道什么GDAL,它是干什么的。 gdal到底是什么呢,相信你已经百度过了。。。。 ** 2.Java集成gdal 2.1 下载Java版本的gd…

在Python中安装GDAL(最简单,最详细图文教程)

在Python中安装GDAL(最简单,最详细图文教程) 今天是2021年1月20日。为了安装在pythong中安装GDAL,我浏览了几十个网页,发现有99%都是垃圾,浪费了我非常多的时间。最后我安装成功了,在这里我把我的全过程放在这里。希望大家少走些弯路,也少浪费点时间。 首先我的专业背…

Python中安装GDAL库

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理,可以用来处理栅格数据如遥感影像、DEM等。 1. 下载GDAL 安装GDAL库是…

python安装gdal库

1、直接输入pip install gdal,报错无法安装。 原因:GDAL不是纯净的python库,无法像pip install flask这样安装库文件。 解决方法: 2、首先要明确自己安装路径下有没有gdal这个文件 在winr,输入cmd,键入…

Gdal总结

1、头文件 #include<gdal.h> #include<gdal_priv.h> #include<gdalwarper.h> 2、注册驱动设置中文路径加载数据 //注册所有的驱动GDALAllRegister();//设置支持中文路径和文件名CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); /…

gdal概览

GDAL 1 gdal库2 栅格驱动3 栅格数据集&#xff08;就是包含各种栅格属性的一个类&#xff09;3.1 坐标&#xff08;6个参数&#xff09;3.1.2 tif文件的地理坐标&#xff08;两种情况&#xff09; 3.2 波段数、大小、投影等信息3.3 读取栅格像元3.4 创建栅格影像3.4.1 直接用数…

2.GDAL简介

1. 什么使GDAL GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库),在一个X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库&#xff0c;它利用抽象数据模型来表达所支持的各种文件格式&#xff0c;还使用一系列命令行来进行数据转换和处理。 …

GDAL学习笔记02:GDAL基础知识

你的习惯决定了你会成为什么样的人。 GDAL学习笔记02&#xff1a;GDAL基础知识 前言1. 版本2. 摘要3. 说明4. 微信公众号GISRSGeography 一、GDAL简介二、导入GDAL三、读取遥感影像的信息 前言 1. 版本 1.1 山东青岛&#xff0c;2022年7月17日&#xff0c;Version 1 2. 摘要…

GDAL 安装教程(Python)

引言 本文介绍 GDAL&#xff08;Geospatial Data Abstraction Library&#xff0c;空间数据抽象库&#xff09;的 Python 版本安装教程。 简介 GDAL 是用于栅格和矢量地理空间数据格式的开源转换器。向调用应用程序提供所有受支持格式的单个栅格抽象数据模型和单个矢量抽象数…

TrAdaBoost

TraAdaBoost是AdaBoost算法的扩展。 TraAdaBoost核心思想&#xff1a; same-distribution instance feature:训练数据中与测试数据分布相同的数据&#xff0c;用Ts表示&#xff0c;m 错误预测增加权重 diff-distribution instance feature:训练数据中与测试数据分布不同的数据&…

Boost Build

Window XP Visual Studio 2008 获取Boost库源码 我们可以从http://www.boost.org/ 上获取boost的源代码。当前最新版本为1.45.0。 解压到指定目录 例如&#xff1a;D:/Program Files/boost/目录下 获取bjam 一种方式&#xff1a;从http://sourceforge.net/projects/boos…