private void DistributeFromDFS2() { ReClaimIntakes(); List <IIntake> IntakesToKeep = new List <IIntake>(); foreach (IIntake I in Intakes) { int col = _gridCodes.GetColumnIndex(I.well.X); int row = _gridCodes.GetRowIndex(I.well.X); if (col >= 0 & row >= 0) { if (_gridCodes.GetData(0, 1)[row, col] != _gridCodes.DeleteValue) { IntakesToKeep.Add(I); Intakes.Remove(I); } } } MoveIntakes(); foreach (IIntake I in IntakesToKeep) { Intakes.Add(I); } }
/// <summary> /// Small program that extracts a time series from a time variant dfs2. /// </summary> /// <param name="args"></param> static void Main(string[] args) { TimespanSeries PrecipTS = new TimespanSeries(); PrecipTS.Name = "Precipitation"; PrecipTS.Description = "Precipitation extracted from dfs2"; PrecipTS.Unit = UnitFactory.Instance.GetUnit(NamedUnits.millimeterperday); //Open the DFS2-file DFS2 precip = new DFS2(@"C:\Users\Jacob\Projekter\MikeSheWrapperForGEUS\novomr6\2-layer-filer\Standard_korrigeret_Prec_DK_10km_1990-2008.dfs2"); //UTM-coordinates for Gjeller sø double XUTM = 456198; double YUTM = 6272321; //Get column and row index from UTM- coordinates int col = precip.GetColumnIndex(XUTM); int row = precip.GetRowIndex(YUTM); //Loop all the time steps for (int i = 0; i < precip.NumberOfTimeSteps; i++) { //Extract the value var val = precip.GetData(i, 1)[row, col]; //Insert into timeseries PrecipTS.AddValue(precip.TimeSteps[i].Subtract(TimeSpan.FromDays(1)), precip.TimeSteps[i], val); } precip.Dispose(); //Now do the same for evaporation. DFS2-file may have another grid and timesteps DFS2 evap = new DFS2(@"C:\Users\Jacob\Projekter\MikeSheWrapperForGEUS\novomr6\2-layer-filer\Novana_DK_EPmak_40km_1990-1998_20km_1999-2008_ed.dfs2"); TimespanSeries EvapTS = new TimespanSeries(); EvapTS.Name = "Evaporation"; EvapTS.Description = "Evaporation extracted from dfs2"; EvapTS.Unit = UnitFactory.Instance.GetUnit(NamedUnits.millimeterperday); //Get column and row index from UTM- coordinates col = evap.GetColumnIndex(XUTM); row = evap.GetRowIndex(YUTM); for (int i = 0; i < evap.NumberOfTimeSteps; i++) { //Extract the value var val = evap.GetData(i, 1)[row, col]; //Insert into timeseries EvapTS.AddValue(evap.TimeSteps[i].Subtract(TimeSpan.FromDays(1)), evap.TimeSteps[i], val); } //Put all time series into a group and save TimeSeriesGroup tsgroup = new TimeSeriesGroup(); tsgroup.Items.Add(PrecipTS); tsgroup.Items.Add(EvapTS); tsgroup.Save(@"C:\Users\Jacob\Projekter\GWSW-Interaction\Gjeller Sø\climate.xts"); }
/// <summary> /// Returns the height at the point using the method selected with the enums /// </summary> /// <param name="point"></param> /// <param name="height"></param> /// <returns></returns> public bool TryFindDemHeight(IXYPoint point, out double?height) { height = null; switch (DEMSource) { case SourceType.Oracle: return(Oracle.TryGetHeight(point, out height)); case SourceType.KMSWeb: return(KMSData.TryGetHeight(point, 32, out height)); case SourceType.DFS2: int col = DFSdem.GetColumnIndex(point.X); int row = DFSdem.GetRowIndex(point.Y); if (col >= 0 & row >= 0) { height = DFSdem.GetData(0, 1)[row, col]; return(true); } else { return(false); } default: return(false); case SourceType.HydroInform: { XYPoint p = point as XYPoint; if (LDC.State == System.ServiceModel.CommunicationState.Faulted) { return(false); } var d = LDC.GetHeight(p.Latitude, p.Longitude); if (d.HasValue) { height = d.Value; } return(d.HasValue); } } return(false); }
public static void InsertPointValues(XElement OperationData) { string filename = OperationData.Element("DFSFileName").Value; int Item = OperationData.Element("Item") == null ? 1 : int.Parse(OperationData.Element("Item").Value); bool ClearValues = OperationData.Element("ClearValues") == null ? true: bool.Parse(OperationData.Element("ClearValues").Value); List <Tuple <double, double, int, int, double> > points = new List <Tuple <double, double, int, int, double> >(); foreach (var p in OperationData.Element("Points").Elements()) { Tuple <double, double, int, int, double> point = new Tuple <double, double, int, int, double>( p.Element("X") == null ? -1 : double.Parse(p.Element("X").Value), p.Element("Y") == null ? -1 : double.Parse(p.Element("Y").Value), p.Element("Z") == null ? 0 : int.Parse(p.Element("Z").Value), p.Element("TimeStep") == null ? 0 : int.Parse(p.Element("TimeStep").Value), double.Parse(p.Element("Value").Value)); points.Add(point); } if (Path.GetExtension(filename).EndsWith("0")) { using (DFS0 dfs = new DFS0(filename)) { if (ClearValues) { for (int i = 0; i < dfs.NumberOfTimeSteps; i++) { dfs.SetData(i, Item, 0); } } foreach (var p in points) { dfs.SetData(p.Item4, Item, p.Item5); } } } else if (Path.GetExtension(filename).EndsWith("2")) { using (DFS2 dfs = new DFS2(filename)) { if (ClearValues) { for (int i = 0; i < dfs.NumberOfTimeSteps; i++) { dfs.SetData(i, Item, new DenseMatrix(dfs.NumberOfRows, dfs.NumberOfColumns)); } } foreach (var p in points) { var data = dfs.GetData(p.Item4, Item); int column = dfs.GetColumnIndex(p.Item1); int row = dfs.GetRowIndex(p.Item2); if (column >= 0 & row >= 0) { data[row, column] = p.Item5; } dfs.SetData(p.Item4, Item, data); } } } else if (Path.GetExtension(filename).EndsWith("3")) { using (DFS3 dfs = new DFS3(filename)) { if (ClearValues) { for (int i = 0; i < dfs.NumberOfTimeSteps; i++) { dfs.SetData(i, Item, new Matrix3d(dfs.NumberOfRows, dfs.NumberOfColumns, dfs.NumberOfLayers)); } } foreach (var p in points) { var data = dfs.GetData(p.Item4, Item); int column = dfs.GetColumnIndex(p.Item1); int row = dfs.GetRowIndex(p.Item2); if (column >= 0 & row >= 0) { data[row, column, p.Item3] = p.Item5; } dfs.SetData(p.Item4, Item, data); } } } }