How do I extract the multiband data using shape file?

4 次查看(过去 30 天)
I am using my matlab code to extract the multiband data from envi format using shape file. Code is working without any error but it is not extracting multiband data. I am attaching the code and providing the link for data file and shape file and request you to please have a look on it and suggest me how to extract the multiband data. data link is as follows;
  3 个评论
gauri
gauri 2024-5-9
The link mentioned above also have shape file along with data file.
gauri
gauri 2024-5-9
移动:Cris LaPierre 2024-5-10
the extracted data should have
number of sample = 1315
number of lines = 1153
number of bands = 7

请先登录,再进行评论。

回答(1 个)

Jacob Mathew
Jacob Mathew 2024-5-10
After going through the query and downloading the data and the code, I was able to run the code without any error. However, there are few discrepancies that I noticed which may be the reason why you are not getting the output that you expected.
Non unique data across some bands
You have tried to plot multiple bands simultaneously using the code:
mapshow(rescale(Z(:,:,[3 2 1])),R)
Plotting only one band at a time and comparing them side by side shows that there isn’t much variation between them:
Further investigation shows that there are only 3 unique bands:
  • Band 1 (corresponding to index 1)
  • Band 2, 3 4 and 5 (corresponding to index 2, 3, 4 & 5)
  • Ban 6 and 7 (corresponding to index 6 & 7)
Possibly incorrect logical mask
The 5490x5490 matrix logical mask has a rank of 3 and the sum of all its elements is 5. This shows that that mask matrix is overwhelmingly empty.
Fixing these two discrepancies might yield better result.
  1 个评论
gauri
gauri 2024-5-10
编辑:gauri 2024-5-13
I have modified the code as follows;
% Get image info:
DataFile='C:\working_bpt\bands\Bagpat_7Bands.dat'
[Z,R] = readgeoraster(DataFile);
disp(size(Z));
p = R.ProjectedCRS;
[x,y] = worldGrid(R);
[lon,lat] = projinv(p,x,y);
ShapeFile='C:\working_bpt\bands\BAGHPAT.shp'
S = shaperead(ShapeFile);
info = shapeinfo(ShapeFile);
crs = info.CoordinateReferenceSystem;
[S(1).lon,S(1).lat] = projinv(crs,S(1).X,S(1).Y);
% Remove trailing nan from shapefile
rx = S(1).lon(1:end-1);
ry = S(1).lat(1:end-1);
logical_mask = inpolygon(S(1).lon,S(1).lat,rx,ry);
% Use the logical mask to extract data
extracted_data = Z(logical_mask);
disp(extracted_data);
it is giving following informations
DataFile =
'C:\working_bpt\bands\Bagpat_7Bands.dat'
5490 5490 7
ShapeFile =
'C:\working_bpt\bands\BAGHPAT.shp'
1 9
>>
I request you to kindly look on it and suggest me how to get seven band data using shape file.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Import, Export, and Conversion 的更多信息

产品


版本

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by