public class GMLWriter
extends java.lang.Object
Geometry
s 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.
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
coordinateSeparator |
private java.lang.String[] |
customElements |
private boolean |
emitNamespace |
private java.lang.String |
INDENT |
private boolean |
isRootTag |
private int |
maxCoordinatesPerLine |
private java.lang.String |
namespace |
private java.lang.String |
prefix |
private java.lang.String |
srsName |
private int |
startingIndentIndex |
private static java.lang.String |
tupleSeparator |
Constructor and Description |
---|
GMLWriter()
Creates a writer which outputs GML with default settings.
|
GMLWriter(boolean emitNamespace)
Creates a writer which may emit the GML namespace prefix
declaration in the geometry root element.
|
Modifier and Type | Method and Description |
---|---|
private void |
endGeomTag(java.lang.String geometryName,
java.io.Writer writer) |
private java.lang.String |
prefix() |
void |
setCustomElements(java.lang.String[] customElements)
Specifies a list of custom elements
which are written after the opening tag
of the root element.
|
void |
setMaxCoordinatesPerLine(int num)
Sets the number of coordinates printed per line.
|
void |
setNamespace(boolean emitNamespace)
Determines whether a GML namespace declaration will be written in the
opening tag of geometries.
|
void |
setPrefix(java.lang.String prefix)
Specifies the namespace prefix to write on each GML tag.
|
void |
setSrsName(java.lang.String srsName)
Sets the value of the srsName attribute
to be written into the root geometry tag.
|
void |
setStartingIndentIndex(int indent)
Sets the starting column index for pretty printing
|
private void |
startGeomTag(java.lang.String geometryName,
Geometry g,
java.io.Writer writer) |
private void |
startLine(int level,
java.io.Writer writer) |
private void |
write(Coordinate[] coords,
java.io.Writer writer,
int level)
Takes a list of coordinates and converts it to GML.
2d and 3d aware. |
java.lang.String |
write(Geometry geom)
Writes a
Geometry in GML2 format to a String. |
void |
write(Geometry geom,
java.io.Writer writer)
Writes a
Geometry in GML2 format into a Writer . |
private void |
write(Geometry geom,
java.io.Writer writer,
int level) |
private void |
writeAttributes(Geometry geom,
java.io.Writer writer) |
private void |
writeCustomElements(Geometry geom,
java.io.Writer writer) |
private void |
writeGeometryCollection(GeometryCollection gc,
java.io.Writer writer,
int level) |
private void |
writeLinearRing(LinearRing lr,
java.io.Writer writer,
int level) |
private void |
writeLineString(LineString ls,
java.io.Writer writer,
int level) |
private void |
writeMultiLineString(MultiLineString mls,
java.io.Writer writer,
int level) |
private void |
writeMultiPoint(MultiPoint mp,
java.io.Writer writer,
int level) |
private void |
writeMultiPolygon(MultiPolygon mp,
java.io.Writer writer,
int level) |
private void |
writePoint(Point p,
java.io.Writer writer,
int level) |
private void |
writePolygon(Polygon p,
java.io.Writer writer,
int level) |
private final java.lang.String INDENT
private int startingIndentIndex
private int maxCoordinatesPerLine
private boolean emitNamespace
private boolean isRootTag
private java.lang.String prefix
private java.lang.String namespace
private java.lang.String srsName
private java.lang.String[] customElements
private static final java.lang.String coordinateSeparator
private static final java.lang.String tupleSeparator
public GMLWriter()
public GMLWriter(boolean emitNamespace)
emitNamespace
- true if the GML namespace prefix declaration should be written
in the geometry root elementpublic void setPrefix(java.lang.String prefix)
The default is to write gml: as the namespace prefix.
prefix
- the namespace prefix to use (null or blank if none)public void setSrsName(java.lang.String srsName)
The default is not to write the srsName attribute.
srsName
- the srsName attribute valuepublic void setNamespace(boolean emitNamespace)
emitNamespace
- true if the GML namespace prefix declaration
should be written in the root geometry elementpublic void setCustomElements(java.lang.String[] customElements)
For instance, this is useful for adding KML-specific geometry parameters such as <extrude>
customElements
- a list of the custom element strings, or null if nonepublic void setStartingIndentIndex(int indent)
indent
- public void setMaxCoordinatesPerLine(int num)
num
- public java.lang.String write(Geometry geom)
Geometry
in GML2 format to a String.geom
- public void write(Geometry geom, java.io.Writer writer) throws java.io.IOException
Geometry
in GML2 format into a Writer
.geom
- Geometry to encodewriter
- Stream to encode to.java.io.IOException
private void write(Geometry geom, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writePoint(Point p, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writeLineString(LineString ls, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writeLinearRing(LinearRing lr, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writePolygon(Polygon p, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writeMultiPoint(MultiPoint mp, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writeMultiLineString(MultiLineString mls, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writeMultiPolygon(MultiPolygon mp, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void writeGeometryCollection(GeometryCollection gc, java.io.Writer writer, int level) throws java.io.IOException
java.io.IOException
private void write(Coordinate[] coords, java.io.Writer writer, int level) throws java.io.IOException
coords
- array of coordinatesjava.io.IOException
private void startLine(int level, java.io.Writer writer) throws java.io.IOException
java.io.IOException
private void startGeomTag(java.lang.String geometryName, Geometry g, java.io.Writer writer) throws java.io.IOException
java.io.IOException
private void writeAttributes(Geometry geom, java.io.Writer writer) throws java.io.IOException
java.io.IOException
private void writeCustomElements(Geometry geom, java.io.Writer writer) throws java.io.IOException
java.io.IOException
private void endGeomTag(java.lang.String geometryName, java.io.Writer writer) throws java.io.IOException
java.io.IOException
private java.lang.String prefix()