Overview | Package | Class | Tree | Deprecated | Index | Help
| JTS Topology Suite version 1.13
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.vividsolutions.jts.io
Class WKBWriter

    java.lang.Object
      com.vividsolutions.jts.io.WKBWriter

    public class WKBWriter

extends java.lang.Object

Writes a `Geometry` into Well-Known Binary format. Supports use of an `OutStream`, which allows easy use with arbitary byte stream sinks.

The WKB format is specified in the OGC Simple Features for SQL specification. This implementation also supports the Extended WKB standard. Extended WKB allows writing 3-dimensional coordinates and including the geometry SRID value. The presence of 3D coordinates is signified by setting the high bit of the `wkbType` word. The presence of an SRID is signified by setting the third bit of the `wkbType` word. EWKB format is upward compatible with the original SFS WKB format.

Empty Points cannot be represented in WKB; an `IllegalArgumentException` will be thrown if one is written.

The WKB specification does not support representing `LinearRing`s; they will be written as `LineString`s.

This class is designed to support reuse of a single instance to read multiple geometries. This class is not thread-safe; each thread should create its own instance.

### Syntax

The following syntax specification describes the version of Well-Known Binary supported by JTS.

The specification uses a syntax language similar to that used in the C language. Bitfields are specified from hi-order to lo-order bits.

>      byte = 1 byte
>      uint32 = 32 bit unsigned integer (4 bytes)
>      double = double precision number (8 bytes)

>      abstract Point { }

>      Point2D extends Point {
>             double x;
>             double y;
>      }

>      Point3D extends Point {
>             double x;
>             double y;
>             double z;
>      }

>      LinearRing {
>             uint32 numPoints;
>             Point points[numPoints];
>      }

>      enum wkbGeometryType {
>             wkbPoint = 1,
>             wkbLineString = 2,
>             wkbPolygon = 3,
>             wkbMultiPoint = 4,
>             wkbMultiLineString = 5,
>             wkbMultiPolygon = 6,
>             wkbGeometryCollection = 7
>      }

>      enum byteOrder {
>             wkbXDR = 0,     // Big Endian
>             wkbNDR = 1      // Little Endian
>      }

>      WKBType {
>             uint32 wkbGeometryType : 8; // values from enum wkbGeometryType
>      }

>      EWKBType {
>             uint32 is3D : 1;         // 0 = 2D, 1 = 3D
>             uint32 noData1 : 1;
>             uint32 hasSRID : 1;      // 0, no, 1 = yes
>             uint32 noData2 : 21;
>             uint32 wkbGeometryType : 8; // values from enum wkbGeometryType
>      }

>      abstract WKBGeometry {
>             byte byteOrder;          // values from enum byteOrder
>             EWKBType wkbType
>             [ uint32 srid; ]         // only if hasSRID = yes
>      }

>      WKBPoint extends WKBGeometry {
>             Point point;
>      }

>      WKBLineString extends WKBGeometry {
>             uint32 numCoords;
>             Point points[numCoords];
>      }

>      WKBPolygon extends WKBGeometry {
>             uint32 numRings;
>             LinearRing rings[numRings];
>      }

>      WKBMultiPoint extends WKBGeometry {
>             uint32 numElems;
>             WKBPoint elems[numElems];
>      }

>      WKBMultiLineString extends WKBGeometry {
>             uint32 numElems;
>             WKBLineString elems[numElems];
>      }

>      wkbMultiPolygon extends WKBGeometry {
>             uint32 numElems;
>             WKBPolygon elems[numElems];
>      }

>      WKBGeometryCollection extends WKBGeometry {
>             uint32 numElems;
>             WKBGeometry elems[numElems];
>      }

See Also:
  `WKBReader`

Constructor Summary
`WKBWriter()` Creates a writer that writes `Geometry`s with output dimension = 2 and BIG_ENDIAN byte order
`WKBWriter(int outputDimension)` Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and `ByteOrderValues.BIG_ENDIAN` byte order.
`WKBWriter(int outputDimension, boolean includeSRID)` Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and `ByteOrderValues.BIG_ENDIAN` byte order.
`WKBWriter(int outputDimension, int byteOrder)` Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and byte order If the input geometry has a small coordinate dimension, coordinates will be padded with `Coordinate.NULL_ORDINATE`.
`WKBWriter(int outputDimension, int byteOrder, boolean includeSRID)` Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and byte order.

Method Summary
`static java.lang.String` | `bytesToHex(byte[] bytes)` Deprecated.
`static java.lang.String` | `toHex(byte[] bytes)` Converts a byte array to a hexadecimal string.
`byte[]` | `write(Geometry geom)` Writes a `Geometry` into a byte array.
`void` | `write(Geometry geom, OutStream os)` Writes a `Geometry` to an `OutStream`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### WKBWriter

    public WKBWriter()

  Creates a writer that writes `Geometry`s with output dimension = 2 and BIG_ENDIAN byte order

### WKBWriter

    public WKBWriter(int outputDimension)

  Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and `ByteOrderValues.BIG_ENDIAN` byte order. If the input geometry has a small coordinate dimension, coordinates will be padded with `Coordinate.NULL_ORDINATE`.

  Parameters:
    `outputDimension` - the coordinate dimension to output (2 or 3)

### WKBWriter

    public WKBWriter(int outputDimension,
                     boolean includeSRID)

  Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and `ByteOrderValues.BIG_ENDIAN` byte order. This constructor also takes a flag to control whether srid information will be written. If the input geometry has a smaller coordinate dimension, coordinates will be padded with `Coordinate.NULL_ORDINATE`.

  Parameters:
    `outputDimension` - the coordinate dimension to output (2 or 3)
    `includeSRID` - indicates whether SRID should be written

### WKBWriter

    public WKBWriter(int outputDimension,
                     int byteOrder)

  Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and byte order If the input geometry has a small coordinate dimension, coordinates will be padded with `Coordinate.NULL_ORDINATE`.

  Parameters:
    `outputDimension` - the coordinate dimension to output (2 or 3)
    `byteOrder` - the byte ordering to use

### WKBWriter

    public WKBWriter(int outputDimension,
                     int byteOrder,
                     boolean includeSRID)

  Creates a writer that writes `Geometry`s with the given dimension (2 or 3) for output coordinates and byte order. This constructor also takes a flag to control whether srid information will be written. If the input geometry has a small coordinate dimension, coordinates will be padded with `Coordinate.NULL_ORDINATE`.

  Parameters:
    `outputDimension` - the coordinate dimension to output (2 or 3)
    `byteOrder` - the byte ordering to use
    `includeSRID` - indicates whether SRID should be written

Method Detail

### bytesToHex

    public static java.lang.String bytesToHex(byte[] bytes)

  Deprecated.

  Converts a byte array to a hexadecimal string.

  Parameters:
    `bytes` -
  Returns:
    a string of hexadecimal digits

### toHex

    public static java.lang.String toHex(byte[] bytes)

  Converts a byte array to a hexadecimal string.

  Parameters:
    `bytes` - a byte array
  Returns:
    a string of hexadecimal digits

### write

    public byte[] write(Geometry geom)

  Writes a `Geometry` into a byte array.

  Parameters:
    `geom` - the geometry to write
  Returns:
    the byte array containing the WKB

### write

    public void write(Geometry geom,
                      OutStream os)
               throws java.io.IOException

  Writes a `Geometry` to an `OutStream`.

  Parameters:
    `geom` - the geometry to write
    `os` - the out stream to write to
  Throws:
    `java.io.IOException` - if an I/O error occurs

Overview | Package | Class | Tree | Deprecated | Index | Help
| JTS Topology Suite version 1.13
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD