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); }
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() };
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) }); }
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() };