public void Export(string ac_filename, string[] dbffiles, int[] index) { int steps = dbffiles.Length; DBFReader dbf = new DBFReader(dbffiles[0]); int nfeature = dbf.RecordCount; var buf = new DataCube<float>(index.Length, steps, nfeature); string[] field = new string[index.Length]; for (int i = 0; i < index.Length; i++) { field[i] = dbf.Fields[index[i]].Name; } dbf.Close(); for (int t = 0; t < steps; t++) { dbf = new DBFReader(dbffiles[t]); for (int n = 0; n < dbf.RecordCount; n++) { var obj = dbf.NextRecord(); for (int i = 0; i < index.Length; i++) { buf[i, t, n] = float.Parse(obj[index[i]].ToString()); } } dbf.Close(); } buf.Variables = field; DataCubeStreamWriter ac = new DataCubeStreamWriter(ac_filename); ac.WriteAll(buf); }
/// <summary> /// Export Mike SHP Results to AC file /// </summary> /// <param name="grid"></param> /// <param name="ac_filename"></param> /// <param name="shpfiles"></param> /// <param name="field"></param> public void Export(ITriangularGrid grid, string ac_filename, string[] shpfiles, string field) { int steps = shpfiles.Length; int nfeature = grid.VertexCount; var buf = new DataCube<float>(1, steps, nfeature); for (int i = 0; i < steps; i++) { var fs = FeatureSet.Open(shpfiles[i]); var vec = (from dr in fs.DataTable.AsEnumerable() select (float)dr.Field<double>(field)).ToArray(); for (int k = 0; k < grid.VertexCount; k++) { var cells = grid.Topology.NodeConnectedCells[k]; float temp = 0; for (int c = 0; c < cells.Length; c++) { temp += vec[cells[c]]; } temp /= cells.Length; buf[0, i, k] = temp; } fs.Close(); } buf.Variables = new string[] { field }; DataCubeStreamWriter ac = new DataCubeStreamWriter(ac_filename); ac.WriteAll(buf); }
public void Export(ITriangularGrid grid, string ac_filename, string[] dbffiles, int[] index) { int steps = dbffiles.Length; int nfeature = grid.VertexCount; var buf = new DataCube<float>(index.Length, steps, nfeature); string[] field = new string[index.Length]; for (int i = 0; i < steps; i++) { DBFReader dbf = new DBFReader(dbffiles[i]); var vec = new double[index.Length][]; for (int t = 0; t < index.Length; t++) { vec[t] = new double[dbf.RecordCount]; } for (int n = 0; n < dbf.RecordCount; n++) { var obj = dbf.NextRecord(); for (int t = 0; t < index.Length; t++) { vec[t][n] = double.Parse(obj[index[t]].ToString()); } } for (int t = 0; t < index.Length; t++) { for (int k = 0; k < grid.VertexCount; k++) { var cells = grid.Topology.NodeConnectedCells[k]; double temp = 0; for (int c = 0; c < cells.Length; c++) { temp += vec[t][cells[c]]; } temp /= cells.Length; buf[t, i, k] = (float)temp; } field[t] = dbf.Fields[index[t]].Name; } dbf.Close(); } buf.Variables = field; DataCubeStreamWriter ac = new DataCubeStreamWriter(ac_filename); ac.WriteAll(buf); }
private void menu_SaveAs_Click(object sender, EventArgs e) { var meta = olvMatName.SelectedObject as MatMeta; if (meta != null && meta.Mat != null) { SaveDcxForm dlg = new SaveDcxForm(meta.Mat); if (dlg.ShowDialog() == DialogResult.OK) { var index = dlg.CheckedIndex; if (index.Count() > 0) { System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; DataCubeStreamWriter asx = new DataCubeStreamWriter(dlg.FileName); asx.WriteAll(meta.Mat, index); System.Windows.Forms.Cursor.Current = Cursors.Default; } } } }
public override bool Execute(DotSpatial.Data.ICancelProgressHandler cancelProgressHandler) { DataCubeStreamReader ass = new DataCubeStreamReader(InputFileName); DataCubeStreamWriter dcw = new DataCubeStreamWriter(OutputFileName); ass.Open(); dcw.WriteHeader(ass.Variables, ass.FeatureCount); if (InputTemperatureUnit == TemperatureUnit.Kelvin) { for (int t = 0; t < ass.NumTimeStep; t++) { var mat = ass.LoadStep(); for (int i = 0; i < mat.Size[2]; i++) { mat[0, 0, i] = UnitConversion.Kelvin2Fahrenheit(mat[0, 0, i]); } dcw.WriteStep(1, ass.FeatureCount, mat); } } else if (InputTemperatureUnit == TemperatureUnit.Celsius) { for (int t = 0; t < ass.NumTimeStep; t++) { var mat = ass.LoadStep(); for (int i = 0; i < mat.Size[2]; i++) { mat[0, 0, i] = UnitConversion.Celsius2Fahrenheit(mat[0, 0, i]); } dcw.WriteStep(1, ass.FeatureCount, mat); } } ass.Close(); dcw.Close(); return(true); }
public override bool Execute(DotSpatial.Data.ICancelProgressHandler cancelProgressHandler) { //string basedir = @"E:\Heihe\HRB\DataSets\Driving Forces\PXD\"; //AverageTemperatureFileName = basedir + "daily_tavk_11243.dcx"; //MaxTemperatureFileName = basedir + "daily_tmaxk_11243.dcx"; //MinTemperatureFileName = basedir + "daily_tmink_11243.dcx"; //RelativeHumidityFileName = @"E:\Heihe\HRB\DataSets\Driving Forces\TY\rh.dcx"; //AirPressureFileName = basedir + "daily_ap_11243.dcx"; //WindSpeedFileName = basedir + "daily_windspeed_11243.dcx"; IFeatureSet fs = FeatureSet.Open(PointFeatureFileName); string[] files = new string[] { AverageTemperatureFileName, MaxTemperatureFileName, MinTemperatureFileName, RelativeHumidityFileName, AirPressureFileName, WindSpeedFileName }; var npt = fs.NumRows(); Coordinate[] coors = new Coordinate[npt]; for (int i = 0; i < npt; i++) { var geo_pt = fs.GetFeature(i).Geometry; coors[i] = geo_pt.Coordinate; } int nfile = files.Length; DataCubeStreamReader[] ass = new DataCubeStreamReader[nfile]; DataCube <float>[] mats = new DataCube <float> [nfile]; for (int i = 0; i < nfile; i++) { ass[i] = new DataCubeStreamReader(files[i]); ass[i].Open(); } int progress = 0; int nstep = ass[0].NumTimeStep; int ncell = ass[0].FeatureCount; PenmanMonteithET pet = new PenmanMonteithET(); DataCubeStreamWriter sw = new DataCubeStreamWriter(OutputFileName); sw.WriteHeader(new string[] { "pet" }, ncell); DataCube <float> mat_out = new DataCube <float>(1, 1, ncell); mat_out.DateTimes = new DateTime[nstep]; int count = 1; for (int t = 0; t < nstep; t++) { for (int i = 0; i < nfile; i++) { mats[i] = ass[i].LoadStep(); } for (int n = 0; n < ncell; n++) { var tav = mats[0][0, 0, n]; var tmax = mats[1][0, 0, n]; var tmin = mats[2][0, 0, n]; if (InputTemperatureUnit == TemperatureUnit.Fahrenheit) { tmax = (float)UnitConversion.Fahrenheit2Kelvin(tmax); tmin = (float)UnitConversion.Fahrenheit2Kelvin(tmin); tav = (float)UnitConversion.Fahrenheit2Kelvin(tav); } else if (InputTemperatureUnit == TemperatureUnit.Celsius) { tmax = (float)UnitConversion.Celsius2Kelvin(tmax); tmin = (float)UnitConversion.Celsius2Kelvin(tmin); tav = (float)UnitConversion.Celsius2Kelvin(tav); } double ap = mats[4][0, 0, n] / 1000; var et0 = pet.ET0(coors[n].Y, coors[n].X, tav, tmax, tmin, mats[3][0, 0, n], ap, mats[5][0, 0, n], Start.AddDays(t), CloudCover); if (OutputLengthUnit == LengthUnit.inch) { mat_out[0, 0, n] = (float)System.Math.Round(et0 * UnitConversion.mm2Inch, 3); } else { mat_out[0, 0, n] = (float)System.Math.Round(et0, 3); } } mat_out.DateTimes[t] = Start.AddDays(1); sw.WriteStep(1, ncell, mat_out); progress = t * 100 / nstep; if (progress > count) { cancelProgressHandler.Progress("Package_Tool", progress, "Processing step:" + (t + 1)); count++; } } sw.Close(); for (int i = 0; i < nfile; i++) { ass[i].Close(); } return(true); }