public static void writeGeometry(ByteWriter writer, Geometry geometry)
			throws IOException {

		// Write the single byte order byte
		byte byteOrder = writer.getByteOrder() == ByteOrder.BIG_ENDIAN ? (byte) 0
				: (byte) 1;
		writer.writeByte(byteOrder);

		// Write the geometry type integer
		writer.writeInt(GeometryCodes.getCode(geometry));

		GeometryType geometryType = geometry.getGeometryType();

		switch (geometryType) {

		case GEOMETRY:
			throw new SFException("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case POINT:
			writePoint(writer, (Point) geometry);
			break;
		case LINESTRING:
			writeLineString(writer, (LineString) geometry);
			break;
		case POLYGON:
			writePolygon(writer, (Polygon) geometry);
			break;
		case MULTIPOINT:
			writeMultiPoint(writer, (MultiPoint) geometry);
			break;
		case MULTILINESTRING:
			writeMultiLineString(writer, (MultiLineString) geometry);
			break;
		case MULTIPOLYGON:
			writeMultiPolygon(writer, (MultiPolygon) geometry);
			break;
		case GEOMETRYCOLLECTION:
		case MULTICURVE:
		case MULTISURFACE:
			writeGeometryCollection(writer, (GeometryCollection<?>) geometry);
			break;
		case CIRCULARSTRING:
			writeCircularString(writer, (CircularString) geometry);
			break;
		case COMPOUNDCURVE:
			writeCompoundCurve(writer, (CompoundCurve) geometry);
			break;
		case CURVEPOLYGON:
			writeCurvePolygon(writer, (CurvePolygon<?>) geometry);
			break;
		case CURVE:
			throw new SFException("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case SURFACE:
			throw new SFException("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case POLYHEDRALSURFACE:
			writePolyhedralSurface(writer, (PolyhedralSurface) geometry);
			break;
		case TIN:
			writeTIN(writer, (TIN) geometry);
			break;
		case TRIANGLE:
			writeTriangle(writer, (Triangle) geometry);
			break;
		default:
			throw new SFException("Geometry Type not supported: "
					+ geometryType);
		}

	}
public static void writeGeometry(ByteWriter writer, Geometry geometry)
			throws IOException {

		
		byte byteOrder = writer.getByteOrder() == ByteOrder.BIG_ENDIAN ? (byte) 0
				: (byte) 1;
		writer.writeByte(byteOrder);

		
		writer.writeInt(GeometryCodes.getCode(geometry));

		GeometryType geometryType = geometry.getGeometryType();

		switch (geometryType) {

		case GEOMETRY:
			throw new SFException("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case POINT:
			writePoint(writer, (Point) geometry);
			break;
		case LINESTRING:
			writeLineString(writer, (LineString) geometry);
			break;
		case POLYGON:
			writePolygon(writer, (Polygon) geometry);
			break;
		case MULTIPOINT:
			writeMultiPoint(writer, (MultiPoint) geometry);
			break;
		case MULTILINESTRING:
			writeMultiLineString(writer, (MultiLineString) geometry);
			break;
		case MULTIPOLYGON:
			writeMultiPolygon(writer, (MultiPolygon) geometry);
			break;
		case GEOMETRYCOLLECTION:
		case MULTICURVE:
		case MULTISURFACE:
			writeGeometryCollection(writer, (GeometryCollection<?>) geometry);
			break;
		case CIRCULARSTRING:
			writeCircularString(writer, (CircularString) geometry);
			break;
		case COMPOUNDCURVE:
			writeCompoundCurve(writer, (CompoundCurve) geometry);
			break;
		case CURVEPOLYGON:
			writeCurvePolygon(writer, (CurvePolygon<?>) geometry);
			break;
		case CURVE:
			throw new SFException("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case SURFACE:
			throw new SFException("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case POLYHEDRALSURFACE:
			writePolyhedralSurface(writer, (PolyhedralSurface) geometry);
			break;
		case TIN:
			writeTIN(writer, (TIN) geometry);
			break;
		case TRIANGLE:
			writeTriangle(writer, (Triangle) geometry);
			break;
		default:
			throw new SFException("Geometry Type not supported: "
					+ geometryType);
		}

	}
public static void writeGeometry ( ByteWriter writer , Geometry geometry ) throws IOException { // Write the single byte order byte byte byteOrder = writer . getByteOrder ( ) == ByteOrder . BIG_ENDIAN ? ( byte ) 0 : ( byte ) 1 ; writer . writeByte ( byteOrder ) ; // Write the geometry type integer writer . writeInt ( GeometryCodes . getCode ( geometry ) ) ; GeometryType geometryType = geometry . getGeometryType ( ) ; switch ( geometryType ) { case GEOMETRY : throw new SFException ( "Unexpected Geometry Type of " + geometryType . name ( ) + " which is abstract" ) ; case POINT : writePoint ( writer , ( Point ) geometry ) ; break ; case LINESTRING : writeLineString ( writer , ( LineString ) geometry ) ; break ; case POLYGON : writePolygon ( writer , ( Polygon ) geometry ) ; break ; case MULTIPOINT : writeMultiPoint ( writer , ( MultiPoint ) geometry ) ; break ; case MULTILINESTRING : writeMultiLineString ( writer , ( MultiLineString ) geometry ) ; break ; case MULTIPOLYGON : writeMultiPolygon ( writer , ( MultiPolygon ) geometry ) ; break ; case GEOMETRYCOLLECTION : case MULTICURVE : case MULTISURFACE : writeGeometryCollection ( writer , ( GeometryCollection < ? > ) geometry ) ; break ; case CIRCULARSTRING : writeCircularString ( writer , ( CircularString ) geometry ) ; break ; case COMPOUNDCURVE : writeCompoundCurve ( writer , ( CompoundCurve ) geometry ) ; break ; case CURVEPOLYGON : writeCurvePolygon ( writer , ( CurvePolygon < ? > ) geometry ) ; break ; case CURVE : throw new SFException ( "Unexpected Geometry Type of " + geometryType . name ( ) + " which is abstract" ) ; case SURFACE : throw new SFException ( "Unexpected Geometry Type of " + geometryType . name ( ) + " which is abstract" ) ; case POLYHEDRALSURFACE : writePolyhedralSurface ( writer , ( PolyhedralSurface ) geometry ) ; break ; case TIN : writeTIN ( writer , ( TIN ) geometry ) ; break ; case TRIANGLE : writeTriangle ( writer , ( Triangle ) geometry ) ; break ; default : throw new SFException ( "Geometry Type not supported: " + geometryType ) ; } }
Write a geometry to the byte writer

@param writer
@param geometry
@throws IOException
Write a geometry to the byte writer