Class GMLWriter

java.lang.Object
org.locationtech.jts.io.gml2.GMLWriter

public class GMLWriter extends Object
Writes Geometrys as XML fragments in GML2 format. Allows specifying the XML prefix, namespace and srsName of the emitted GML. Also allows adding custom root elements to support GML extensions such as KML. With appropriate settings for prefix (none) and custom root elements this class can be used to write out geometry in KML format.

An example of the output that can be generated is:

 <gml:LineString xmlns:gml='http://www.opengis.net/gml' srsName='foo'>
   <gml:coordinates>
     6.03,8.17 7.697,6.959 8.333,5.0 7.697,3.041 6.03,1.83 3.97,1.83 2.303,3.041 1.667,5.0 2.303,6.959 3.97,8.17 
   </gml:coordinates>
 </gml:LineString>
 

This class does not rely on any external XML libraries.

  • Field Details

    • INDENT

      private final String INDENT
      See Also:
    • startingIndentIndex

      private int startingIndentIndex
    • maxCoordinatesPerLine

      private int maxCoordinatesPerLine
    • emitNamespace

      private boolean emitNamespace
    • isRootTag

      private boolean isRootTag
    • prefix

      private String prefix
    • namespace

      private String namespace
    • srsName

      private String srsName
    • customElements

      private String[] customElements
    • coordinateSeparator

      private static final String coordinateSeparator
      See Also:
    • tupleSeparator

      private static final String tupleSeparator
      See Also:
  • Constructor Details

    • GMLWriter

      public GMLWriter()
      Creates a writer which outputs GML with default settings. The defaults are:
      • the namespace prefix is gml:
      • no namespace prefix declaration is written
      • no srsName attribute is written
    • GMLWriter

      public GMLWriter(boolean emitNamespace)
      Creates a writer which may emit the GML namespace prefix declaration in the geometry root element.
      Parameters:
      emitNamespace - true if the GML namespace prefix declaration should be written in the geometry root element
  • Method Details

    • setPrefix

      public void setPrefix(String prefix)
      Specifies the namespace prefix to write on each GML tag. A null or blank prefix may be used to indicate no prefix.

      The default is to write gml: as the namespace prefix.

      Parameters:
      prefix - the namespace prefix to use (null or blank if none)
    • setSrsName

      public void setSrsName(String srsName)
      Sets the value of the srsName attribute to be written into the root geometry tag. If the value is null or blank no srsName attribute will be written. The provided value must be a valid XML attribute value - it will not be XML-escaped.

      The default is not to write the srsName attribute.

      Parameters:
      srsName - the srsName attribute value
    • setNamespace

      public void setNamespace(boolean emitNamespace)
      Determines whether a GML namespace declaration will be written in the opening tag of geometries. Useful in XML-aware environments which parse the geometries before use, such as XSLT.
      Parameters:
      emitNamespace - true if the GML namespace prefix declaration should be written in the root geometry element
    • setCustomElements

      public void setCustomElements(String[] customElements)
      Specifies a list of custom elements which are written after the opening tag of the root element. The text contained in the string sequence should form valid XML markup. The specified strings are written one per line immediately after the root geometry tag line.

      For instance, this is useful for adding KML-specific geometry parameters such as <extrude>

      Parameters:
      customElements - a list of the custom element strings, or null if none
    • setStartingIndentIndex

      public void setStartingIndentIndex(int indent)
      Sets the starting column index for pretty printing
      Parameters:
      indent -
    • setMaxCoordinatesPerLine

      public void setMaxCoordinatesPerLine(int num)
      Sets the number of coordinates printed per line.
      Parameters:
      num -
    • write

      public String write(Geometry geom)
      Writes a Geometry in GML2 format to a String.
      Parameters:
      geom -
      Returns:
      String GML2 Encoded Geometry
    • write

      public void write(Geometry geom, Writer writer) throws IOException
      Writes a Geometry in GML2 format into a Writer.
      Parameters:
      geom - Geometry to encode
      writer - Stream to encode to.
      Throws:
      IOException
    • write

      private void write(Geometry geom, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writePoint

      private void writePoint(Point p, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writeLineString

      private void writeLineString(LineString ls, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writeLinearRing

      private void writeLinearRing(LinearRing lr, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writePolygon

      private void writePolygon(Polygon p, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writeMultiPoint

      private void writeMultiPoint(MultiPoint mp, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writeMultiLineString

      private void writeMultiLineString(MultiLineString mls, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writeMultiPolygon

      private void writeMultiPolygon(MultiPolygon mp, Writer writer, int level) throws IOException
      Throws:
      IOException
    • writeGeometryCollection

      private void writeGeometryCollection(GeometryCollection gc, Writer writer, int level) throws IOException
      Throws:
      IOException
    • write

      private void write(Coordinate[] coords, Writer writer, int level) throws IOException
      Takes a list of coordinates and converts it to GML.
      2d and 3d aware.
      Parameters:
      coords - array of coordinates
      Throws:
      IOException
    • startLine

      private void startLine(int level, Writer writer) throws IOException
      Throws:
      IOException
    • startGeomTag

      private void startGeomTag(String geometryName, Geometry g, Writer writer) throws IOException
      Throws:
      IOException
    • writeAttributes

      private void writeAttributes(Geometry geom, Writer writer) throws IOException
      Throws:
      IOException
    • writeCustomElements

      private void writeCustomElements(Geometry geom, Writer writer) throws IOException
      Throws:
      IOException
    • endGeomTag

      private void endGeomTag(String geometryName, Writer writer) throws IOException
      Throws:
      IOException
    • prefix

      private String prefix()