Exemple #1
0
        public static async Task Write(this Stream stream, Types.RecordHeader header, int count = 1)
        {
            stream.Write((byte)WkbByteOrder.BigEndian);

            var type = header.Type switch
            {
                ShapeTypes.Point => WkbShapeTypes.Point,
                ShapeTypes.Polyline => count == 1 ? WkbShapeTypes.LineString : WkbShapeTypes.MultiLineString,
                ShapeTypes.Polygon => WkbShapeTypes.Polygon,
                ShapeTypes.MultiPoint => WkbShapeTypes.MultiPoint,

                _ => throw new NotSupportedException($"Shape type '{header.Type}' is not supported yet!")
            };
            await stream.Write((uint)type);
        }
Exemple #2
0
 public static async Task <Records.MultiPointRecord> ReadMultiPointRecord(this Stream stream, Types.RecordHeader header)
 => new Records.MultiPointRecord
 {
     Header      = header,
     BoundingBox = await stream.ReadBox(),
     Points      = await stream.ReadPoints()
 };
Exemple #3
0
        public static async Task <Records.PolygonRecord> ReadPolygonRecord(this Stream stream, Types.RecordHeader header)
        {
            var box = await stream.ReadBox();

            var parts = await stream.ReadInt(false);

            var points = await stream.ReadInt(false);

            return(new Records.PolygonRecord
            {
                Header = header,
                BoundingBox = box,
                Parts = await stream.ReadIntArray(parts),
                Points = await stream.ReadPoints(points)
            });
        }
Exemple #4
0
 public static async Task <Records.PointRecord> ReadPointRecord(this Stream stream, Types.RecordHeader header)
 => new Records.PointRecord
 {
     Header = header,
     X      = await stream.ReadDouble(),
     Y      = await stream.ReadDouble()
 };