阅读和显示USGS NED DEM

时间:2012-05-13 22:00:29

标签: matlab mapping geotiff

我正在尝试在MATLAB中使用USGS DEM,但在使用geotiffread读取后,mapshow会产生错误。根据文档,我试过

[A, R] = geotiffread('NED_10340081')
figure
mapshow(A, R);

但我得到

Error using mapshow
Expected input number 1, I or X or RGB, to be one of these types:

uint8, uint16, double, logical

Instead its type was single.

Error in validateMapRasterData>parseImageInputs (line 109)
validateattributes(A, {'uint8', 'uint16', 'double', 'logical'}, ...

Error in validateMapRasterData>validateImageComponent (line 93)
[A, R] = parseImageInputs(mapfcnname, dataArgs{:}, cmap, rules );

Error in validateMapRasterData (line 27)
[Z, SpatialRef] =  validateImageComponent(mapfcnname, ...

Error in maprastershow (line 127)
[Z, SpatialRef, displayType, HGpairs] = ...

Error in mapshow (line 231)
h = showFcn(varargin{:});

我的矩阵A是单一类型的......问题是什么?我该如何解决这个问题? 以下是DEM http://snowserver.colorado.edu/pub/fromDominik/NED_10340081.zip的下载链接 谢谢 PS我在http://www.mathworks.com/matlabcentral/answers/38255-display-usgs-dem-using-geotiffread-and-mapshow

交叉了这个

2 个答案:

答案 0 :(得分:1)

指定DisplayType是必要的,因为Matlab可以区分"图像"来自连续的栅格数据。 Matlab有一个完整的图像处理工具箱以及一个具有不同功能的映射工具箱,这些功能通常是免费的,但来自不同的开发背景。 Matlab支持"图像"在逻辑,uint8,uint16和双类类型中,以及单个和双精度的栅格(网格)数据。

此外,您的解决方案是使用' DisplayType',' surface'只在你的情况下工作,因为你有单身'数据。例如,如果您在ArcGis中创建了geotiff图像,然后尝试将其读入Matlab,则它将以int16形式出现,并且在尝试使用mapshow或geshow时会出现相同的错误,但是' DisplayType&# 39;,'表面'在这种情况下不起作用,因为DisplayType不接受int16。您转换为double的解决方案更为通用。

答案 1 :(得分:0)

我终于明白了。 geotiffread给出矩阵类型“单个”,但mapshow默认显示image,它只接受“double”类型(以及其他一些类型)。所以这里的解决方案是:

A=double(A);

mapshow(A,R,'DisplayType','surface');