Пример #1
0
        public void SetStartDateTest()
        {
            System.IO.File.Copy(@"..\..\..\TestData\dmi_kgrid_55hr_temp_fcast.dfs2", @"..\..\..\TestData\dmi_kgrid_55hr_temp_fcast_copy.dfs2", true);

            HydroNumerics.MikeSheTools.DFS.DFSBase target = DfsFileFactory.OpenFile(@"..\..\..\TestData\dmi_kgrid_55hr_temp_fcast_copy.dfs2");
            target.TimeOfFirstTimestep = new DateTime(2010, 1, 1);
            target.Dispose();
        }
Пример #2
0
    private void button4_Click(object sender, RoutedEventArgs e)
    {
      string ext = System.IO.Path.GetExtension(DFS2File.Text);

      Microsoft.Win32.SaveFileDialog SaveFileDialog = new Microsoft.Win32.SaveFileDialog();
      SaveFileDialog.Filter = string.Format("Known file types (*{0})|*{0}",ext);
      SaveFileDialog.Title = "Merge into dfs-file";

      if (SaveFileDialog.ShowDialog().HasValue)
      {
        DFS = DfsFileFactory.OpenFile(DFS2File.Text); 
        var dfsout = DfsFileFactory.CreateFile(SaveFileDialog.FileName, 1);

        using (System.IO.StreamReader sr = new System.IO.StreamReader(TxtFile.Text))
        {
          dfsout.CopyFromTemplate(DFS);

          dfsout.FirstItem.EumItem = DHI.Generic.MikeZero.eumItem.eumIPrecipitationRate;
          dfsout.FirstItem.EumUnit = DHI.Generic.MikeZero.eumUnit.eumUmmPerDay;
          dfsout.TimeStep = TimeControl.Value;
            dfsout.TimeOfFirstTimestep = datePicker1.DateTimeSelected;
  
          sr.ReadLine();

          var gridcodes = DFS.ReadItemTimeStep(0, 1);
          Dictionary<int, List<int>> GridcodesIndex = new Dictionary<int, List<int>>();

          for (int i = 0; i<gridcodes.Count(); i++) 
          {
            if (gridcodes[i] != DFS.DeleteValue)
            {
              List<int> grids;
              if (!GridcodesIndex.TryGetValue((int)gridcodes[i], out grids))
              {
                grids = new List<int>();
                GridcodesIndex.Add((int)gridcodes[i], grids);
              }
              grids.Add(i);
              gridcodes[i] = (float)DFS.DeleteValue;
            }

          }

          var splits = sr.ReadLine().Split(new string[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
          List<int> gridcodestxt = new List<int>(splits.Select(var => (int)float.Parse(var)));

          int tscounter=0;
          while (!sr.EndOfStream)
          {
            splits = sr.ReadLine().Split(new string[] { " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
            for (int j = 0; j < splits.Count(); j++)
            {
              List<int> grids;

              if (GridcodesIndex.TryGetValue(gridcodestxt[j], out grids))
              {
                float val = float.Parse(splits[j]);
                foreach (var k in grids)
                  gridcodes[k] = val;
              }
            }

            dfsout.WriteItemTimeStep(tscounter, 1, gridcodes);
            tscounter++;
          }
        }

        DFS.Dispose();
        dfsout.Dispose();
      }
    }