Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
 public override void Open(IGeoModel model)
 {
     Debug.Assert(model != null);
     builder = model.CreateGridBuilder();
     ReadHeader();
     ReadBody();
     builder.Build();
 }
Exemple #4
0
 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;
 }
Exemple #5
0
        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());
                        }
                    }
                }
            }
        }
Exemple #6
0
 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();
 }
Exemple #8
0
        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();
        }