Package org.locationtech.jtstest.util.io
Class SVGWriter
- java.lang.Object
-
- org.locationtech.jtstest.util.io.SVGWriter
-
public class SVGWriter extends java.lang.ObjectWrites the Well-Known Text representation of aGeometry. The Well-Known Text format is defined in the OGC Simple Features Specification for SQL. SeeWKTReaderfor a formal specification of the format syntax.The
WKTWriteroutputs coordinates rounded to the precision model. Only the maximum number of decimal places necessary to represent the ordinates to the required precision will be output.The SFS WKT spec does not define a special tag for
LinearRings. Under the spec, rings are output asLINESTRINGs. In order to allow precisely specifying constructed geometries, JTS also supports a non-standardLINEARRINGtag which is used to output LinearRings.- Version:
- 1.7
- See Also:
WKTReader
-
-
Field Summary
Fields Modifier and Type Field Description private intcoordsPerLineprivate java.text.DecimalFormatformatterprivate static intINDENTprivate java.lang.StringindentTabStrprivate booleanisFormattedprivate intlevelprivate intoutputDimensionprivate booleanuseFormatting
-
Constructor Summary
Constructors Constructor Description SVGWriter()Creates a new SVGWriter with default settings
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidappendCoordinate(Coordinate coordinate, java.io.Writer writer)Converts aCoordinateto<Point>format, then appends it to the writer.private voidappendCoordinate(CoordinateSequence seq, int i, java.io.Writer writer)Appends the i'th coordinate from the sequence to the writerprivate voidappendGeometryCollectionTaggedText(GeometryCollection geometryCollection, int level, java.io.Writer writer)Converts aGeometryCollectionto <GeometryCollection Tagged Text> format, then appends it to the writer.private voidappendGeometryCollectionText(GeometryCollection geometryCollection, int level, java.io.Writer writer)Converts aGeometryCollectionto <GeometryCollectionText> format, then appends it to the writer.private voidappendGeometryTaggedText(Geometry geometry, int level, java.io.Writer writer)Converts aGeometryto <Geometry Tagged Text> format, then appends it to the writer.private voidappendLinearRingTaggedText(LinearRing linearRing, int level, java.io.Writer writer)Converts aLinearRingto <LinearRing Tagged Text> format, then appends it to the writer.private voidappendLineString(LineString lineString, int level, boolean doIndent, java.io.Writer writer)Converts aLineStringto <LineString Text> format, then appends it to the writer.private voidappendLineStringTaggedText(LineString lineString, int level, java.io.Writer writer)Converts aLineStringto <LineString Tagged Text> format, then appends it to the writer.private voidappendMultiLineStringTaggedText(MultiLineString multiLineString, int level, java.io.Writer writer)Converts aMultiLineStringto <MultiLineString Tagged Text> format, then appends it to the writer.private voidappendMultiLineStringText(MultiLineString multiLineString, int level, boolean indentFirst, java.io.Writer writer)Converts aMultiLineStringto <MultiLineString Text> format, then appends it to the writer.private voidappendMultiPointTaggedText(MultiPoint multipoint, int level, java.io.Writer writer)Converts aMultiPointto <MultiPoint Tagged Text> format, then appends it to the writer.private voidappendMultiPointText(MultiPoint multiPoint, int level, java.io.Writer writer)Converts aMultiPointto <MultiPoint Text> format, then appends it to the writer.private voidappendMultiPolygonTaggedText(MultiPolygon multiPolygon, int level, java.io.Writer writer)Converts aMultiPolygonto <MultiPolygon Tagged Text> format, then appends it to the writer.private voidappendMultiPolygonText(MultiPolygon multiPolygon, int level, java.io.Writer writer)Converts aMultiPolygonto <MultiPolygon Text> format, then appends it to the writer.private voidappendPathEnd(java.io.Writer writer)private voidappendPathStart(boolean useFillRule, java.io.Writer writer)private voidappendPoint(Coordinate coordinate, int level, java.io.Writer writer, PrecisionModel precisionModel)Converts aCoordinateto <Point Text> format, then appends it to the writer.private voidappendPointTaggedText(Coordinate coordinate, int level, java.io.Writer writer, PrecisionModel precisionModel)Converts aCoordinateto <Point Tagged Text> format, then appends it to the writer.private voidappendPolygon(Polygon polygon, int level, java.io.Writer writer)Converts aPolygonto <Polygon Tagged Text> format, then appends it to the writer.private voidappendPolygonPath(Polygon polygon, int level, boolean indentFirst, java.io.Writer writer)private voidappendPolygonPolygon(Polygon polygon, int level, boolean indentFirst, java.io.Writer writer)Converts aPolygonto <Polygon Text> format, then appends it to the writer.private voidappendSequencePath(CoordinateSequence seq, int level, boolean doIndent, java.io.Writer writer)Converts aLineStringto <LineString Text> format, then appends it to the writer.private voidappendSequencePoints(CoordinateSequence seq, int level, boolean doIndent, java.io.Writer writer)private static java.text.DecimalFormatcreateFormatter(PrecisionModel precisionModel)Creates theDecimalFormatused to writedoubles with a sufficient number of decimal places.private voidindent(int level, java.io.Writer writer)private voidindentCoords(int coordIndex, int level, java.io.Writer writer)static java.lang.StringstringOfChar(char ch, int count)Returns aStringof repeated characters.java.lang.Stringwrite(Geometry geometry)Converts aGeometryto its Well-known Text representation.voidwrite(Geometry geometry, java.io.Writer writer)Converts aGeometryto its Well-known Text representation.java.lang.StringwriteFormatted(Geometry geometry)Same aswrite, but with newlines and spaces to make the well-known text more readable.private voidwriteFormatted(Geometry geometry, boolean useFormatting, java.io.Writer writer)Converts aGeometryto its Well-known Text representation.voidwriteFormatted(Geometry geometry, java.io.Writer writer)Same aswrite, but with newlines and spaces to make the well-known text more readable.private java.lang.StringwriteNumber(double d)Converts adoubleto aString, not in scientific notation.
-
-
-
Field Detail
-
INDENT
private static final int INDENT
- See Also:
- Constant Field Values
-
outputDimension
private int outputDimension
-
formatter
private java.text.DecimalFormat formatter
-
isFormatted
private boolean isFormatted
-
useFormatting
private boolean useFormatting
-
level
private int level
-
coordsPerLine
private int coordsPerLine
-
indentTabStr
private java.lang.String indentTabStr
-
-
Method Detail
-
createFormatter
private static java.text.DecimalFormat createFormatter(PrecisionModel precisionModel)
Creates theDecimalFormatused to writedoubles with a sufficient number of decimal places.- Parameters:
precisionModel- thePrecisionModelused to determine the number of decimal places to write.- Returns:
- a
DecimalFormatthat writedoubles without scientific notation.
-
stringOfChar
public static java.lang.String stringOfChar(char ch, int count)Returns aStringof repeated characters.- Parameters:
ch- the character to repeatcount- the number of times to repeat the character- Returns:
- a
Stringof characters
-
write
public java.lang.String write(Geometry geometry)
Converts aGeometryto its Well-known Text representation.- Parameters:
geometry- aGeometryto process- Returns:
- a
string (see the OpenGIS Simple Features Specification)
-
write
public void write(Geometry geometry, java.io.Writer writer) throws java.io.IOException
Converts aGeometryto its Well-known Text representation.- Parameters:
geometry- aGeometryto process- Throws:
java.io.IOException
-
writeFormatted
public java.lang.String writeFormatted(Geometry geometry)
Same aswrite, but with newlines and spaces to make the well-known text more readable.- Parameters:
geometry- aGeometryto process- Returns:
- a
string (see the OpenGIS Simple Features Specification), with newlines and spaces
-
writeFormatted
public void writeFormatted(Geometry geometry, java.io.Writer writer) throws java.io.IOException
Same aswrite, but with newlines and spaces to make the well-known text more readable.- Parameters:
geometry- aGeometryto process- Throws:
java.io.IOException
-
writeFormatted
private void writeFormatted(Geometry geometry, boolean useFormatting, java.io.Writer writer) throws java.io.IOException
Converts aGeometryto its Well-known Text representation.- Parameters:
geometry- aGeometryto process- Throws:
java.io.IOException
-
appendGeometryTaggedText
private void appendGeometryTaggedText(Geometry geometry, int level, java.io.Writer writer) throws java.io.IOException
Converts aGeometryto <Geometry Tagged Text> format, then appends it to the writer.- Parameters:
geometry- theGeometryto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendPointTaggedText
private void appendPointTaggedText(Coordinate coordinate, int level, java.io.Writer writer, PrecisionModel precisionModel) throws java.io.IOException
Converts aCoordinateto <Point Tagged Text> format, then appends it to the writer.- Parameters:
coordinate- theCoordinateto processwriter- the output writer to append toprecisionModel- thePrecisionModelto use to convert from a precise coordinate to an external coordinate- Throws:
java.io.IOException
-
appendLineStringTaggedText
private void appendLineStringTaggedText(LineString lineString, int level, java.io.Writer writer) throws java.io.IOException
Converts aLineStringto <LineString Tagged Text> format, then appends it to the writer.- Parameters:
lineString- theLineStringto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendLinearRingTaggedText
private void appendLinearRingTaggedText(LinearRing linearRing, int level, java.io.Writer writer) throws java.io.IOException
Converts aLinearRingto <LinearRing Tagged Text> format, then appends it to the writer.- Parameters:
linearRing- theLinearRingto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendPolygon
private void appendPolygon(Polygon polygon, int level, java.io.Writer writer) throws java.io.IOException
Converts aPolygonto <Polygon Tagged Text> format, then appends it to the writer.- Parameters:
polygon- thePolygonto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendMultiPointTaggedText
private void appendMultiPointTaggedText(MultiPoint multipoint, int level, java.io.Writer writer) throws java.io.IOException
Converts aMultiPointto <MultiPoint Tagged Text> format, then appends it to the writer.- Parameters:
multipoint- theMultiPointto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendMultiLineStringTaggedText
private void appendMultiLineStringTaggedText(MultiLineString multiLineString, int level, java.io.Writer writer) throws java.io.IOException
Converts aMultiLineStringto <MultiLineString Tagged Text> format, then appends it to the writer.- Parameters:
multiLineString- theMultiLineStringto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendMultiPolygonTaggedText
private void appendMultiPolygonTaggedText(MultiPolygon multiPolygon, int level, java.io.Writer writer) throws java.io.IOException
Converts aMultiPolygonto <MultiPolygon Tagged Text> format, then appends it to the writer.- Parameters:
multiPolygon- theMultiPolygonto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendGeometryCollectionTaggedText
private void appendGeometryCollectionTaggedText(GeometryCollection geometryCollection, int level, java.io.Writer writer) throws java.io.IOException
Converts aGeometryCollectionto <GeometryCollection Tagged Text> format, then appends it to the writer.- Parameters:
geometryCollection- theGeometryCollectionto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendPoint
private void appendPoint(Coordinate coordinate, int level, java.io.Writer writer, PrecisionModel precisionModel) throws java.io.IOException
Converts aCoordinateto <Point Text> format, then appends it to the writer.- Parameters:
coordinate- theCoordinateto processwriter- the output writer to append toprecisionModel- thePrecisionModelto use to convert from a precise coordinate to an external coordinate- Throws:
java.io.IOException
-
appendCoordinate
private void appendCoordinate(CoordinateSequence seq, int i, java.io.Writer writer) throws java.io.IOException
Appends the i'th coordinate from the sequence to the writer- Parameters:
seq- theCoordinateSequenceto processi- the index of the coordinate to writewriter- the output writer to append to- Throws:
java.io.IOException
-
appendCoordinate
private void appendCoordinate(Coordinate coordinate, java.io.Writer writer) throws java.io.IOException
Converts aCoordinateto<Point>format, then appends it to the writer.- Parameters:
coordinate- theCoordinateto processwriter- the output writer to append to- Throws:
java.io.IOException
-
writeNumber
private java.lang.String writeNumber(double d)
Converts adoubleto aString, not in scientific notation.- Parameters:
d- thedoubleto convert- Returns:
- the
doubleas aString, not in scientific notation
-
appendSequencePath
private void appendSequencePath(CoordinateSequence seq, int level, boolean doIndent, java.io.Writer writer) throws java.io.IOException
Converts aLineStringto <LineString Text> format, then appends it to the writer.- Parameters:
lineString- theLineStringto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendSequencePoints
private void appendSequencePoints(CoordinateSequence seq, int level, boolean doIndent, java.io.Writer writer) throws java.io.IOException
- Throws:
java.io.IOException
-
appendLineString
private void appendLineString(LineString lineString, int level, boolean doIndent, java.io.Writer writer) throws java.io.IOException
Converts aLineStringto <LineString Text> format, then appends it to the writer.- Parameters:
lineString- theLineStringto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendPolygonPolygon
private void appendPolygonPolygon(Polygon polygon, int level, boolean indentFirst, java.io.Writer writer) throws java.io.IOException
Converts aPolygonto <Polygon Text> format, then appends it to the writer.- Parameters:
polygon- thePolygonto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendPolygonPath
private void appendPolygonPath(Polygon polygon, int level, boolean indentFirst, java.io.Writer writer) throws java.io.IOException
- Throws:
java.io.IOException
-
appendPathStart
private void appendPathStart(boolean useFillRule, java.io.Writer writer) throws java.io.IOException- Throws:
java.io.IOException
-
appendPathEnd
private void appendPathEnd(java.io.Writer writer) throws java.io.IOException- Throws:
java.io.IOException
-
appendMultiPointText
private void appendMultiPointText(MultiPoint multiPoint, int level, java.io.Writer writer) throws java.io.IOException
Converts aMultiPointto <MultiPoint Text> format, then appends it to the writer.- Parameters:
multiPoint- theMultiPointto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendMultiLineStringText
private void appendMultiLineStringText(MultiLineString multiLineString, int level, boolean indentFirst, java.io.Writer writer) throws java.io.IOException
Converts aMultiLineStringto <MultiLineString Text> format, then appends it to the writer.- Parameters:
multiLineString- theMultiLineStringto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendMultiPolygonText
private void appendMultiPolygonText(MultiPolygon multiPolygon, int level, java.io.Writer writer) throws java.io.IOException
Converts aMultiPolygonto <MultiPolygon Text> format, then appends it to the writer.- Parameters:
multiPolygon- theMultiPolygonto processwriter- the output writer to append to- Throws:
java.io.IOException
-
appendGeometryCollectionText
private void appendGeometryCollectionText(GeometryCollection geometryCollection, int level, java.io.Writer writer) throws java.io.IOException
Converts aGeometryCollectionto <GeometryCollectionText> format, then appends it to the writer.- Parameters:
geometryCollection- theGeometryCollectionto processwriter- the output writer to append to- Throws:
java.io.IOException
-
indentCoords
private void indentCoords(int coordIndex, int level, java.io.Writer writer) throws java.io.IOException- Throws:
java.io.IOException
-
indent
private void indent(int level, java.io.Writer writer) throws java.io.IOException- Throws:
java.io.IOException
-
-