Package org.apache.lucene.geo
Class SimpleWKTShapeParser
- java.lang.Object
-
- org.apache.lucene.geo.SimpleWKTShapeParser
-
public class SimpleWKTShapeParser extends java.lang.Object
Parses shape geometry represented in WKT format complies with OGC® document: 12-063r5 and ISO/IEC 13249-3:2016 standard located at http://docs.opengeospatial.org/is/12-063r5/12-063r5.html
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SimpleWKTShapeParser.ShapeType
Enumerated type for Shapes
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
COMMA
static java.lang.String
EMPTY
private static java.lang.String
EOF
private static java.lang.String
EOL
static java.lang.String
LPAREN
static java.lang.String
NAN
private static java.lang.String
NUMBER
static java.lang.String
RPAREN
static java.lang.String
SPACE
-
Constructor Summary
Constructors Modifier Constructor Description private
SimpleWKTShapeParser()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static void
checkEOF(java.io.StreamTokenizer stream)
next word in the streamprivate static boolean
isNumberNext(java.io.StreamTokenizer stream)
checks if the next token is a numberprivate static java.lang.String
nextCloser(java.io.StreamTokenizer stream)
checks if next token is a closing parenprivate static java.lang.String
nextCloserOrComma(java.io.StreamTokenizer stream)
expects either a closing LPAREN or comma as the next tokenprivate static java.lang.String
nextComma(java.io.StreamTokenizer stream)
expects a comma as next tokenprivate static java.lang.String
nextEmptyOrOpen(java.io.StreamTokenizer stream)
checks if next token is an EMPTY or open parenprivate static double
nextNumber(java.io.StreamTokenizer stream)
next number in the streamprivate static java.lang.String
nextOpener(java.io.StreamTokenizer stream)
expects an open RPAREN as the next tokeprivate static java.lang.String
nextWord(java.io.StreamTokenizer stream)
next word in the streamstatic java.lang.Object
parse(java.lang.String wkt)
private static Rectangle
parseBBox(java.io.StreamTokenizer stream)
parses an ENVELOPEprivate static void
parseCoordinate(java.io.StreamTokenizer stream, java.util.ArrayList lats, java.util.ArrayList lons)
parses a single coordinate, w/ optional 3rd dimensionprivate static void
parseCoordinates(java.io.StreamTokenizer stream, java.util.ArrayList lats, java.util.ArrayList lons)
Parses a list of points into latitude and longitude arraylistsstatic java.lang.Object
parseExpectedType(java.lang.String wkt, SimpleWKTShapeParser.ShapeType shapeType)
private static java.lang.Object
parseGeometry(java.io.StreamTokenizer stream, SimpleWKTShapeParser.ShapeType shapeType)
parse geometry from the stream tokenizerprivate static java.lang.Object[]
parseGeometryCollection(java.io.StreamTokenizer stream)
parses a GEOMETRYCOLLECTIONprivate static Line
parseLine(java.io.StreamTokenizer stream)
parses a LINESTRINGprivate static Line[]
parseMultiLine(java.io.StreamTokenizer stream)
parses a MULTILINESTRINGprivate static double[][]
parseMultiPoint(java.io.StreamTokenizer stream)
parses a MULTIPOINT typeprivate static Polygon[]
parseMultiPolygon(java.io.StreamTokenizer stream)
parses a MULTIPOLYGONprivate static double[]
parsePoint(java.io.StreamTokenizer stream)
Parses a point as a double arrayprivate static Polygon
parsePolygon(java.io.StreamTokenizer stream)
parses a POLYGONprivate static Polygon
parsePolygonHole(java.io.StreamTokenizer stream)
parses the hole of a polygonprivate static java.lang.String
tokenString(java.io.StreamTokenizer stream)
next token in the stream
-
-
-
Field Detail
-
EMPTY
public static final java.lang.String EMPTY
- See Also:
- Constant Field Values
-
SPACE
public static final java.lang.String SPACE
- See Also:
- Constant Field Values
-
LPAREN
public static final java.lang.String LPAREN
- See Also:
- Constant Field Values
-
RPAREN
public static final java.lang.String RPAREN
- See Also:
- Constant Field Values
-
COMMA
public static final java.lang.String COMMA
- See Also:
- Constant Field Values
-
NAN
public static final java.lang.String NAN
- See Also:
- Constant Field Values
-
NUMBER
private static final java.lang.String NUMBER
- See Also:
- Constant Field Values
-
EOF
private static final java.lang.String EOF
- See Also:
- Constant Field Values
-
EOL
private static final java.lang.String EOL
- See Also:
- Constant Field Values
-
-
Method Detail
-
parse
public static java.lang.Object parse(java.lang.String wkt) throws java.io.IOException, java.text.ParseException
- Throws:
java.io.IOException
java.text.ParseException
-
parseExpectedType
public static java.lang.Object parseExpectedType(java.lang.String wkt, SimpleWKTShapeParser.ShapeType shapeType) throws java.io.IOException, java.text.ParseException
- Throws:
java.io.IOException
java.text.ParseException
-
parseGeometry
private static java.lang.Object parseGeometry(java.io.StreamTokenizer stream, SimpleWKTShapeParser.ShapeType shapeType) throws java.io.IOException, java.text.ParseException
parse geometry from the stream tokenizer- Throws:
java.io.IOException
java.text.ParseException
-
parsePoint
private static double[] parsePoint(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
Parses a point as a double array- Throws:
java.io.IOException
java.text.ParseException
-
parseCoordinates
private static void parseCoordinates(java.io.StreamTokenizer stream, java.util.ArrayList lats, java.util.ArrayList lons) throws java.io.IOException, java.text.ParseException
Parses a list of points into latitude and longitude arraylists- Throws:
java.io.IOException
java.text.ParseException
-
parseCoordinate
private static void parseCoordinate(java.io.StreamTokenizer stream, java.util.ArrayList lats, java.util.ArrayList lons) throws java.io.IOException, java.text.ParseException
parses a single coordinate, w/ optional 3rd dimension- Throws:
java.io.IOException
java.text.ParseException
-
parseMultiPoint
private static double[][] parseMultiPoint(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses a MULTIPOINT type- Throws:
java.io.IOException
java.text.ParseException
-
parseLine
private static Line parseLine(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses a LINESTRING- Throws:
java.io.IOException
java.text.ParseException
-
parseMultiLine
private static Line[] parseMultiLine(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses a MULTILINESTRING- Throws:
java.io.IOException
java.text.ParseException
-
parsePolygonHole
private static Polygon parsePolygonHole(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses the hole of a polygon- Throws:
java.io.IOException
java.text.ParseException
-
parsePolygon
private static Polygon parsePolygon(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses a POLYGON- Throws:
java.io.IOException
java.text.ParseException
-
parseMultiPolygon
private static Polygon[] parseMultiPolygon(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses a MULTIPOLYGON- Throws:
java.io.IOException
java.text.ParseException
-
parseBBox
private static Rectangle parseBBox(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses an ENVELOPE- Throws:
java.io.IOException
java.text.ParseException
-
parseGeometryCollection
private static java.lang.Object[] parseGeometryCollection(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
parses a GEOMETRYCOLLECTION- Throws:
java.io.IOException
java.text.ParseException
-
nextWord
private static java.lang.String nextWord(java.io.StreamTokenizer stream) throws java.text.ParseException, java.io.IOException
next word in the stream- Throws:
java.text.ParseException
java.io.IOException
-
nextNumber
private static double nextNumber(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
next number in the stream- Throws:
java.io.IOException
java.text.ParseException
-
tokenString
private static java.lang.String tokenString(java.io.StreamTokenizer stream)
next token in the stream
-
isNumberNext
private static boolean isNumberNext(java.io.StreamTokenizer stream) throws java.io.IOException
checks if the next token is a number- Throws:
java.io.IOException
-
nextEmptyOrOpen
private static java.lang.String nextEmptyOrOpen(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
checks if next token is an EMPTY or open paren- Throws:
java.io.IOException
java.text.ParseException
-
nextCloser
private static java.lang.String nextCloser(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
checks if next token is a closing paren- Throws:
java.io.IOException
java.text.ParseException
-
nextComma
private static java.lang.String nextComma(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
expects a comma as next token- Throws:
java.io.IOException
java.text.ParseException
-
nextOpener
private static java.lang.String nextOpener(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
expects an open RPAREN as the next toke- Throws:
java.io.IOException
java.text.ParseException
-
nextCloserOrComma
private static java.lang.String nextCloserOrComma(java.io.StreamTokenizer stream) throws java.io.IOException, java.text.ParseException
expects either a closing LPAREN or comma as the next token- Throws:
java.io.IOException
java.text.ParseException
-
checkEOF
private static void checkEOF(java.io.StreamTokenizer stream) throws java.text.ParseException, java.io.IOException
next word in the stream- Throws:
java.text.ParseException
java.io.IOException
-
-