0

マッピング ツールボックスを使用せずに (より具体的には、WebMapServer オブジェクトを使用せずに)、Web マップ サーバーから読み取ろうとしています。問題なく URL を自分で作成でき、bmp ファイルを返す WMS に imread を使用できます。ただし、WMS の 1 つは BIL ファイル (Band InterLeaved) を返し、imread() はそれを認識しません。

マッピング ツールボックスを使用せずに URL から BIL ファイルを読み取るにはどうすればよいですか?

編集:これは私が読みたいURLの例です:

http://www.nasa.network.com/elev?SERVICE=WMS&LAYERS=mergedAsterElevations&EXCEPTIONS=application/vnd.ogc.se_xml&FORMAT=image%2Fbil&TRANSPARENT=FALSE&HEIGHT=1113&BGCOLOR=0xFFFFFF&REQUEST=GetMap&WIDTH=925&BBOX=-118.545692,33.96052.04,061,-5 34.060523999999994&スタイル=&SRS=EPSG:4326&バージョン=1.3.0

また、urlread を使用してバイト データを取得し、それをファイルに書き込もうとすると、何らかの値が失われます。

bytedata = urlread( mapurl );
fp = fopen( 'tmp.bil', 'w' );
fwrite( fp, bytedata, 'uint8' );
fclose( fp );
fp = fopen( 'tmp.bil', 'r' );
z = fread( fp, 'int16' );
imagesc( reshape( z, 925, 1113 )' );

上の図は、マッピング ツールボックスによって返される画像と同様の画像を表示していますが、そうすべきではない定数値に設定されている領域があります。

4

1 に答える 1

0

上記の問題の解決策は、urlread()ではなくurlwrite()を使用することです。後者は、バイナリデータを適切に処理しないためです。

fname = tempname();
urlwrite(mapurl,fname);
fp = fopen(fname,'r');
map = reshape(fread(fp,'int16=>int16'),Ncols,Nrows)';
fclose(fp);
delete(fname);
于 2012-12-02T20:19:52.593 に答える