Here is a code example on how to extract statistics from a res11 or res1d-files. Copy the code and the replace the file names and paths.
# -*- coding: utf-8 -*- import sys import os from hydroinform.ts_tools import HydroTs from hydroinform import DFS, Mike_river import pandas as pd import numpy as np def get_single_point_ts(filename, rivername, topo_id, chainage): """ Gets a single timeseries from a single point in a river Note, this method reads the entire output file, so use with care """ with Mike_river.River_setup(filename) as res: reach = next((r for r in res.reaches if r.name == 'rivername' and r.topo_id==topo_id), None) if reach != None: gp = next((p for p in reach.grid_points if p.chainage == chainage), None) ts = res.get_timeseries_Q(gp) return ts def statistics(filename, prename): """ Returns a dataframe with statistics on the water flow from either a .res11- or res1d-file """ res11=Mike_river.River_setup.from_file(filename) columns=['Name', 'TopoId', 'Branch', 'Downstream','Chainage','X','Y', 'Min', 'Max', 'Average', 'DFFV_EQR', 'DVFI_EQR', 'DVPI_EQR', 'Q95', 'Q75', 'Q50', 'Q25', 'MedianMin'] nbqpoints = np.sum([len(r.grid_points_q) for r in res11.reaches]) data = pd.DataFrame(columns=columns,index = range(nbqpoints)) index =0 for reach in res11.reaches: #Loop all reaches for gp in reach.grid_points_q: #Loop all q-points ts = res11.get_timeseries_Q(gp) # get the discharge time series hts = HydroTs(ts) # Create a hydro time series #set all values idstring=prename + reach.topo_id + '_' + reach.name +'_' + str(round(gp.chainage,1)) if(gp.downstream!=''): idstring = idstring +'_' + gp.downstream data.at[index, 'Name'] = prename + gp.name data.at[index, 'TopoId'] = reach.topo_id data.at[index, 'Branch']=reach.name data.at[index, 'Chainage']=gp.chainage data.at[index, 'Downstream']=gp.downstream data.at[index, 'X']=gp.x data.at[index, 'Y']=gp.y data.at[index, 'Min']=ts.min() data.at[index, 'Max']=ts.max() data.at[index, 'Average']=np.average(ts) data.at[index, 'DFFV_EQR']=hts.DFFV_EQR() data.at[index, 'DVFI_EQR']=hts.DVFIEQR() data.at[index, 'DVPI_EQR']=hts.DVPIEQR() data.at[index, 'Q95']=hts.Q95 data.at[index, 'Q75']=hts.Q75 data.at[index, 'Q50']=hts.Q50 data.at[index, 'Q25']=hts.Q25 data.at[index, 'MedianMin']=hts.medianmin() index+=1 res11.dispose() return data if __name__ == "__main__": #get_single_point_ts(r'QPoints2\R201803_vandweb\m11_res\abs\DK1_Abs.res11','MERNAA', 'novana_model', 8251).to_csv(r'c:\temp\testData.csv') import shapefile df =pd.DataFrame() MikeHydroFiles=[ r'C:\projects\GEUS\DKM2019\production\DK1\DK1_mh_2018.res1d', r'C:\projects\GEUS\DKM2019\production\DK2\DK2_mh_2018.res1d', r'C:\projects\GEUS\DKM2019\production\DK3\DK3_mh_2018.res1d', r'C:\projects\GEUS\DKM2019\production\DK4\DK4_mh_2018.res1d', r'C:\projects\GEUS\DKM2019\production\DK5\DK5_mh_2018.res1d', r'C:\projects\GEUS\DKM2019\production\DK6\DK6_mh_2018.res1d', r'C:\projects\GEUS\DKM2019\production\DK7\DK7_mh_2018.res1d' ] i=0 #Loop the files for file in MikeHydroFiles: print('Reading: ' + file) i=i+1 temp=statistics(file, 'DKM'+str(i)+'_') temp['DKModel']=i #Join the dataframes df=df.append(temp, ignore_index=True) #Write to shapefile with shapefile.Writer(r'c:\temp\output.shp', shapeType=shapefile.POINT) as w: w.autoBalance=True #First columns are text (Branch name) for c in df.columns[0:4]: w.field(c, 'C') #Remaining columns are numbers for c in df.columns[4:-1]: w.field(c, 'F', decimal=10) #Dkmodel number is integer w.field(df.columns[-1], 'N') for i, row in df.iterrows(): w.record(*row) w.point(row['X'],row['Y'])