我正在尝试使用映射工具箱从Web地图服务器读取(更具体地说,使用WebMapServer对象w / out)。我可以自己构建URL w / out问题,并且只能将imread用于返回bmp文件的WMS。但是,其中一个WMS返回BIL文件(Band InterLeaved),而imread()无法识别它。
如何使用映射工具箱从URL中读取BIL文件?
编辑:这是我想要阅读的示例网址:
另外,如果我尝试只抓取字节数据w / 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 )' );
上面显示的图像与映射工具箱返回的图像类似,但是有些区域设置为不应该是的常量值。
答案 0 :(得分:0)
上述问题的解决方案是使用urlwrite()而不是urlread(),因为后者无法正确处理二进制数据。
fname = tempname();
urlwrite(mapurl,fname);
fp = fopen(fname,'r');
map = reshape(fread(fp,'int16=>int16'),Ncols,Nrows)';
fclose(fp);
delete(fname);