Class KMLWriter

java.lang.Object
org.locationtech.jts.io.kml.KMLWriter

public class KMLWriter extends Object
Writes a formatted string containing the KML representation of a JTS Geometry. The output is KML fragments which can be substituted wherever the KML Geometry abstract element can be used.

Output elements are indented to provide a nicely-formatted representation. An output line prefix and maximum number of coordinates per line can be specified.

The Z ordinate value output can be forced to be a specific value. The extrude and altitudeMode modes can be set. If set, the corresponding sub-elements will be output.

  • Field Details

    • ALTITUDE_MODE_CLAMPTOGROUND

      public static String ALTITUDE_MODE_CLAMPTOGROUND
      The KML standard value clampToGround for use in setAltitudeMode(String).
    • ALTITUDE_MODE_RELATIVETOGROUND

      public static String ALTITUDE_MODE_RELATIVETOGROUND
      The KML standard value relativeToGround for use in setAltitudeMode(String).
    • ALTITUDE_MODE_ABSOLUTE

      public static String ALTITUDE_MODE_ABSOLUTE
      The KML standard value absolute for use in setAltitudeMode(String).
    • INDENT_SIZE

      private final int INDENT_SIZE
      See Also:
    • COORDINATE_SEPARATOR

      private static final String COORDINATE_SEPARATOR
      See Also:
    • TUPLE_SEPARATOR

      private static final String TUPLE_SEPARATOR
      See Also:
    • linePrefix

      private String linePrefix
    • maxCoordinatesPerLine

      private int maxCoordinatesPerLine
    • zVal

      private double zVal
    • extrude

      private boolean extrude
    • tesselate

      private boolean tesselate
    • altitudeMode

      private String altitudeMode
    • numberFormatter

      private DecimalFormat numberFormatter
  • Constructor Details

    • KMLWriter

      public KMLWriter()
      Creates a new writer.
  • Method Details

    • writeGeometry

      public static String writeGeometry(Geometry geometry, double z)
      Writes a Geometry as KML to a string, using a specified Z value.
      Parameters:
      geometry - the geometry to write
      z - the Z value to use
      Returns:
      a string containing the KML geometry representation
    • writeGeometry

      public static String writeGeometry(Geometry geometry, double z, int precision, boolean extrude, String altitudeMode)
      Writes a Geometry as KML to a string, using a specified Z value, precision, extrude flag, and altitude mode code.
      Parameters:
      geometry - the geometry to write
      z - the Z value to use
      precision - the maximum number of decimal places to write
      extrude - the extrude flag to write
      altitudeMode - the altitude model code to write
      Returns:
      a string containing the KML geometry representation
    • setLinePrefix

      public void setLinePrefix(String linePrefix)
      Sets a tag string which is prefixed to every emitted text line. This can be used to indent the geometry text in a containing document.
      Parameters:
      linePrefix - the tag string
    • setMaximumCoordinatesPerLine

      public void setMaximumCoordinatesPerLine(int maxCoordinatesPerLine)
      Sets the maximum number of coordinates to output per line.
      Parameters:
      maxCoordinatesPerLine - the maximum number of coordinates to output
    • setZ

      public void setZ(double zVal)
      Sets the Z value to be output for all coordinates. This overrides any Z value present in the Geometry coordinates.
      Parameters:
      zVal - the Z value to output
    • setExtrude

      public void setExtrude(boolean extrude)
      Sets the flag to be output in the extrude element.
      Parameters:
      extrude - the extrude flag to output
    • setTesselate

      public void setTesselate(boolean tesselate)
      Sets the flag to be output in the tesselate element.
      Parameters:
      tesselate - the tesselate flag to output
    • setAltitudeMode

      public void setAltitudeMode(String altitudeMode)
      Sets the value output in the altitudeMode element.
      Parameters:
      altitudeMode - string representing the altitude mode
    • setPrecision

      public void setPrecision(int precision)
      Sets the maximum number of decimal places to output in ordinate values. Useful for limiting output size.
      Parameters:
      precision - the number of decimal places to output
    • write

      public String write(Geometry geom)
      Writes a Geometry in KML format as a string.
      Parameters:
      geom - the geometry to write
      Returns:
      a string containing the KML geometry representation
    • write

      public void write(Geometry geometry, Writer writer) throws IOException
      Writes the KML representation of a Geometry to a Writer.
      Parameters:
      geometry - the geometry to write
      writer - the Writer to write to
      Throws:
      IOException - if an I/O error occurred
    • write

      public void write(Geometry geometry, StringBuffer buf)
      Appends the KML representation of a Geometry to a StringBuffer.
      Parameters:
      geometry - the geometry to write
      buf - the buffer to write into
    • writeGeometry

      private void writeGeometry(Geometry g, int level, StringBuffer buf)
    • startLine

      private void startLine(String text, int level, StringBuffer buf)
    • geometryTag

      private String geometryTag(String geometryName, String attributes)
    • writeModifiers

      private void writeModifiers(int level, StringBuffer buf)
    • writePoint

      private void writePoint(Point p, String attributes, int level, StringBuffer buf)
    • writeLineString

      private void writeLineString(LineString ls, String attributes, int level, StringBuffer buf)
    • writeLinearRing

      private void writeLinearRing(LinearRing lr, String attributes, boolean writeModifiers, int level, StringBuffer buf)
    • writePolygon

      private void writePolygon(Polygon p, String attributes, int level, StringBuffer buf)
    • writeGeometryCollection

      private void writeGeometryCollection(GeometryCollection gc, String attributes, int level, StringBuffer buf)
    • write

      private void write(Coordinate[] coords, int level, StringBuffer buf)
      Takes a list of coordinates and converts it to KML.
      2d and 3d aware. Terminates the coordinate output with a newline.
      Parameters:
      cs - array of coordinates
    • write

      private void write(Coordinate p, StringBuffer buf)
    • write

      private void write(double num, StringBuffer buf)
    • createFormatter

      private static DecimalFormat createFormatter(int precision)
      Creates the DecimalFormat used to write doubles with a sufficient number of decimal places.
      Parameters:
      precisionModel - the PrecisionModel used to determine the number of decimal places to write.
      Returns:
      a DecimalFormat that write double s without scientific notation.