当前位置: 首页 > 编程日记 > 正文

GDAL Data Model(转)

即描述一个GDAL data store能够包含的信息的类型。

 

Dataset

一个dataset (即一个GDALDataset 对象)是一组相关的raster bands和一些属于它们的公共信息的集合。尤其是dataset有一个适用于它所有bands的关于raster size的概念,它是用pixels 和 lines来描述的。这个dataset也负责它所有bands的地理参考的转换和坐标系统的定义。Dataset本身也可有相关的metadata,即以string形式的一张name/values pairs的列表。

 

注意:GDAL dataset和raster band 的数据模型是基于 the OpenGIS Grid

Coverages specification的。

 

Coordinate System

Dataset的坐标系统是按OpenGIS WKT(Well known Text)的方式来描述的。它包括:

* An overall coordinate system name .

一个总的坐标系的名称。

* A geographic coordinate system name.

一个地理坐标系统的名称。

* A datum identifier.

大地参照系。

* An ellipsoid name, semi-major axis, and inverse flattening.

参考椭球体,椭球半长轴和。椭球扁率的导数(即a/(a-b))

* A prime meridian name and offset from Greenwich.

一个0度经线的名称以及它于本初子午线的偏离程度。

* A projection method type (ie. Transverse Merctator).

一个投影类型。

* A list of projection parameters (ie. central_meridian ).

一个投影参数的列表。

* A units name , and conversion factor to meters or radians.

一个单位名称以及转化为米或者弧度的转化因子。

* Names and ordering for the axes .

轴的名称和排序。

* Codes for most of the above in terms of predefined coordinate systems from authorities such as EPSG.

按照预先定义的权威的坐标系统对上面的大多数信息进行编码。

 

要想获取更多的关于OpenGIS WKT 格式的坐标系统的定义,以及使用它们的方式,可以参考osr_tutorial 文档和OGRSpatialReference 类的文档(OGR库中)。

 

由GDALDataset::GetProjectionRef() 返回的坐标系统描述的是经过仿射几何变换所得的地理坐标参考系,该变换由GDALDateset::GetGeoTransform()所得。

由GDALDataset::GetGCPProjection()返回的坐标系统描述的是带控制点的地理参考坐标系,控制点由GDALDateset::GetGCPs()得到。

 

注意:一个返回的带“”的坐标系字符串没有指出任何关于地理参考坐标系统的东西。

 

Affine GeoTransform

GDAL datasets 有两种方式描述raster 位置(用 pixel/line 坐标)与地理参考坐标之间的关系。首先,最常用的是the affine transform(the other is GCPS)。

 

The affine transform 包括由 GDALDataset::GetGeoTransform()的六个系数。

如把pixel/line coordinate 转化成 georeferenced space 使用如下关系:

Xgeo = GT(0) + Xpixel * GT(1) + Yline * GT(2)

Ygeo = GT(3) + Xpixel * GT(4) + Yline * GT(5)

 

在正北朝上的影像中,系数GT(2)与GT(4)都为0,GT(1)是pixel width,

GT(5)是pixel height。(GT(0),GT(3))是raster的左上角pixel的左上角位置。

 

注意:the pixel/line coordinate 上起左上像素的左上角(0.0,0.0),下至右下像素的右下角(width_in_pixels,height_in_pixels)。这样左上像素的中间的pixel/line 位置就是(0.5,0.5)。

 

GCPS

一个dataset可以有一个与从raster到georeferenced coordinates的一个或多个位置有关的控制点的集合。所有的 GCPS 共同拥有一个地理参考坐标系统(由GDALDataset::GetGCPProjection()返回)。每一个GCP由一个GDAL_GCP对象表示,它如下定义:

typedef struct

{

     char     *pszId ;

     char     *pszInfo ;

     double   dfGCPPixel ;

     double   dfGCPLine ;

     double   dfGCPX ;

     double   dfGCPY ;

     double   dfGCPZ ;

} GDAL_GCP ;

 

pszId字符串被期望是这个dataset里所有GCPS集合里对应每个GCP的唯一标识(常常是但并不总是数字)。

pszInfo通常是一个空字符串,但是它可以包括任何用户定义的与GCP有关的文本。潜在的它也能包括机器中关于GCP状态的信息尽管现在还不行。

第三、四个成员是GCP在rster中的位置,后三个是相关的地理参考位置(其中Z经常为0)。

 

GDAL数据模型并没暗示GCPS必须产生的转化机制,这个留给具体的应用程序,可是从第一到第五个多项式是常见的。

 

通常地一个dataset将包括一个affine geotransform或GCPS或两者都不包括。两个都有的情况并不常见,哪一种方式更权威并没有明确定义。

 

Metadata

GDAL元数据是一种保存为一组name/value pairs列表的辅助格式和应用程序特殊的文本数据。The names 要求有良好的表示行为(没有间隔或单个的字符串)。

而the values可以是任何长度以及包括任何东西除了内嵌NULL(ASCIIzero)值。

 

元素据处理系统并不能很好的处理大容量的元素据。为一个dataset处理超过100K的元素据将很可能导致性能的降级。

 

随着时间的推移,将会有一些以建立的语义所定义的著名的names;可是目前还没有。

 

有一些格式将支持一般的(用户自定义的)元素据,而其他一些格式的驱动将把明确的格式属性映射到元数据的names中。比如the TIFF 的驱动就以元数据的方式返回了一些信息标记,包括日期/时间的属性以下面这种形式返回:

 

TIFFTAG_DATETIME = 1999:05:11 11:29:56

 

元素据被切分成称做域的指定的组,缺省的域没有名字(NULL或“”)。一些特殊的域为一些特殊的目的而存在。

注意:目前无法对一个给定的对象列举出所有可用的域,但是应用程序能够对它们知道如何解释的任何域进行测试。

 

SUBDATASETS Domain

The SUBDATASETS域保存了一份子datasets的列表。通常这被用来提供指针指向单张多影像文件所存储的影像列表(比如HDF或NITF)。比如,一个含有四张images的NITF可能有如下的subdataset list.

 SUBDATASET_1_NAME=NITF_IM:0:multi_1b.ntf

SUBDATASET_1_DESC=Image 1 of multi_1b.ntf

SUBDATASET_2_NAME=NITF_IM:1:multi_1b.ntf

SUBDATASET_2_DESC=Image 2 of multi_1b.ntf

SUBDATASET_3_NAME=NITF_IM:2:multi_1b.ntf

SUBDATASET_3_DESC=Image 3 of multi_1b.ntf

SUBDATASET_4_NAME=NITF_IM:3:multi_1b.ntf

SUBDATASET_4_DESC=Image 4 of multi_1b.ntf

SUBDATASET_5_NAME=NITF_IM:4:multi_1b.ntf

SUBDATASET_5_DESC=Image 5 of multi_1b.ntf

_NAME的值是能够被传给GDALOpen()访问那个文件的字符串。_DESC的值被用作为能够在一个选择器中显示给用户的更友好的字符串。

 IMAGE_STRCTURE Domain

缺省域中的元数据与影像有关,但是并不特别的与影像存储在磁盘上的方式有关。也就是说,当dataset被复制成另一种格式时它是适合的。一些感兴趣的信息与特定的文件格式和存储机制有紧密联系。为了防止它们随着数据集一起被复制,它们被存放在一个叫做IMAGE_STRCTURE的特殊的域,这个域将不会正常的被复制到一中新的格式中。

出现在IMAGE_STRCTURE域中的一个条目就是用于这种格式的压缩的配置(OR摘要信息)。这个元素据条目名称是COMPRESSION,但是其值对不同的格式是不同的。

xml:Domains
任何以xml为前缀名的域都不是通常的name/value元素据。它只是存储为一个长字符串的XML文档。

Raster Band
一个raster band在GDAL中是用一个GDALRasterBand对象表示的。它代表一个单独的raster band/channel/layer.它不必要表示整个影像。比如,1张24位的RGB影像将通常被表示为一个具有3个bands的datasets,分别表示红,绿,蓝。

一个raster band有如下属性:

* A width and height in pixels and lines. This is the same as that defined for the dataset, if this is a full resolution band.

* A datatype (GDALDataType). One of Byte, UInt16, Int16, UInt32, Int32, Float32, Float64, and the complex types CInt16, CInt32, CFloat32, and CFloat64.

* A block size. This is a preferred (efficient) access chunk size. For tiled images this will be one tile. For scanline oriented images this will normally be one scanline.

* A list of name/value pair metadata in the same format as the dataset, but of information that is potentially specific to this band.

* An optional description string.

* An optional list of category names (effectively class names in a thematic image).

* An optional minimum and maximum value.

* An optional offset and scale for transforming raster values into meaning full values (ie translate height to meters).

* An optional raster unit name. For instance, this might indicate linear units for elevation data.

* A color interpretation for the band. (如:GCI_Undefined,GCI_Blueband等)。

* A color table, described in more detail later.

* Knowledge of reduced resolution overviews (pyramids) if available.

Color Table

一个color table 由0或更多的用C描述的颜色条目组成,如下的结构:

typedef struct

{

/- gray, red, cyan or hue -/

short       c1;

 /- green, magenta, or lightness -/    

short       c2;

/- blue, yellow, or saturation -/

 short       c3;

/- alpha or blackband -/

short       c4;      
} GDALColorEntry;

The color table 也有一个调色板的解译值(GDALPaletteInterp),是下列值的一种,并且指出了对应的一个color entry的c1/c2/c3/c4值。

· GPI_Gray: Use c1 as grayscale value.

· GPI_RGB: Use c1 as red, c2 as green, c3 as blue and c4 as alpha.

· GPI_CMYK: Use c1 as cyan, c2 as magenta, c3 as yellow and c4 as black.

· GPI_HLS: Use c1 as hue, c2 as lightness, and c3 as saturation.使一个color与一个raster pixer联系起来,像素值被写在下方的在一个color table里。这意味着the colors 通常从0开始逐步上升。在从color table查找之前没有一种指示项引比例因子的规定。

Overviews

一个band可能有一个或更多的overviews。每一个overviews被表现成一个”free standing”GDALRasterBand。The overview的size(in pixels and lines)将于潜在的raster不同,但是overviews所覆盖的地理区域与the full resolution band相同。

The overviews被用来更快的显示降低分辨率的overviews,相对于读所有的全色波段的数据。

Bands也有一个HasArbitratyOverviews属性,它是TRUE表示raster能在任何分辨率下有效的阅读而没有不同的overview

相关文章:

实战:人脸识别实战项目(源码共享)

首先我想问个问题:现在什么工程师最值钱?毫无疑问,我想超 90% 的都会说:人工智能工程师。也难怪,随着近几年人工智能的发展,已经逐渐渗透到了各个领域,比如:医疗、教育、机械自动化、…

Calendar如何只显示“一、二、三...日”,不显示“星期”

秋水无恨 asp.net Calendar DayNameFormat Globalization DayNames http://www.csdn.net/develop/Read_Article.asp?id15715 Calendar的DayNameFormat,如FirstLetter ,FirstTwoLetters ,Full ,Short 但是争对英文而言的&#xf…

gulp插件之browser-sync安装报错

2019独角兽企业重金招聘Python工程师标准>>> 最近做前端开发,一直用gulp来写一些自动化脚本。之前用的npm的镜像为edunpm,很简单,因为这个镜像非常的快。 但是不知道为什么browser-sync插件总是下载不成功。。。 后来用nrm切换到t…

TensorFlow、PyTorch之后,“国产”AI框架还有没有机会?

出品 | AI科技大本营(ID:rgznai100)众所周知,在机器学习框架领域,PyTorch、TensorFlow已分别成为目前学界和业界使用最广泛的两大实力玩家,而紧随其后的Keras、MXNet等框架也由于其自身的独特性受到开发者的喜爱。 202…

结构成员访问的三种方法

结构成员访问的三种方法 #include "stdio.h"#include "string.h"#include <stdlib.h>main (){struct student{int num;char * name;int score;}stu;struct student *p&stu;stu.num1;(*p).name"tom";p->score78;printf("%d\n&q…

数据库字段命名及设计规范

1.设计原则 1) 标准化和规范化数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式&#xff0c;但 Third Normal Form&#xff08;3NF&#xff09;通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说&#xff0c;遵守3NF 标准的数据库的表设计原则是…

更改管理GPO的域控制器

1.GPO先被存储到扮演PDC模拟器操作主机角色的域控制器&#xff0c;然后再由它将其复制到其他域控制器&#xff0c;域成员计算机再通过域控制器来应用GPO.2.可通过DC选项与组策略两种方式来将管理GPO的域控制器从PDC模拟器操作主机更改为其他域控制器。转载于:https://blog.51ct…

怎样使元素可编辑

作者&#xff1a;http://lucky.myrice.comE-mail:amxh21cn.com 在IE5.5中&#xff0c;可以设定元素的编辑属性。语法如下&#xff1a; object.contentEditable [ sEditable]; 其中的sEditable为下列三个之一&#xff1a; ◇inherit ◇false ◇true <script lang…

知乎多场景内容匹配方案荣获CSDN AI优秀案例奖

7月3日&#xff0c;由CSDN主办的2020 AI开发者大会拉开帷幕&#xff0c;以直播形式进行吸引了上万名技术从业者参与。大会颁发了2020 AI企业及技术应用系列奖项&#xff0c;其中知乎凭借“多场景内容匹配方案”荣获“AI优秀案例奖”。 过去一年&#xff0c;人工智能技术研发和…

批量创建用户和设置密码

(1) 首先创建用户名文件和密码文件 # touch user_name passwd active:/srv # cat passwd win00:123456 win01:123456 active:/srv # cat user_name win00:x:520:520::/home/win00:/bin/bash win01:x:521:521::/home/win01:/bin/bash (2) 然后执行命令导入用户名和密码 a…

Eclipse 小插件

http://www.junginger.biz/eclipse/

肝了三天,万字长文教你玩转 tcpdump,从此抓包不用愁

图源 | 视觉中国来源|Python编程时光&#xff08;ID: Cool-Python&#xff09;今天要给大家介绍的一个 Unix 下的一个 网络数据采集分析工具 -- Tcpdump&#xff0c;也就是我们常说的抓包工具。与它功能类似的工具有 wireshark &#xff0c;不同的是&#xff0c;wireshark 有图…

【中文】Joomla1.7扩展介绍之Fabrik (强大的表单处理能力)

Fabrik 插件分类&#xff1a; Contacts & Feedback > Forms 支持版本&#xff1a;1.5 /1.7 关注程度&#xff1a;【最流行的】 所属类型&#xff1a;组件、模块、插件、多语言 Fabrik 2.1.1 is a security fix, please update immediately Fabrik 2.1.1是一个安全…

CPU的序列号

可以取CPU的序列号。 string cpuInfo "";//cpu序列号 ManagementClass cimobject new ManagementClass("Win32_Processor"); ManagementObjectCollection moc cimobject.GetInstances(); foreach(ManagementObject mo in moc) { cpuInfo mo.Properties…

Sqli-labs less 9

Less-9 本关我们从标题就可以看到 《基于时间-单引号》&#xff0c;所以很明显的这关要我们利用延时注入进行&#xff0c;同时id参数进行的是 的处理。这里我们大致的将延时注入的方法演示一次。 这里用sleep()函数。 这里因为我们利用的是时间的延迟&#xff0c;贴图就没有意…

用ASP.NET上传图片并生成带版权信息的缩略图

作者&#xff1a;活靶子 出处&#xff1a;AspxBoy.Com <% Page Language"C#" ResponseEncoding"gb2312" %><% import Namespace"System" %><% import Namespace"System.IO" %><% import Namespace"Sys…

服务器ping你可以ping通,你ping服务器ping不同的解决方案!!

这几天让公司的服务器弄的蛋疼啊&#xff01;&#xff01;三天两头的出问题&#xff0c;主管脸色不大好看&#xff0c;我这里也郁闷的要死。所以发誓一定要把好安全关&#xff01;&#xff01; 今天在自己的虚拟机上边装了一个winserver2003标准版&#xff0c;搭建好环境之后发…

重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单...

2020 年无疑是特殊的一年&#xff0c;AI 在开年的这场“战疫”中表现出惊人的力量。站在“新十年”的起点上&#xff0c;CSDN发起【百万人学AI】评选活动。我们继续聚焦AI的技术落地&#xff0c;关注开源和新生的力量。作为CSDN第三届AI评选活动&#xff0c;本次活动受到数百家…

linux 模拟生成 CAN 设备

/*************************************************************************************** linux 模拟生成 CAN 设备* 说明&#xff1a;* 最近在看CANopenSocket的过程中看到能够生成模拟的CAN设备&#xff0c;于是查了点资料&#xff0c;结…

关于委托的精彩解说

作者&#xff1a;TomMax (笑望人生) 出处&#xff1a;csdn community 主 题&#xff1a; “.net百题问答的活动”--许多人问过的--《 C#委托及事件 》作 者&#xff1a; TomMax (笑望人生) 信 誉 值&#xff1a; 100 所属论坛&#xff1a; .NET技术 C# 问题点数&am…

[转载]ESFramework 4.0 快速上手(15) -- 客户端登录验证

ESFramework 4.0 快速上手&#xff08;15&#xff09; &#xff0d;&#xff0d; 客户端登录验证 在之前版本的Rapid引擎中&#xff0c;是没有提供客户端登陆验证的机制的&#xff0c;如果要验证用户的帐号密码信息&#xff0c;我们只有自己手动通过自定义信息来实现。在2011.…

编程能力差,90%输在了这点上!CTO:这样学编程 ,更容易成为高手

从事 Python 这些年中&#xff0c;我见过很多 Python 教程和书籍&#xff0c;他们大都这样讲 &#xff1a;先介绍 Python 的基本语法规则、list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0c;介绍文件等 IO 操作.... 就这样一点一点往下说…

MVC 之 架构的基本原理及Asp.Net实现MVC

一、引言 许多Web应用都是从数据存储中检索数据并将其显示给用户。在用户更改数据之后&#xff0c;系统再将更新内容存储到数据存储中。因为关键的信息流发生在数据存储和用户界面之间&#xff0c;所以很多应用将数据和用户界面这两部分绑在一起&#xff0c;以减少编码量并提高…

vsftp虚拟用户

虚拟用户 1、建立虚拟用户口令库文件 #cat logins.txt mike 123 john 321 口令库文件中奇数行设置用户名&#xff0c;偶数行设置口令 2、生成vsftpd的认证文件 #rpm -ivh db4-utils* #db_load -T -t hash -f /root/logins.txt /etc/vsftpd/vsftpd_login.db 生成认证文件 设置…

在asp.net(C#)中怎么获得一个目录的大小?

作者&#xff1a;靶子&MSDN 出处&#xff1a;msdn 本方法来自以下文档,有问题多翻帮助 ;)ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemiodirectoryclasstopic.htmms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemiodirectory…

360金融首席科学家张家兴:我们如何做数据AI融合中台?

2020年7月3—4日&#xff0c;在CSDN 主办的第三届 AI 开发者万人大会&#xff08;AI ProCon 2020&#xff09;上。360金融首席科学家张家兴博士以“数据AI融合中台——金融领域人工智能实践”为题&#xff0c;揭秘了360金融在金融科技领域的前沿技术理念与实践心得。 张家兴认…

GoogleFusionTablesAPI初探地图与云计算

http://developer.51cto.com/art/200906/129324.htm http://yexiaochai.iteye.com/blog/1893735 http://yexiaochai.iteye.com/blog/1893734

关于ASPNET在IIS一些问题的经验总结

作者&#xff1a;未知 请速与本人联系 出处&#xff1a;mscommunity 很多开发人员对于IIS和ASPNET的安装等问题困扰,特此做下面的小总结,请大家多交流!iis 坏了修复办法!!!!!!! 一般IIS运行不了ASP.NET,试一下下面四种方法&#xff0c;99&#xff05;有效&#xff1a; 1。…

好莱坞科幻新片《b》,钦定 AI 机器人出演女主角!

来源 | HyperAI超神经由日本机器人教父石黑浩&#xff0c;历时多年打造的 AI 机器人 Erica&#xff0c;被好莱坞选中&#xff0c;出演科幻大片《b》中的女主角。如果成功完成拍摄&#xff0c;将成为影史上的一大创举。很多好莱坞科幻大片里&#xff0c;都有机器人的角色&#x…

原型开发、模型构建和设计反馈在线工具

Lumzy 你在创建新的UI技术任何时候&#xff0c;在创建网站之前&#xff0c;你会需要创造出一个作为概念根据的原型或模型。当然&#xff0c;你也要测试这些新构想。 Lumzy是一个方便的UI界面模型构建和原型开发的小型在线工具。它能让你创建具有工作功能的原型&#…