Borrar filtros
Borrar filtros

How do I extract the multiband data using shape file?

1 visualización (últimos 30 días)
gauri
gauri el 9 de Mayo de 2024
Editada: gauri el 13 de Mayo de 2024
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 comentarios
gauri
gauri el 9 de Mayo de 2024
The link mentioned above also have shape file along with data file.
gauri
gauri el 9 de Mayo de 2024
Movida: Cris LaPierre el 10 de Mayo de 2024
the extracted data should have
number of sample = 1315
number of lines = 1153
number of bands = 7

Iniciar sesión para comentar.

Respuestas (1)

Jacob Mathew
Jacob Mathew el 10 de Mayo de 2024
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 comentario
gauri
gauri el 10 de Mayo de 2024
Editada: gauri el 13 de Mayo de 2024
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.

Iniciar sesión para comentar.

Categorías

Más información sobre Large Files and Big Data en Help Center y File Exchange.

Productos


Versión

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by