SpatialArgsParser (Lucene 10.5.1 spatial-extras API)
Description: declaration: package: org.apache.lucene.spatial.query, class: SpatialArgsParser

Package 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 `WKTReader`, 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
  Modifier and Type
  Field
  Description
  `static final String`
  `DIST_ERR`
  `static final String`
  `DIST_ERR_PCT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SpatialArgsParser()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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 Details

  - ### 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 Details

  - ### SpatialArgsParser

    public SpatialArgsParser()

- ## Method Details

  - ### 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.