Modifying the NDBI values using MODIS bands data
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
import matlab.io.hdfeos.*
import matlab.io.hdf4.*
for i=1
direc=strcat('F:\Bands_data\Terra\');
cd(direc)
files = dir(fullfile( '*.hdf'));
for j=1:size(files,1)
filename=files(j).name;
FILE_NAME=strcat('F:\Bands_data\Terra\',filename);
GRID_NAME='MOD_Grid_500m_Surface_Reflectance';
DATAFIELD_NAME='sur_refl_b01';
file_id = gd.open(FILE_NAME, 'rdonly');
grid_id = gd.attach(file_id, GRID_NAME);
data = gd.readField(grid_id, DATAFIELD_NAME, [], [], []);
[xdimsize, ydimsize, upleft,lowright] = gd.gridInfo(grid_id);
gd.detach(grid_id);
gd.close(file_id);
data=double(data);
data=data';
SD_id = sd.start(FILE_NAME, 'rdonly');
sds_index = sd.nameToIndex(SD_id, DATAFIELD_NAME);
sds_id = sd.select(SD_id, sds_index);
fillvalue_index = sd.findAttr(sds_id, '_FillValue');
fillvalue = sd.readAttr(sds_id, fillvalue_index);
long_name_index = sd.findAttr(sds_id, 'long_name');
long_name = sd.readAttr(sds_id, long_name_index);
units_index = sd.findAttr(sds_id, 'units');
units = sd.readAttr(sds_id, units_index);
scale_index = sd.findAttr(sds_id, 'scale_factor');
scale = sd.readAttr(sds_id, scale_index);
scale = double(scale);
offset_index = sd.findAttr(sds_id, 'add_offset');
offset = sd.readAttr(sds_id, offset_index);
range_index = sd.findAttr(sds_id, 'valid_range');
range = sd.readAttr(sds_id, range_index);
sd.endAccess(sds_id);
sd.close(SD_id);
data(data==fillvalue) = NaN;
data(data < range(1)) = NaN;
data(data > range(2)) = NaN;
data = (data - offset) * scale;
Band1(:,:,j)=data;
clear data
j
end
end
clearvars -except Band2 Band6 Band1
%%
b1=mean(Band1,3,'omitNaN');
b2=mean(Band2,3,'omitNaN');
b6=mean(Band6,3,'omitNaN');
b7=mean(Band7,3,'omitNaN');
%%
NDBI=(double(b6)-double(b2))./(double(b6)+double(b2));
ndbire=griddata(double(lat),double(lon),NDBI,h24v6lat,h24v6lon);
reshapeAOD=reshape(MeanAOD,1697000,1);
reshapeNDBI=reshape(ndbire,1697000,1);
reshapeddatandbi=cat(2,reshapeAOD, reshapeNDBI);
reshapeddatandbi(any(isnan(reshapeddatandbi),2),:)=[];
correlation_NDBI = corr(reshapeddatandbi(:,1),reshapeddatandbi(:,2));![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/887450/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/887450/image.png)
This is the code used to generate Normalized Difference Built-Up Index. In the output figure the lower left portion is water area and the water area is also classified into built up area and built up area is lying in negative values range. I need to figure this out where am i doing wrong?
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Large Files and Big Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!