GDAL读取的坐标起点在像素左上角还是像素中心?
1. 问题
笔者在处理地理栅格数据的时候,总是会发生偏差半个像素的问题。
比如说通过ArcMap打开一张.tif,查看其地理信息;同时用记事本打开.tfw,比较两者得地理信息:

同样的起点位置(左上角坐标),两者却相差半个像素的距离。
而对于另一些数据,比较ArcMap与tfw的信息,两者的地理信息又可以是一样的。那么对于地理栅格数据,其起点位置(左上角坐标)是以哪一种为准?为什么两者会相差半个像素的距离?
而GDAL可以也读取地理栅格数据(DEM、DOM等)的坐标信息:
//
GDALAllRegister();
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
//
const char * pszFile = "D:\\Data\\imgDemo\\K52E004015AD005M2010A.TIF";
GDALDataset *poDataset = (GDALDataset*)GDALOpen(pszFile, GA_ReadOnly);//使用只读方式打开图像
if (!poDataset)
{
printf("File: %s不能打开!\n", pszFile);
}
//获取地理坐标信息
double padfTransform[6];
if (poDataset->GetGeoTransform(padfTransform) == CE_Failure)
{
printf("获取仿射变换参数失败");
}
cout << fixed << "仿射变换参数:" << endl
<< padfTransform[0] << endl //左上角点坐标X
<< padfTransform[1] << endl //X方向的分辨率
<< padfTransform[2] << endl //旋转系数,如果为0,就是标准的正北向图像
<< padfTransform[3] << endl //左上角点坐标Y
<< padfTransform[4] << endl //旋转系数,如果为0,就是标准的正北向图像
<< padfTransform[5] << endl; //Y方向的分辨率
那么GDAL读取坐标起点也就是左上角点坐标(padfGeoTransform[0],padfGeoTransform[3])又应该是哪一种呢?
2. 结论
经过比较和论证,笔者发现GDAL和ArcMap在处理TIF格式的地理栅格数据的时候,都遵循以下原则:
- GDAL/ArcMap读取的起点位置都是左上角像素左上角的位置。
- TFW里面存储的坐标起点标识的是左上角像素中心的位置。
- 而TIF内部存储的坐标起点标识的是左上角像素左上角的位置。所以两者的地理坐标的距离总是差半个像素的距离。
- TIF内部可以不存储地理信息,此时GDAL/ArcMap会以TFW里面存储的起点位置为准,但因为TFW是像素中心的位置,读取的起点位置会偏移半个像素的距离。
- 一旦TIF内部可以存储地理信息,此时GDAL/ArcMap会以TIF内部可以存储地理为准。此时TFW文件就不起作用了。
3. 例外
GDAL和ArcMap都没有区分处理的地理栅格数据是DEM(地形)还是DOM(影像),其实对于地形栅格数据,很多时候会把起点位置处理成左上角像素中心的位置。比如说软件GlobalMapper中,打开TIF的时候会询问是将其作为DEM处理还是DOM处理。当作为DEM处理的时候,其余的原则一样,但是读取的起点就是左上角像素中心的位置了。
GDAL读取的坐标起点在像素左上角还是像素中心?的更多相关文章
- 使用C#版本GDAL读取复数图像
GDAL的C#版本虽然在很多算法接口没有导出,但是在读写数据中的接口基本上都是完全导出了.使用ReadRaster和WriteRaster方法来进行读写,同时对这两个方法进行了重载,对于常用的数据类型 ...
- QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)
转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014. 问题描述 在Qt学习过程中,在让QDialog居中 ...
- GDAL读取Shp问题解决:Unable to open EPSG support file gcs.csv
在GIS软件的开发中,经常用到开源库GDAL读取Shp数据,当shp数据中包含投影信息时,可能会遇到“Unable to open EPSG support file gcs.csv”错误提示,该错误 ...
- HTML-HTML5+CSS3权威指南阅读(五、设备像素和CSS像素的概念)
在这个迷你系列的文章里边我将会解释viewport,以及许多重要元素的宽度是如何工作的,比如<html>元素,也包括窗口和屏幕 这篇文章是关于桌面浏览器的,其唯一目的就是为移动浏览器中相似 ...
- 响应式设计:理解设备像素,CSS像素和屏幕分辨率
概述 屏幕分辨率.设备像素和CSS像素这些术语,在非常多语境下,是可互换的,但也因此easy在有差异的地方引起混淆,实际上它们是不同的概念. 屏幕分辨率和设备像素是物理概念,而CSS像素是WEB编程的 ...
- 设备像素,设备独立像素,CSS像素
之前学了移动端的开发对设备像素.设备独立像素.CSS像素弄得不太清楚,所以趁周末的时间查了一下,稍加整理 一些概念 在进行具体的分析之前,首先得知道下面这些关键性基本概念. CSS像素 CSS像素是W ...
- 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...
- CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport
1.PX(CSS pixels) 1.1 定义 虚拟像素,可以理解为“直觉”像素,CSS和JS使用的抽象单位,浏览器内的一切长度都是以CSS像素为单位的,CSS像素的单位是px. 1.2 注意 在CS ...
- CSS中的px与物理像素、逻辑像素、1px边框问题
一直不太清楚CSS中的1px与逻辑像素.物理像素是个什么关系(作为一名前端感觉很惭愧 -_-!),今天终于花时间彻底弄清楚了,其实弄清楚之后就觉得事情很简单,但也只有在弄清楚之后,才会觉得简单(语出& ...
随机推荐
- 进阶-Redis 知识梳理
redis介绍 1.什么是NoSQL NoSQL(统称),泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充. 2.NoSQL数据库的四大分类如下: 键值(K ...
- Spring Cloud Config 分布式配置中心使用教程
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...
- jms中activemq事务探讨
http://blog.csdn.net/dly1580854879/article/details/68945997
- 阿里云被挖矿进程wnTKYg入侵的解决方法
杀wnTKYg病毒分两步,第一是找到它的来源,切断入口,第二步,找到它的守护进程并杀死,然后再去杀死病毒进程,有的守护进程很隐蔽,唤醒病毒之后,自动消亡,这时候top就看不到了,要留心. 最近项目在做 ...
- CUDA编程模型之内存管理
CUDA编程模型假设系统是由一个主机和一个设备组成的,而且各自拥有独立的内存. 主机:CPU及其内存(主机内存),主机内存中的变量名以h_为前缀,主机代码按照ANSI C标准进行编写 设备:GPU及其 ...
- 数据库历险记(一) | MySQL这么好,为什么还有人用Oracle?
关系型数据库(Relational DataBase Management System),简称 RDBMS.说起关系型数据库,我们脑海中会立即浮现出 Oracle.MySQL.SQLServer 等 ...
- Ubuntu常用命令总结
1. Ubuntu切换到root用户的方法 sudo su or sudo -i 退出root用户 exit 2. mv:移动文件或文件夹 移动文件和文件夹只有只有四种可能: 文件移动到文件(文件重命 ...
- Python bytes数据类型
Python3 中文本是Unicode, 由str类型表示. 二进制数据由bytes类型表示(如视频文件). Python3 不会以任意隐式的方式 滥用str和bytes, 所以不能拼接字符串和字节包 ...
- TestNG深入理解
以下内容引自: http://blog.csdn.net/wanglha/article/details/42004695 TestNG深入理解 转载 2014年12月18日 13:56:11 参考文 ...
- BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树
BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树 题意: 约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西.约翰发现,如果要使这群 ...