private static Geometry FromBinary(EndianAwareBinaryReader reader) { Endianness endianness = (Endianness)reader.ReadByte(); reader.SetEndianness(endianness); WkbType type = (WkbType)reader.ReadUInt32(); switch (type) { case WkbType.Geometry: { return(FromBinary(reader)); } case WkbType.Point: { return(PointFrom(reader)); } case WkbType.LineString: { return(LineStringFrom(reader)); } case WkbType.Polygon: { return(PolygonFrom(reader)); } case WkbType.MultiPoint: { return(MultiPointFrom(reader)); } case WkbType.MultiLineString: { return(MultiLineStringFrom(reader)); } case WkbType.MultiPolygon: { return(MultiPolygonFrom(reader)); } case WkbType.GeometryCollection: { return(GeometryCollectionFrom(reader)); } default: { throw new NotSupportedException($"Unsupported WKB type {type.ToString()}."); } } }
internal static void WriteXdr(this BinaryWriter writer, WkbType wkbType) { writer.WriteXdr((int)wkbType); }