示例#1
0
 /// <summary>
 /// Method to read
 /// </summary>
 /// <param name="reader"></param>
 /// <param name="wkbReader"></param>
 /// <returns></returns>
 public static GpkgStandardBinary Read(BinaryReader reader, WKBReader wkbReader)
 {
     return(new GpkgStandardBinary
     {
         Header = GpkgBinaryHeader.Read(reader),
         WellKnownBytes = reader.ReadBytes((int)(reader.BaseStream.Length - reader.BaseStream.Position)),
         _wkbReader = wkbReader
     });
 }
示例#2
0
        private static void ReadBESridExtent(BinaryReader reader, GpkgBinaryHeader header)
        {
            header._srs_id = SwapByteOrder(reader.ReadInt32());
            var ordinates = header.Ordinates;
            if (ordinates == Ordinates.None)
            {
                header._extent = new Envelope();
                header._zrange = Interval.Create();
                header._mrange = Interval.Create();
                return;
            }
            header._extent = new Envelope(SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()),
                SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()));
            if ((ordinates & Ordinates.Z) == Ordinates.Z)
                header._zrange = Interval.Create(SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()));

            if ((ordinates & Ordinates.M) == Ordinates.M)
                header._mrange = Interval.Create(SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()));
        }
示例#3
0
        public static GpkgBinaryHeader Read(BinaryReader reader)
        {
            var res = new GpkgBinaryHeader();
            res._magic = reader.ReadBytes(2);
            res._version = reader.ReadByte();
            res._flags = reader.ReadByte();

            switch (res.Endianess)
            {
                case 1:
                    ReadSridExtent(reader, res);
                    break;
                case 2:
                    ReadBESridExtent(reader, res);
                    break;
            }

            return res;
        }
示例#4
0
        public static GpkgBinaryHeader Read(BinaryReader reader)
        {
            var res = new GpkgBinaryHeader();

            res._magic   = reader.ReadBytes(2);
            res._version = reader.ReadByte();
            res._flags   = reader.ReadByte();

            switch (res.Endianess)
            {
            case 1:
                ReadSridExtent(reader, res);
                break;

            case 0:
                ReadBESridExtent(reader, res);
                break;
            }

            return(res);
        }
示例#5
0
        private static void ReadBESridExtent(BinaryReader reader, GpkgBinaryHeader header)
        {
            header._srs_id = SwapByteOrder(reader.ReadInt32());
            var ordinates = header.Ordinates;

            if (ordinates == Ordinates.None)
            {
                header._extent = new Envelope(double.MinValue, double.MaxValue, double.MinValue, double.MaxValue);
                header._zrange = Interval.Create(double.MinValue, double.MaxValue);
                header._mrange = Interval.Create(double.MinValue, double.MaxValue);
                return;
            }
            header._extent = new Envelope(SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()),
                                          SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()));
            if ((ordinates & Ordinates.Z) == Ordinates.Z)
            {
                header._zrange = Interval.Create(SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()));
            }

            if ((ordinates & Ordinates.M) == Ordinates.M)
            {
                header._mrange = Interval.Create(SwapByteOrder(reader.ReadDouble()), SwapByteOrder(reader.ReadDouble()));
            }
        }
示例#6
0
        private static void ReadSridExtent(BinaryReader reader, GpkgBinaryHeader header)
        {
            header._srs_id = reader.ReadInt32();
            var ordinates = header.Ordinates;

            if (ordinates == Ordinates.None)
            {
                header._extent = new Envelope();
                header._zrange = Interval.Create();
                header._mrange = Interval.Create();
                return;
            }
            header._extent = new Envelope(reader.ReadDouble(), reader.ReadDouble(),
                                          reader.ReadDouble(), reader.ReadDouble());
            if ((ordinates & Ordinates.Z) == Ordinates.Z)
            {
                header._zrange = Interval.Create(reader.ReadDouble(), reader.ReadDouble());
            }

            if ((ordinates & Ordinates.M) == Ordinates.M)
            {
                header._mrange = Interval.Create(reader.ReadDouble(), reader.ReadDouble());
            }
        }