调色板栅格数据使用GDAL时注意

 

这几天用GDAL处理DRG数据时发现,有数据被处理成了黑板,什么都没有,发现是因为DRG图像颜色比较简单,使用了调色板的缘故。
使用SetColorTable将调色板写入后,一部分基本正常,但还有些图像还是有黑板的现象。仔细察看出错的DRG与正常的DRG的区别,发现
 
C:\Program Files\FWTools1.0.5>
C:\Program Files\FWTools1.0.5>gdalinfo D:\RasterTest\DRG\I48E010019DRG.TIF
Driver: GTiff/GeoTIFF
Size is 6946, 5715
Coordinate System is `'
Origin = (636178.308000,3822519.830000)
Pixel Size = (4.00000000,-4.00000000)
Metadata:
TIFFTAG_XRESOLUTION=317.5
TIFFTAG_YRESOLUTION=317.5
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
Corner Coordinates:
Upper Left ( 636178.308, 3822519.830)
Lower Left ( 636178.308, 3799659.830)
Upper Right ( 663962.308, 3822519.830)
Lower Right ( 663962.308, 3799659.830)
Center ( 650070.308, 3811089.830)
Band 1 Block=6946x1 Type=Byte, ColorInterp=Palette
Color Table (RGB with 256 entries)
0: 128,0,128,255
1: 78,125,208,255
2: 194,226,255,255
3: 150,240,100,255
4: 200,240,170,255
5: 150,105,66,255
6: 255,255,255,255
7: 150,150,150,255
8: 0,0,0,255
9: 0,0,0,255
 
C:\Program Files\FWTools1.0.5>gdalinfo D:\RasterTest\DRG\I49E012003DRG\2.TIF
Driver: GTiff/GeoTIFF
Size is 1705, 1425
Coordinate System is `'
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 1425.0)
Upper Right ( 1705.0, 0.0)
Lower Right ( 1705.0, 1425.0)
Center ( 852.5, 712.5)
Band 1 Block=1705x4 Type=Byte, ColorInterp=Gray
还是调色板没处理好,查遍资料发现没有什么特别的地方,最后仔细跟踪错误代码,在GDAL代码中找到
 

/* -------------------------------------------------------------------- */

/* Check if this is even a candidate for applying a PCT. */

/* -------------------------------------------------------------------- */

if( poGDS->bCrystalized )

{

CPLError( CE_Failure, CPLE_NotSupported,

"SetColorTable() not supported for existing TIFF files." );

return CE_Failure;

}

百思不得其解,折腾了半天最后在GDAL-DEV看到这段:

I think the key here is that the GeoTIFF driver in GDAL库 only allows you
to assign a pseudocolor table to a file before you start any raster data.
察看代码,发现把SetColorTable放在了RasterIO,Write之后了,修改后就好了。

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

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

相关文章

jQuery实现表格行上移下移和置顶

<!DOCTYPE HTML> <html> <head> <meta charset"utf-8"> <meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1"> <title>jQuery实现表格行上移下移和置顶</title> <m…

做算法,为什么建议你一定要学懂C++?

在工业界&#xff0c;有这样一个规律&#xff1a;“ 但凡能用其他语言的都不会用C&#xff0c;只能用C的必然用C。”但是&#xff0c;C的学习和项目开发都比较困难。一个有经验的老手也经常搞出野指针&#xff0c;内存泄露等bug&#xff0c;包括我自己在学C的时候也非常痛苦。所…

顺序查找法

#include<stdio.h> #define KeyType int #define OtherType int #define List_size 100 typedef struct{KeyType key;OtherType other; }RecordType; typedef struct{RecordType r[List_size];int length; }Recordlist; int SeqSearch(Recordlist l,int k)//没有设置监视…

IT行业专业术语

IT行业专业术语 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 目前比较流行的开发语言有哪些&#xff1f; Java、C#(C Sharp)、C、C、JavaScript、PHP、Ruby、Python等 WEB端有哪些开发技术&#xff1f; Javascript、CSS、HTML、Ajax、Flex等 比较…

AI一键注释代码、阅读整个项目、转换编程语言。已开源!

获取github源码地址和国内url、key方式&#xff1a;在文章底部 大家好今天给大家介绍一款开源项目&#xff0c;这个项目是由渡码维护的&#xff0c;这个项目支持自己的大模型和使用openai两种方式&#xff0c;本文章介绍使用openai的方式&#xff01; 使用过程中发现两个问题…

为什么别人赚钱比自己容易?

之前的文章提到自己的一个同事&#xff0c;在一家公司干了10年&#xff0c;最近跳槽找了份5万薪水的工作&#xff0c;大家都很想听他的故事。为了方便记录&#xff0c;我叫他文哥文哥比我们一般的毕业生厉害&#xff0c;他比我大将近9岁&#xff0c;我在初中的时候他已经是一个…

Linux下遍历目录下的文件

方法1&#xff1a;http://tag.csdn.net/Article/ef431d9b-68b3-419f-9f85-1fb9279f904a.html//ListFile.cpp#include <stdio.h>#include <dirent.h>#include <sys/types.h>intmain(intargc, char*argv[]){ if (2 ! argc){ printf("Usage:ListFileSource…

折半查找

折半查找又为二分查找&#xff0c;对待查找的列表有两个要求&#xff1a;1.必须采用顺序存储结构。 2.必须按关键字大小顺序排列。 #include<stdio.h> #define Max 100 typedef struct {int key;int other; }RecordType; typedef struct {RecordType r[Max];int lenght; …

15张图来了解【树】,面试再也不怕被刷了

我之前的文章C语言实现树&#xff0c;你一定看得懂树的概念什么是树&#xff1f;树属于非线性数据结构的一种&#xff0c;概念也极多&#xff0c;是由结点或顶点和边组成的且不存在着任何环的一种数据结构。没有结点的树称为空树。一棵非空的树包括一个根结点&#xff0c;还很可…

String源码图

String StringBuffer StringBuilder 均为对字符数组的操作。 实现了不同的接口&#xff0c;导致不同的覆写。 实现了同样的接口&#xff0c;适应不同的场景。 转载于:https://www.cnblogs.com/zhengwenqiang/p/8076495.html

C语言——位操作

C语言——位操作 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、基本位操作 | 或 & 与 ~ 取反 ^ 异或 << 左移 >> 右移 二、位操作的常见用法 1.获取某位的值 #define BitGet(Number,pos) ((Number)| 1<<(…

架构设计中的方法学(七)

十三、代码验证   要保证架构的稳定和成功&#xff0c;利用代码对架构进行验证是一种实用的手段。代码验证的核心是测试&#xff0c;特别是单元测试。而测试的基本操作思路是测试优先&#xff0c;它是敏捷方法中非常重要的一项实践&#xff0c;是重构和稳定核模式的重要保障。…

十进制转二进制,八进制,十六进制

十进制转二进制&#xff1a; #include<stdio.h> int main() {int a[20],x;int rem,i0;scanf("%d",&x);do{remx%2;xx/2;a[i]rem;i;}while(x!0);while(i>0)printf("%d",a[--i]);printf("\n");return 0; }十进制转八进制&#xff1a; …

呵,你会51单片机的精确延时吗?

文章整理自网络序对于某些对时间精度要求较高的程序&#xff0c;用 c 写延时显得有些力不从心&#xff0c;故需用到汇编程序。本人通过测试&#xff0c;总结了 51 的精确延时函数(在 c 语言中嵌入汇编)分享给大家。至于如何在 c 中嵌入汇编大家可以去网上查查&#xff0c;这方面…

SignalR

原址: http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.html SignalR是什么&#xff1f; SignalR是一个继承的客户端与服务器库&#xff0c;基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话&#xff0c;换句话说&#xff0c;该对话可不…

C语言——数组、函数、指针

C语言——数组、函数、指针 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、有什么作用&#xff1f;为什么要使用它们&#xff1f; &#xff08;1&#xff09;数组&#xff1a;提供一段连续的存储空间&#xff0c;存数据和字符串很方便&#xff1b; …

--4、实验室设备管理(表)

--4、实验室设备管理create table Computer( Computer_id int Identity Primary key,--设备编号 Computer_name varchar(50) not null,--设备名称 Computer_num varchar(50) not null,--设备编号,财产号 room_id int not null,--实验室编号 --Computer_IP varchar(128), -…

十六进制转十进制

问题描述从键盘输入一个不超过8位的正的十六进制数字符串&#xff0c;将它转换为正的十进制数后输出。注&#xff1a;十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535 #include<stdio.h> #include<string.h> #include<…

C#中Invoke的用法

在用.NET Framework框架的WinForm构建GUI程序界面时&#xff0c;如果要在控件的事件响应函数中改变控件的状态&#xff0c;例如&#xff1a;某个按钮上的文本原先叫“打开”&#xff0c;单击之后按钮上的文本显示“关闭”&#xff0c;初学者往往会想当然地这么写&#xff1a; v…

三类危险的TXT文件

一。 隐藏HTML扩展名的TXT文件 假如您收到的邮件附件中有一个看起来是这样的文件&#xff1a;QQ 放送.txt&#xff0c;您是不是认为它肯定是纯文本文件&#xff1f;我要告诉您&#xff0c;不一定&#xff01;它的实际文件名可以是QQ 放送.txt{3050F4D8-98B5-11CF-BB82-00AA00BD…