public override void Read(BinaryReaderWriter br, bool raw = false, uint headeroffset = 0, uint gapoffset = 0) { base.Read(br, raw, headeroffset, gapoffset); if (Locked != 0) { RawRead = true; return; } // Zoomlevel-Tabelle einlesen ZoomLevel = new List <Zoomlevel>(); br.Seek(PtrZoomlevel); for (int i = 0; i < ZoomlevelCount; i++) { Zoomlevel zl = new Zoomlevel(); zl.Read(br, ZoomlevelRecordSize); ZoomLevel.Add(zl); } // Subtile-Daten einlesen for (int i = 0; i < ZoomLevel.Count; i++) { Zoomlevel zl = ZoomLevel[i]; uint end = PtrZoomlevel; if (i < ZoomLevel.Count - 1) { end = ZoomLevel[i + 1].ZoomlevelItem.PtrSubtileTable; } br.Seek(ZoomLevel[i].ZoomlevelItem.PtrSubtileTable); zl.ReadData(br, end); } if (raw) // keine Entschlüsselung der Höhendaten { RawRead = true; return; } // Decodierung der Höhendaten }
/// <summary> /// Auswertung der Optionen /// </summary> /// <param name="args"></param> public void Evaluate(string[] args) { if (args == null) { return; } List <string> InputArray_Tmp = new List <string>(); try { cmd.Parse(args); foreach (MyOptions opt in Enum.GetValues(typeof(MyOptions))) // jede denkbare Option testen { int optcount = cmd.OptionAssignment((int)opt); // Wie oft wurde diese Option verwendet? if (optcount > 0) { switch (opt) { case MyOptions.Input: Input = cmd.StringValue((int)opt).Trim(); break; case MyOptions.OutPath: OutPath = cmd.StringValue((int)opt).Trim(); break; case MyOptions.Symbolname: Symbolname = cmd.StringValue((int)opt).Trim(); break; case MyOptions.Zoomlevel: for (int i = 0; i < cmd.OptionAssignment((int)opt); i++) { Zoomlevel.Add((int)cmd.UnsignedIntegerValue((int)opt, i)); } break; case MyOptions.OutputOverwrite: if (cmd.ArgIsUsed((int)opt)) { OutputOverwrite = cmd.BooleanValue((int)opt); } else { OutputOverwrite = true; } break; case MyOptions.Help: ShowHelp(); break; } } } //TestParameter = new string[cmd.Parameters.Count]; //cmd.Parameters.CopyTo(TestParameter); if (string.IsNullOrEmpty(Symbolname)) { Symbolname = "Waypoint"; } if (string.IsNullOrEmpty(OutPath)) { OutPath = ".\\gpx"; } if (Zoomlevel.Count == 0) { Zoomlevel.Add(0); } if (cmd.Parameters.Count > 0) { throw new Exception("Es sind keine Argumente sondern nur Optionen erlaubt."); } } catch (Exception ex) { Console.Error.WriteLine(ex.Message); ShowHelp(); throw new Exception("Fehler beim Ermitteln oder Anwenden der Programmoptionen."); } }