geotiffinterp

这个函数篡改地理坐标tiff文件的值,给定的纬度/经度坐标或x / y位置对应的映射到相关的地图投影tiff文件。这个函数是因为即使GeoTIFF文件是相当大的,只有一个地区的形象足以执行加载插值。这个函数是为了容易探测GeoTIFF数据集,如数字高程地图(民主党)或其他地理空间数据数组。它可以被用来插入值从地理坐标卫星图像,但如果你使用图片,其他的等功能geotiffreadregion可能更有用。

内容

语法

Ai = geotiffinterp(文件名、意大利loni) Ai = geotiffinterp(文件名,xi, yi) Ai = geotiffinterp (…, InterpolationMethod) Ai = geotiffinterp (…, nanval, NanValue) Ai = geotiffinterp(…,“框架”,FrameNumber) Ai = geotiffinterp(…,“展示”)

描述

Ai = geotiffinterp(文件名,意大利,loni)返回的tiff图像插值的地理位置拉提loni

Ai = geotiffinterp(文件名,xi,易)一个tiff图像,返回插入值是单位的距离(通常英尺和米)在投影映射坐标投影在tiff文件元数据所描述的。的方式解读:如果没有价值有一个绝对值超过90没有价值的有一个绝对值超过360,然后度被假定的地理坐标。否则,后的第一个两个输入文件名是假定为地图x / y坐标。

Ai = geotiffinterp (InterpolationMethod……)指定一个插值方法“最近的”,“线性”,样条的,或“立方”。默认的插值方法是线性的。

Ai = geotiffinterp (…, nanval, NanValue)设置一个指定值的tiff在插值。GeoTIFF格式,未定义的值通常设置为32767,因为tiff格式只存储整数。默认情况下,geotiffinterp集32767年取代所有的值在插值。为了防止geotiffinterp这样做,申报的东西“nanval”,南。取代其他价值,说9999年在插值,使用“nanval”, 9999年

Ai = geotiffinterp(…,“框架”,FrameNumber)插入指定帧数,如果GeoTIFF包含多个帧。目前,FrameNumber只能有一个标量值,所以你必须循环geotiffinterp调查多个帧。如果tiff文件包含多个帧和您没有指定哪一个你感兴趣的,geotiffinterp只会插入第一帧。这适用于地理图像口角有三片对应红色,绿色和蓝色,如果你想要三个颜色你需要运行geotiffinterp每个颜色一次。

Ai = geotiffinterp(…,“展示”)块加载的tiff的分段geotiffinterp在灰度和覆盖标记显示插值的位置。

一个数据集的一些例子

Matlab没有附带任何内置的民主党GeoTIFF格式的示例文件,所以下面的例子将使用的高程数据Bedmap2南极高程数据集。要跟随这个例子中,您可以将相关文件解压缩到当前文件夹。其他地理空间数据集GeoTIFF格式,试着寻找在这里

在一个单点冰厚度

第一个冰芯成功穿透1968年南极冰盖在伯德阵营。冰的核心是长2164米,是钻(80.02,119.52 w)。如何密切Bedmap2 DEM匹配这个厚度吗?

geotiffinterp (“bedmap2_thickness.tif”,-80.02,-119.52)
ans = 2.1478 e + 03

这是由默认的线性插值。高程数据集,立方插值通常更有意义:

geotiffinterp (“bedmap2_thickness.tif”,-80.02,-119.52,“立方”)
ans = 2.1464 e + 03

还不确切,但我们不能指望从一公里网格提取精确值数据集。某种意义上的上下文,在地图上显示数据点:

geotiffinterp (“bedmap2_thickness.tif”,-80.02,-119.52,“立方”,“显示”);

请注意,geotiffinterp加载十额外的像素在每个感兴趣的数据。支持的插值方法。金宝app

使用坐标的转换工具南极的地图工具包,我们可以得到“以东”和“北航”坐标的伯德在极地冰芯极射赤面投影使用真实规模在71度:

(x, y) = ll2ps (-80.02, -119.52)
x = -9.4588 e + 05 y = -5.3559 e + 05

Bedmap2民主党在极地sterographic坐标(71年代),所以就像我们进入了地理度以上,我们可以输入地图x / y值:

geotiffinterp (“bedmap2_thickness.tif”,x, y,“立方”)
ans = 2.1464 e + 03

Regridding一个数据集

除了在单点插值值,geotiffinterp还可以插入一行,横断面,或者网格点。考虑文森山,它位于(78.53,85.62 W)。假设你想regrid或supersample Bedmap2数据集从1公里分辨率500分辨率,并创建一个地图的周边地区文森山。要做到这一点,我们可以做一个网格点的间距500米,宽300公里,集中在文森山:

对于这张地图,这是有意义的谈话米而不是纬度/经度,所以我们会转换到极通过球面坐标ll2ps函数中南极的地图工具包中。

[centerx, centery] = ll2ps (-78.53, -85.62)
centerx = -1.2466 e + 06 centery = 9.5483 e + 04

我们可以创建一个500 m分辨率网格大约150公里半径周围文森山:

半宽度= 150000;分辨率= 500;x = centerx-halfwidth:决议:centerx +半宽度;y = (centery +半宽度:分辨:centery-halfwidth) ';

请注意,上面y变量被调换到一个列向量。如果xy都是列向量或两行向量,geotiffinterp只会在插入x (1) (1),x (2), (2)、……x (N), y (N)等,而海拔xy分别是一个行和列向量,海拔返回的每一个组合xy值。反过来,

床上= geotiffinterp (“bedmap2_bed.tif”,x, y,“立方”);sfz = geotiffinterp (“bedmap2_surface.tif”,x, y,“立方”);

返回相同的网格数据集

[xgrid, ygrid] = meshgrid (x, y);床上= geotiffinterp (“bedmap2_bed.tif”xgrid ygrid,“立方”);sfz = geotiffinterp (“bedmap2_surface.tif”xgrid ygrid,“立方”);

现在我们有高程数据,所有我们要做的就是把它们。下面我用rgb函数得到的RGB值冰蓝色,这是(。8431年1 .9961]

图(“pos”,100 100 800 550)表面(x, y,床);%了床上demcmap(床,256)%设置colormap视图([-123]26日)%设置视角持有%允许覆盖数据%画冰表面:hsfz =表面(xgrid ygrid sfz);%画的基础:minbed = min(床(:))* 1 (601 1);hrock表面(1)= ([xgrid (: 1) xgrid (: 1)]、[ygrid (: 1) ygrid(: 1)]、[床(:1)minbed]);hrock表面(2)= ([xgrid (1:); xgrid (1:)], [ygrid (1:); ygrid(1:)],[床(1:);minbed ']);hrock表面(3)= ([xgrid(:,结束)xgrid(:,结束)],[ygrid(:,结束)ygrid(:,结束)],[床(:,结束)minbed]);hrock表面(4)= ([xgrid(最终:);xgrid(结束:)],[ygrid(最终:);ygrid(结束:)],[床(最终:);minbed ']);%画出的冰:hsfz表面(2)= ([xgrid (: 1) xgrid (: 1)]、[ygrid (: 1) ygrid(: 1)]、[床(:1)sfz (: 1)));hsfz表面(3)= ([xgrid (1:); xgrid (1:)], [ygrid (1:); ygrid(1:)],[床(1:);sfz (: 1)]);hsfz表面(4)= ([xgrid(:,结束)xgrid(:,结束)],[ygrid(:,结束)ygrid(:,结束)],[床(:,结束)sfz(:,结束)]);hsfz表面(5)= ([xgrid(最终:);xgrid(结束:)],[ygrid(最终:);ygrid(结束:)],[床(最终:);sfz(最终,:)));%修补格式:照明冯氏camlight阴影插值函数%消除表面网格的台词包含(“经常”(m))ylabel (“北航(m)的)zlabel (的高度(米))轴集(hrock,“facecolor”rgb (深灰色的))(hsfz“facecolor”rgb (冰蓝色的),“facealpha”6)

作者信息

这个函数是由乍得a。格林德克萨斯大学的地球物理研究所(UTIG)2014年9月。这个函数是启发和借一些代码Aslak Grinsted的geotiffreadregion函数。