1

MATLABでUSGSDEMを使用しようとしていますが、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

4

2 に答える 2

1

Matlabは「画像」と連続ラスターデータを区別するため、DisplayTypeを指定する必要があります。Matlabには、画像処理ツールボックス全体と、それぞれに個別の機能を備えたマッピングツールボックスがあります。これらの機能は、多くの場合補完的ですが、さまざまな開発バックグラウンドに由来します。Matlabは、論理、uint8、uint16、およびdoubleクラスタイプの「イメージ」と、singleおよびdoubleのラスター(グリッド)データをサポートします。

また、「DisplayType」、「surface」を使用するソリューションは、「single」データがあるため、この場合にのみ機能しました。たとえば、ArcGisでgeotiff画像を作成し、それをMatlabに読み込もうとした場合、int16として入力され、mapshowまたはgeoshowを使用しようとすると同じエラーが発生しますが、「DisplayType」、「surface」 'この場合、DisplayTypeはint16を受け入れないため、機能しません。doubleに変換するソリューションはより一般的です。

于 2014-10-09T17:42:32.387 に答える
0

私はついにそれを理解しました。 geotiffread行列タイプは「single」ですが、mapshowはデフォルトで、imageタイプ「double」(およびその他のタイプ)のみを受け入れるものを表示します。したがって、ここでの解決策は次のいずれかです。

A=double(A);

また

mapshow(A,R,'DisplayType','surface');
于 2012-05-19T00:27:55.100 に答える