function [GI_rainloc,GI_DateRL,ATTIVA,FIG,FIG_ENG] = report_RL(rRL,m,NodoRainLink,toolrif,... unitrif,datarif,Font_caption,Font_tools,siteID,DT,DT_ENG,FIG,FIG_ENG,br,status,ATTIVA,... activeEN,conn,FileName) fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'report_RL function started'; fprintf(fileID,fmt,text); import mlreportgen.dom.* import mlreportgen.report.* % Make sure DOM is compilable makeDOMCompilable() titolo = 1; GI_rainloc = []; GI_DateRL = []; if status(m,1) == 1 if ATTIVA == 1 ATTIVA = 0; testo = Paragraph('Catena non ancora installata o inattiva.'); add(DT,testo); if activeEN == 1 testo = Paragraph('Array not installed or inactive.'); add(DT_ENG,testo); end end elseif status(m,1) == 3 if ATTIVA == 1 ATTIVA = 0; testo = Paragraph(['Monitoraggio completato. Invitiamo a visitare la '... 'piattaforma web per la visione dei dati storici.']); add(DT,testo); if activeEN == 1 testo = Paragraph(['Monitoring completed. Please log into the web-based platform '... 'to access the complete dataset.']); add(DT_ENG,testo); end end else for r = 1:rRL(m,1) NodeNum = num2str(NodoRainLink(r,m)); comando = ['select EventDate, EventTime, Z, ZShift from ElabDataView where EventDate >= ''' ... datarif ''' and ToolNameID = ''' char(toolrif) ''' and UnitName = ''' char(unitrif) ... ''' and NodeNum = ''' NodeNum ''' ']; curs = exec(conn,comando); curs = fetch(curs); Dati = curs.Data; % Modifico il formato di data e ora [rD,rC] = size(Dati); if rC ~= 1 T = [cell2mat(Dati(:,1)) repmat(' ', [rD,1]) cell2mat(Dati(:,2))]; Date = datenum(T); % Data pioggiatot = cell2mat(Dati(:,3)); % altezza di pioggia cumulata pioggialoc = cell2mat(Dati(:,4)); % altezza di pioggia locale pioggiatot_diff = pioggiatot - pioggiatot(1); % per grafici integrati GI_rainloc = pioggialoc; GI_DateRL = Date; % grafico piogge locali e totali figure(6) rain = bar(Date,pioggialoc,65); title('Precipitazioni'); yyaxis left ylabel('Altezza di pioggia [mm]'); xlabel('Data [gg/mm/aaaa]'); xlim([Date(1)-1 Date(end)+1]); ylim([0 max(pioggialoc(:,1))+1]); hold on yyaxis right raintot = plot(Date,pioggiatot_diff); ylabel('Altezza di pioggia cumulata [mm]'); set(gca,'YColor','k'); if min(pioggiatot_diff(:,1))-2 > 0 ylim([min(pioggiatot_diff(:,1))-2 max(pioggiatot_diff(:,1))+1]); else ylim([0 max(pioggiatot_diff(:,1))+1]); end h = gca; h.XAxis.MinorTick = 'on'; datetick('x','dd/mm/yyyy','keepticks','keeplimits'); xtickangle(25); str(1,1) = cellstr('Precipitazioni'); str(2,1) = cellstr('Precipitazioni cumulate'); legend(str,'Location','best'); grid on grid minor TempName = char(strcat('Report',siteID,'-', char(toolrif),'-RainLink', NodeNum, '.png')); saveas(raintot,TempName); ChartRL = Image(TempName); ChartRL.Style = {ScaleToFit}; ChartRL_cap = Paragraph(['Fig. ' num2str(FIG) ' - Andamento nel tempo delle precipitazioni misurate dal pluviometro']); FIG = FIG+1; ChartRL_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; testo = Paragraph(['Il grafico seguente riporta i dati di precipitazione '... 'locale e cumulata registrati nel periodo temporale di riferimento. '... 'In particolare, l''altezza di pioggia totale registrata '... 'dal pluviometro in riferimento al solo periodo di riferimento ' char(232) ' pari a ' num2str(sum(pioggiatot_diff(end)))... ' mm, mentre il valore di pioggia cumulata '... 'a partire dall''inizio dell''attivit' char(224) ' di monitoraggio ' char(232) ' di ' num2str(pioggiatot(end))... ' mm (dato aggiornato al ' datestr(Date(end), 'dd/mm/yyyy HH:MM') ').']); testo.HAlign = 'justify'; if titolo == 1 sezRain = Paragraph('Rain Link'); sezRain.Style = {FontSize(Font_tools),Bold(1),Italic(1)}; RR = Section(); RR.Title = sezRain; add(DT,sezRain); if activeEN == 1 sezRain_ENG = Paragraph('Rain Link'); sezRain_ENG.Style = {FontSize(Font_tools),Bold(1),Italic(1)}; RR_ENG = Section(); RR_ENG.Title = sezRain; add(DT_ENG,sezRain_ENG); end titolo = 0; end add(DT,testo); add(DT,ChartRL); add(DT,ChartRL_cap); add(DT,br); close(figure(6)); %--ENG-- if activeEN == 1 % grafico piogge locali e totali figure(16) rain = bar(Date,pioggialoc,25); title('Rainfall'); yyaxis left ylabel('Rainfall [mm]'); xlabel('Date [dd/mm/yyyy]'); xlim([Date(1)-1 Date(end)+1]); ylim([0 max(pioggialoc(:,1))+1]); hold on yyaxis right raintot = plot(Date,pioggiatot_diff); ylabel('Cumulative rainfall [mm]'); set(gca,'YColor','k'); if min(pioggiatot_diff(:,1))-2 > 0 ylim([min(pioggiatot_diff(:,1))-2 max(pioggiatot_diff(:,1))+1]); else ylim([0 max(pioggiatot_diff(:,1))+1]); end h = gca; h.XAxis.MinorTick = 'on'; datetick('x','dd/mm/yyyy','keepticks','keeplimits'); xtickangle(25); str(1,1) = cellstr('Rainfall'); str(2,1) = cellstr('Cumulative rainfall'); legend(str,'Location','best'); grid on grid minor TempName = char(strcat('Report',siteID,'-', char(toolrif),'-RainLink', NodeNum, '_ENG.png')); saveas(raintot,TempName); ChartRL_ENG = Image(TempName); ChartRL_ENG.Style = {ScaleToFit}; ChartRL_ENG_cap = Paragraph(['Fig. ' num2str(FIG_ENG) ' - Rainfall trend recorded by the rain gauge during the reference time period']); FIG_ENG = FIG_ENG+1; ChartRL_ENG_cap.Style = {HAlign('center'),FontSize(Font_caption),Italic(1),Color('midnightblue')}; testo = Paragraph(['The following graph shows precipitation data recorded by the rain gauge during the '... 'reference time period. In particular, the sensor recorded a total rainfall of '... ' ' num2str(sum(pioggiatot_diff(end)))... ' mm during the reference time period, while the cumulative rainfall measured since the '... 'beginning of the monitoring activity amounts to ' num2str(pioggiatot(end))... ' mm (updated to: ' datestr(Date(end), 'dd/mm/yyyy HH:MM') ').']); testo.HAlign = 'justify'; add(DT_ENG,testo); add(DT_ENG,ChartRL_ENG); add(DT_ENG,ChartRL_ENG_cap); add(DT_ENG,br); close(figure(16)); end % pulisco variabili da riutilizzare per catena successiva clear pioggiatot; clear pioggialoc; else if ATTIVA == 1 testo = Paragraph('Non sono presenti dati relativi al periodo temporale considerato.'); ATTIVA = 0; add(DT,testo); if activeEN == 1 testo = Paragraph('No data available for the reference time period.'); add(DT_ENG,testo); end end end end end text = 'report_RL function executed correctly. report_RL function closed'; fprintf(fileID,fmt,text); fclose(fileID); end