Issue: H5 dataset extraction based on shapefile and Datetime
Mostrar comentarios más antiguos
I am trying to seprate data from H5 file, reporject and subset it based on shapefile. My data is available in DateTime Format. However, I am facing error while trying to seprate based on DateTime.
%load shapefiles of indus subbasin lat/lon boundaires
indusFile='UIB_Subbasubs.shp';
S=shaperead(indusFile);
info=shapeinfo(indusFile);
%X Y data is Lon Lat data - shapefile is geographic, not projected
[S.Lon]=S.X;
[S.Lat]=S.Y;
S = rmfield(S,{'X','Y'});
% Indus subbasins
indusBasins = {'Astore';'Gilgit';'Hunza';'Indus Downstream';'Shyok';'Shingo';'Shigar';' Zanskar'};
% union of subbasins to clip parbal output to
%(could extract by individual subbasins instead)
[idxSN,~] = ismember({S.Name},indusBasins);
tempIdx=find(idxSN);
for i = 1:length(indusBasins)
geoin = polyshape(S(tempIdx(i)).Lon,S(tempIdx(i)).Lat);
% combine masks from each subbasin
if i==1
basinUnion=geoin;
else
basinUnion=union(basinUnion,geoin);
end
end
%yr = 2000;
sweDateStart = datetime(2000,01,01,0,0,0);
sweDateEnd = datetime(2000,01,01,23,0,0);
sweDates = sweDateStart:hours(1):sweDateEnd;
sweDates.Format = 'yyyyMMddHHmmSS';
%example parbal output from one year
sweFile= ['D:/matlab tutorial/MODIS/20001001_Indus463m_sin_forcings.h5'];
for d = 1:length(sweDates)
% sweDate=datenum(2006,1,1);
[x,hdr,h5mdates]=getMelt(sweFile,'presZ',sweDates(d));
%get geographic raster reference object for the sinusodial data grid
[ geoSWE, geoSWE_RefMatrix, geoSWE_RasterReference] = ...
rasterReprojection(x,hdr.RasterReference,hdr.ProjectionStructure,[]);%,varargin )
% extract SWE for each subbasin
[indusBoundary, indusR] = vec2mtx(basinUnion.Vertices(:,2),...
basinUnion.Vertices(:,1), geoSWE, geoSWE_RefMatrix,'filled');
assert(isequal(geoSWE_RefMatrix,indusR),'refmat issues...')
%0==inside basin boundary, 1== intersects basin boundary, 2== outside basin
%boundary
validPxls=indusBoundary~=2;
basinSWE=geoSWE;
basinSWE(~validPxls)=nan;
% %save geographic referenced SWE output
% saveFile='F:\matlab tutorial\MODIS\',d ,'.tif';
% geotiffwrite(saveFile,basinSWE,geoSWE_RefMatrix);
D=num2str(d)
saveFile= strcat(D,'SWE_DOY.tif')
geotiffwrite(saveFile,basinSWE,geoSWE_RefMatrix);
%check if it worked
info=geotiffinfo(saveFile);
end
2 comentarios
Anmol Dhiman
el 27 de En. de 2021
Hi Usman,
Could you share the part of input data as well for better debugging of the issue.
Muhammad Usman Liaqat
el 27 de En. de 2021
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Data Import and Export en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!