public static GeometryTypeInfo readGeometryType ( ByteReader reader ) { // Read the single byte order byte byte byteOrderValue = reader . readByte ( ) ; ByteOrder byteOrder = byteOrderValue == 0 ? ByteOrder . BIG_ENDIAN : ByteOrder . LITTLE_ENDIAN ; reader . setByteOrder ( byteOrder ) ; // Read the geometry type unsigned integer long unsignedGeometryTypeCode = reader . readUnsignedInt ( ) ; // Check for 2.5D geometry types boolean hasZ = false ; if ( unsignedGeometryTypeCode > WKB25D ) { hasZ = true ; unsignedGeometryTypeCode -= WKB25D ; } int geometryTypeCode = ( int ) unsignedGeometryTypeCode ; // Determine the geometry type GeometryType geometryType = GeometryCodes . getGeometryType ( geometryTypeCode ) ; // Determine if the geometry has a z (3d) or m (linear referencing // system) value if ( ! hasZ ) { hasZ = GeometryCodes . hasZ ( geometryTypeCode ) ; } boolean hasM = GeometryCodes . hasM ( geometryTypeCode ) ; GeometryTypeInfo geometryInfo = new GeometryTypeInfo ( geometryTypeCode , geometryType , hasZ , hasM ) ; return geometryInfo ; }
Read the geometry type info