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;
	}
public static GeometryTypeInfo readGeometryType(ByteReader reader) {

		
		byte byteOrderValue = reader.readByte();
		ByteOrder byteOrder = byteOrderValue == 0 ? ByteOrder.BIG_ENDIAN
				: ByteOrder.LITTLE_ENDIAN;
		reader.setByteOrder(byteOrder);

		
		long unsignedGeometryTypeCode = reader.readUnsignedInt();

		
		boolean hasZ = false;
		if (unsignedGeometryTypeCode > WKB25D) {
			hasZ = true;
			unsignedGeometryTypeCode -= WKB25D;
		}

		int geometryTypeCode = (int) unsignedGeometryTypeCode;

		
		GeometryType geometryType = GeometryCodes
				.getGeometryType(geometryTypeCode);

		
		
		if (!hasZ) {
			hasZ = GeometryCodes.hasZ(geometryTypeCode);
		}
		boolean hasM = GeometryCodes.hasM(geometryTypeCode);

		GeometryTypeInfo geometryInfo = new GeometryTypeInfo(geometryTypeCode,
				geometryType, hasZ, hasM);

		return geometryInfo;
	}
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

@param reader
byte reader
@return geometry type info
Read the geometry type info