public override void Open(IGeoModel model) { Debug.Assert(model != null); builder = model.CreateGridBuilder(); Debug.Assert(builder != null); using (ILineReader lineReader = new SkippingLineReader(Location.LocalPath)) { ReadHeader(lineReader); BuildGridParameters(); switch (maxFieldCode) { case 3: // XYZ points not supported // TODO: Signal not supported break; case 5: ReadFiveColumnGrid(lineReader); break; case 7: ReadFiveColumnGrid(lineReader); // Ignore the ID and name columns break; default: // Unknown // TODO: Inform user. break; } } builder.Build(); }
public override void Open(IGeoModel model) { Debug.Assert(model != null); builder = model.CreateGridBuilder(); Debug.Assert(builder != null); using (FileStream stream = new FileStream(Location.LocalPath, FileMode.Open, FileAccess.Read)) using (BinaryReader reader = EndianBinaryReader.CreateForBigEndianData(stream)) { // We keep track of our own length rather than testing for EOF which is // inefficient with FileStream long length = stream.Length; if (length < 4) { throw new OpenException("EarthVision Binary File too short"); } long position = 0; bool foundMagic = ReadMagic(reader); if (!foundMagic) { StringBuilder message = new StringBuilder(); message.AppendFormat("Incorrect EarthVision Binary Grid header"); throw new OpenException(message.ToString()); } position += 4; while (position < length) { ReadRecord(reader, ref position); } } builder.Build(); }
public override void Open(IGeoModel model) { Debug.Assert(model != null); builder = model.CreateGridBuilder(); ReadHeader(); ReadBody(); builder.Build(); }
public void Build(IGrid2DBuilder builder) { Debug.Assert(builder != null); Debug.Assert(XOrigin.HasValue && YOrigin.HasValue && INum.HasValue && JNum.HasValue && IInc.HasValue && JInc.HasValue); builder.XOrigin = XOrigin.Value; builder.YOrigin = YOrigin.Value; builder.INum = INum.Value; builder.JNum = JNum.Value; builder.IInc = IInc.Value; builder.JInc = JInc.Value; builder.Orientation = Orientation; }
public void Open(IGeoModel model) { Debug.Assert(uri != null); Debug.Assert(model != null); builder = model.CreateGridBuilder(); int postHeaderLine = ParseHeader(); // Read the body of the grid, skipping comment and blank lines using (SkippingLineReader lineReader = new SkippingLineReader(uri.LocalPath, Cps3.commentBlanksPattern)) { // Skip forward over the header while (lineReader.PhysicalLineNumber < postHeaderLine) { lineReader.ReadLineNoSkip(); } // Parse the body of the grid string line; int counter = 0; while ((line = lineReader.ReadLine()) != null) { string[] fields = Regex.Split(line, @"\s+"); foreach (string field in fields) { double z; if (double.TryParse(field, out z)) { int i = counter % parameters.INum.Value; int j = counter / parameters.INum.Value; if (z != parameters.ZNull) { builder[i, j] = z; } ++counter; } else { StringBuilder message = new StringBuilder(); message.AppendFormat("Bad grid data '{0}' at line {1}", field, lineReader.PhysicalLineNumber); throw new OpenException(message.ToString()); } } } } }
public override void Open(IGeoModel model) { Debug.Assert(model != null); builder = model.CreateGridBuilder(); using (LineReader lineReader = new LineReader(Location.LocalPath)) { try { ReadHeader(lineReader); ReadRowMajorGrid(lineReader); } catch (EndOfStreamException endOfStreamException) { throw new OpenException("Unexpected end of file", Location, endOfStreamException); } } builder.Build(); }
public void Read(ILineReader lineReader, IGeoModel model) { // Pre-condition: The next line to be read will be the first line // of the header builder = model.CreateGridBuilder(); try { ReadHeader(lineReader); parameters.VerifyAndCompleteParameters(); parameters.Build(builder); ReadBody(lineReader); } catch (FormatException formatException) { StringBuilder message = new StringBuilder(); message.AppendFormat("Unable to parse ZMap file at line {0} because {1}", lineReader.PhysicalLineNumber, formatException.Message); throw new OpenException(message.ToString()); } builder.Build(); }
public override void Open(IGeoModel model) { Debug.Assert(model != null); builder = model.CreateGridBuilder(); DetermineType(); switch (subType) { case SubType.SurferAscii: OpenSurferAscii(); break; case SubType.Surfer6Binary: OpenSurfer6Binary(); break; case SubType.Surfer7Binary: OpenSurfer7Binary(); break; default: throw new OpenException("Not recognised as a Golden Software Surfer Binary grid file", Location); } builder.Build(); }