浅入浅出Oracle Spatial GeoRaster 10g影像数据管理(3)

翻译 2007年09月12日 16:45:00

浅入浅出Oracle Spatial GeoRaster 10g影像数据管理(3)—空间参考

 

1.概要

    GeoRaster空间参考系(spatial reference system, SRS)是GeoRaster对象中元数据的一部分。空间参考(Georeferencing)是用来构建像素坐标系与真实世界的大地坐标系(或其它一些本地坐标系)之间双向的映射关系。

    Georeferencing不同于几何校正(geocorrection)、校准(rectification)和正射校准(orthorectification)。后面三种处理经常需要对原始影像进行采样,而经过处理的影像,其地理坐标可能会变,各维度的尺寸也可能会变。而Georeferencing只是通过在像素坐标与地理坐标之间建立一个映射关系,使得这两种坐标能够互转。这个映射关系一般以一个数学公式来表达,除了公式,还要提供足够的地面控制点坐标,或者是来自遥感系统的严格的坐标数据。除非要简化坐标变换,Georeferencing一般不会改变GeoRaster的像素数据和其它的元数据。

    GeoRaster目前支持对二维影像数据使用六参数仿射变换来实现坐标变换。仿射变换是函数拟合多项式模型的一种。如果对一幅影像提供了仿射变换并且在元数据中有效,那么这个GeoRaster对象就会被认为是有地理参考系的,其元数据中SRS节中的isReferenced值为TRUE,否则为FALSE

    校准可以利用水平坐标实现,这样可以使栅格数据集中的像素都映射到投影地图坐标系中。经过校准之后,影像中的每个像素都被规整成规则的大小(地理范围),并且按照地理坐标空间中的东西向、南北向对齐。如果用于校准的是高程数据(DEM数据),那么这种校准就叫做正射校准(orthorectification),这是一种用来修正地形错位的特有校准方法。和前面的地理参考系类似,校准与正射校准也有自己对应的元数据:isRectifiedisOrthorectified,有则为TRUE,无则为FALSE

 

2.坐标变换公式

    在现在这个GeoRaster版本中,使用下面的六参数仿射变换公式实现从地理坐标系到像素坐标系的变换:

    row = a + b * x + c * y

    col = d + e * x + f * y………………………………(1

其中各变量的含义如下:

row:像素在像素坐标系中的行坐标值;

col:像素在像素坐标系中的列坐标值;

x:地理坐标系中的东西向坐标值(比如经度);

y:地理坐标系中的南北向坐标值(比如维度);

a,b,c,d,e,f作为参数,存储在SRS的元数据中,公式中b*f-c*e不能等于0,只有这样才能保证线性方程组有唯一解。

    如果公式中b=0, f=0, c=-ece都不为0,那么说明影像是经过校准的,原公式就退化成:

    row = a + c * y

    col = d - c * x

    这是坐标变换中最简单的一种情况。(译注:应该也是最常用的一个公式)

 

    在坐标变换中存在一个问题需要注意一下,就是像素点和实际的地理要素之间的对应关系。GeoRaster的元数据中有一个cellRepresentationType项,从字面上理解,它的意思就是像素所代表的地理要素类型,而在目前的版本中该项的值只能是UNDEFINED。也就是说,一个像素仅仅是一个标量值(或者是数组中的一个元素),而不能带有任何的形状信息。然而在进行坐标变换的时候,一个像素一般对应于实际地理空间上的一个面(正方形区域或者是矩形区域),或者对应于这个面中的一个点。在像素空间中,坐标都是以整数表达的行列号。这些整数坐标通过坐标变换可以被映射到真实的地理空间坐标系上,变成一个真正意义上的“点”的位置坐标。这个点的位置可能是像素所对应的地理区域的左上角,也可能是区域的中心点。这可以通过指定GeoRaster元数据中的modelCoordinateLocation项的值来确定。

 

    地理坐标的单位要与先前指定的SRID中定义的一致,而且其取值也应该落在正确的定义域内。比如要在一幅影像的像素坐标系与8307测量坐标系之间建立映射关系,那么地理坐标的取值单位就必须是十进制角度值,而且经度(x值)必须在[-180.0, 180.0][0.0, 360.0]中取值,纬度(y值)则必须在[-90.0, 90.0]中取值,这时就不能使用其它的单位(比如米)。

 

    前面给出的六参数变换公式是从地理空间到像素空间的变换,反方向的变换公式也很好写:

    x = A * col + B * row + C

    y = D * col + E * row + F………………………………(2

    很容易看出来这里的A,B,C,D,E,F和前面的a,b,c,d,e,f之间是可以求出关系式的,其实后面这个变换公式就是前面公式的解(把x,y看成未知数),反过来也一样(把row,col看成未知数)。SDO_GEOR.georeference函数接受A,B,C,D,E,F为输入参数,并在内部自动转化为a,b,c,d,e,f参数。

 

    这里特别说明一下,ESRIworld file(就是那些tfw,jpgw等等)中用的就是公式(2),它里面那六个参数依次分别对应A,B,D,E,C,F。到我看到这份文档的时候,我才算基本搞清楚了ESRIxxw坐标文件的含义。这鬼东西让我迷茫过好一阵,主要就是搞不清楚里面为什么会有6个参数,怎么算怎么觉得要不了那么多。没想到最后还是看了Oracle的文档才弄明白的。关于ESRIworld file,我当时写过一篇《tiff/tfw, jpg/jpgw坐标文件的格式》,但那时其实还是在探索中。后来又陆续看到过兔八哥的《Tif World文件tfw解释》,3echo的《tfw坐标信息文件》等文章(呵呵,原来大家都在研究),感觉当时指点过我的懒狮对此应该比较清楚,但可惜的是我却没有找到他关于这方面的专门论述(难道真的“懒”?;-)

 

    在像素空间中,对于一幅影像中的一个像素p,如果已知其所在影像的左上角坐标(ULTCoordinate)(row0,col0)和p在影像中的行、列位置(m,n),则可以由公式(3)得到它的像素坐标。

    row = row0 + m

    col = col0 + n………………………………(3

    需要说明的是,左上角坐标(row0,col0)未必恰好是(0,0),这要视具体情况而定,但在大多数的应用中,它就是(0,0),这样,原公式就退化成

    row = m

    col = n

    另外,mn也都是从0开始计算的(第一行的行号是0,第一列的列号也是0)。

 

CSS 之 浅入浅出

css,层叠样式表(英语:Cascading Style Sheets,简写CSS),又称串样式列表、层次结构式样式表文件,一 种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜...
  • zhangzijiejiayou
  • zhangzijiejiayou
  • 2014年10月09日 09:20
  • 1748

浅入浅出 Android 安全:第一章 Android

第一章 Android 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 安全架构的理...
  • wizardforcel
  • wizardforcel
  • 2016年11月27日 16:52
  • 573

XGBoost浅入浅出

转自 http://wepon.me/2016/05/07/XGBoost%E6%B5%85%E5%85%A5%E6%B5%85%E5%87%BA/ XGBoost风靡Kaggle、...
  • gao1440156051
  • gao1440156051
  • 2017年03月13日 22:36
  • 513

Oracle GeoRaster的初步使用--遥感影像数据导入与导出

1. 首先创建一个GeoRaster的表,这是一个普通的二维表。该表中存储了SDO_GEORASTER对象。 2. 创建一个GeoRaster Data Table表,该表实际存储影像数据的表,以B...
  • T_27080901
  • T_27080901
  • 2015年11月05日 22:51
  • 1220

Oracle Spatial 12C GeoRaster导入影像栅格数据并显示

看了几天Oracle的英文文档都要吐了,网上资源也少得出奇,总算是皇天不负有心人,至少结果还是出来了。 环境:windows 7 64位,Oracle 12.0.1.2.0(下载地址),GEORAS...
  • u010430471
  • u010430471
  • 2016年07月19日 14:40
  • 879

XGBoost浅入浅出

XGBoost风靡Kaggle、天池、DataCastle、Kesci等国内外数据竞赛平台,是比赛夺冠的必备大杀器。我在之前参加过的一些比赛中,着实领略了其威力,也取得不少好成绩。如果把数据竞赛比作金...
  • roslei
  • roslei
  • 2017年03月17日 17:10
  • 211

浅入浅出之log4j

og4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。   首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://loggi...
  • wl6965307
  • wl6965307
  • 2014年12月08日 12:25
  • 436

Dragger2 浅入浅出

一、简介Square公司旗下两把匕首:左手一把ButterKnife,右手一把Dragger2本文只是介绍如何让你去用Dragger2,具体介绍不多赘述。作为理工男,让我看字还不如给我一打代码实在,边...
  • qq_16024707
  • qq_16024707
  • 2017年03月20日 19:40
  • 60

浅入浅出--正则表达式

正则表达式为了打字方便我们称它为 –Regex 对长文本的处理是件很麻烦的是,我接触Regex是由于做爬虫的时候要处理很多HTML的tag,根据标签里的内容得到资源信息是件很麻烦的事情,但是...
  • ofantasyx
  • ofantasyx
  • 2015年10月15日 15:47
  • 248

浅入浅出之Jedis

一、简单使用Jedis 需要Jedis就从Maven获取吧! Maven Pom.xml   Xml代码   dependency>       groupId>redis.client...
  • wl6965307
  • wl6965307
  • 2014年12月08日 12:21
  • 439
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅入浅出Oracle Spatial GeoRaster 10g影像数据管理(3)
举报原因:
原因补充:

(最多只允许输入30个字)