org.apache.lucene.spatial.query

## Class SpatialArgsParser

- java.lang.Object
- - org.apache.lucene.spatial.query.SpatialArgsParser

    public class SpatialArgsParser
    extends Object

Parses a string that usually looks like "OPERATION(SHAPE)" into a `SpatialArgs` object. The set of operations supported are defined in `SpatialOperation`, such as "Intersects" being a common one. The shape portion is defined by WKT `WktShapeParser`, but it can be overridden/customized via `parseShape(String, org.locationtech.spatial4j.context.SpatialContext)`. There are some optional name-value pair parameters that follow the closing parenthesis. Example:

       Intersects(ENVELOPE(-10,-8,22,20)) distErrPct=0.025

In the future it would be good to support something at least semi-standardized like a variant of [E]CQL.

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Field Summary

Fields
`static String` `DIST_ERR`
`static String` `DIST_ERR_PCT`

### Constructor Summary

Constructors
Constructor and Description
`SpatialArgsParser()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected SpatialArgs` `newSpatialArgs(SpatialOperation op, org.locationtech.spatial4j.shape.Shape shape)`
`SpatialArgs` `parse(String v, org.locationtech.spatial4j.context.SpatialContext ctx)` Parses a string such as "Intersects(ENVELOPE(-10,-8,22,20)) distErrPct=0.025".
`protected static Map<String,String>` `parseMap(String body)` Parses "a=b zScaling=d f" (whitespace separated) into name-value pairs.
`protected org.locationtech.spatial4j.shape.Shape` `parseShape(String str, org.locationtech.spatial4j.context.SpatialContext ctx)`
`protected static boolean` `readBool(String v, boolean defaultValue)`
`protected static Double` `readDouble(String v)`
`protected void` `readNameValuePairs(SpatialArgs args, Map<String,String> nameValPairs)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DIST_ERR_PCT

    public static final String DIST_ERR_PCT

See Also:
  Constant Field Values

#### DIST_ERR

    public static final String DIST_ERR

See Also:
  Constant Field Values

### Constructor Detail

#### SpatialArgsParser

    public SpatialArgsParser()

### Method Detail

#### parse

    public SpatialArgs parse(String v,
                             org.locationtech.spatial4j.context.SpatialContext ctx)
                      throws ParseException,
                             org.locationtech.spatial4j.exception.InvalidShapeException

Parses a string such as "Intersects(ENVELOPE(-10,-8,22,20)) distErrPct=0.025".

Parameters:
  `v` - The string to parse. Mandatory.
  `ctx` - The spatial context. Mandatory.
Returns:
  Not null.
Throws:
  `IllegalArgumentException` - if the parameters don't make sense or an add-on parameter is unknown
  `ParseException` - If there is a problem parsing the string
  `org.locationtech.spatial4j.exception.InvalidShapeException` - When the coordinates are invalid for the shape

#### newSpatialArgs

    protected SpatialArgs newSpatialArgs(SpatialOperation op,
                                         org.locationtech.spatial4j.shape.Shape shape)

#### readNameValuePairs

    protected void readNameValuePairs(SpatialArgs args,
                                      Map<String,String> nameValPairs)

#### parseShape

    protected org.locationtech.spatial4j.shape.Shape parseShape(String str,
                                                                org.locationtech.spatial4j.context.SpatialContext ctx)
                                                         throws ParseException

Throws:
  `ParseException`

#### readDouble

    protected static Double readDouble(String v)

#### readBool

    protected static boolean readBool(String v,
                                      boolean defaultValue)

#### parseMap

    protected static Map<String,String> parseMap(String body)

Parses "a=b zScaling=d f" (whitespace separated) into name-value pairs. If there is no '=' as in 'f' above then it's short for f=f.