11.6. SparkSQL Functions

The following is a list of the spatial SparkSQL user-defined functions defined by the geomesa-spark-sql module.

11.6.1. Geometry Constructors

11.6.1.1. st_box2DFromGeoHash

Geometry st_box2DFromGeoHash(String geohash, Int prec)

Alias of st_geomFromGeoHash.

11.6.1.2. st_geomFromGeoHash

Geometry st_geomFromGeoHash(String geohash, Int prec)

Returns the Geometry of the bounding box corresponding to the Geohash string geohash (base-32 encoded) with a precision of prec bits. See Geohash for more information on GeoHashes.

11.6.1.3. st_geomFromGeoJSON

Geometry st_geomFromGeoJSON(String geojsonGeometry)

Creates a Geometry from the given GeoJSON Geometry (GeoJson).

11.6.1.4. st_geomFromText

Geometry st_geomFromText(String wkt)

Alias of st_geomFromWKT.

11.6.1.5. st_geomFromWKB

Geometry st_geomFromWKB(Array[Byte] wkb)

Creates a Geometry from the given Well-Known Binary representation (WKB).

11.6.1.6. st_geomFromWKT

Geometry st_geomFromWKT(String wkt)

Creates a Geometry from the given Well-Known Text representation (WKT).

11.6.1.7. st_geometryFromText

Geometry st_geometryFromText(String wkt)

Alias of st_geomFromWKT

11.6.1.8. st_lineFromText

LineString st_lineFromText(String wkt)

Creates a LineString from the given WKT representation.

11.6.1.9. st_mLineFromText

MultiLineString st_mLineFromText(String wkt)

Creates a MultiLineString corresponding to the given WKT representation.

11.6.1.10. st_mPointFromText

MultiPoint st_mPointFromText(String wkt)

Creates a MultiPoint corresponding to the given WKT representation.

11.6.1.11. st_mPolyFromText

MultiPolygon st_mPolyFromText(String wkt)

Creates a MultiPolygon corresponding to the given WKT representation.

11.6.1.12. st_makeBBOX

Geometry st_makeBBOX(Double lowerX, Double lowerY, Double upperX, Double upperY)

Creates a Geometry representing a bounding box with the given boundaries.

11.6.1.13. st_makeBox2D

Geometry st_makeBox2D(Point lowerLeft, Point upperRight)

Creates a Geometry representing a bounding box defined by the given Points.

11.6.1.14. st_makeLine

LineString st_makeLine(Seq[Point] points)

Creates a LineString using the given sequence of vertices in points.

11.6.1.15. st_makePoint

Point st_makePoint(Double x, Double y)

Creates a Point with an x and y coordinate.

11.6.1.16. st_makePointM

Point st_makePointM(Double x, Double y, Double m)

Creates a Point with an x, y, and m coordinate.

11.6.1.17. st_makePolygon

Polygon st_makePolygon(LineString shell)

Creates a Polygon formed by the given LineString shell, which must be closed.

11.6.1.18. st_point

Point st_point(Double x, Double y)

Returns a Point with the given coordinate values. This is an OGC alias for st_makePoint.

11.6.1.19. st_pointFromGeoHash

Point st_pointFromGeoHash(String geohash, Int prec)

Return the Point at the geometric center of the bounding box defined by the Geohash string geohash (base-32 encoded) with a precision of prec bits. See Geohash for more information on Geohashes.

11.6.1.20. st_pointFromText

Point st_pointFromText(String wkt)

Creates a Point corresponding to the given WKT representation.

11.6.1.21. st_pointFromWKB

Point st_pointFromWKB(Array[Byte] wkb)

Creates a Point corresponding to the given WKB representation.

11.6.1.22. st_polygon

Polygon st_polygon(LineString shell)

Creates a Polygon formed by the given LineString shell, which must be closed.

11.6.1.23. st_polygonFromText

Polygon st_polygonFromText(String wkt)

Creates a Polygon corresponding to the given WKT representation.

11.6.2. Geometry Accessors

11.6.2.1. st_boundary

Geometry st_boundary(Geometry geom)

Returns the boundary, or an empty geometry of appropriate dimension, if geom is empty.

11.6.2.2. st_coordDim

Int st_coordDim(Geometry geom)

Returns the number of dimensions of the coordinates of Geometry geom.

11.6.2.3. st_dimension

Int st_dimension(Geometry geom)

Returns the inherent number of dimensions of this Geometry object, which must be less than or equal to the coordinate dimension.

11.6.2.4. st_envelope

Geometry st_envelope(Geometry geom)

Returns a Geometry representing the bounding box of geom.

11.6.2.5. st_exteriorRing

LineString st_exteriorRing(Geometry geom)

Returns a LineString representing the exterior ring of the geometry; returns null if the Geometry is not a Polygon.

11.6.2.6. st_geometryN

Int st_geometryN(Geometry geom, Int n)

Returns the n-th Geometry (1-based index) of geom if the Geometry is a GeometryCollection, or geom if it is not.

11.6.2.7. st_interiorRingN

Int st_interiorRingN(Geometry geom, Int n)

Returns the n-th interior LineString ring of the Polygon geom. Returns null if the geometry is not a Polygon or the given n is out of range.

11.6.2.8. st_isClosed

Boolean st_isClosed(Geometry geom)

Returns true if geom is a LineString or MultiLineString and its start and end points are coincident. Returns true for all other Geometry types.

11.6.2.9. st_isCollection

Boolean st_isCollection(Geometry geom)

Returns true if geom is a GeometryCollection.

11.6.2.10. st_isEmpty

Boolean st_isEmpty(Geometry geom)

Returns true if geom is empty.

11.6.2.11. st_isRing

Boolean st_isRing(Geometry geom)

Returns true if geom is a LineString or a MultiLineString and is both closed and simple.

11.6.2.12. st_isSimple

Boolean st_isSimple(Geometry geom)

Returns true if geom has no anomalous geometric points, such as self intersection or self tangency.

11.6.2.13. st_isValid

Boolean st_isValid(Geometry geom)

Returns true if the Geometry is topologically valid according to the OGC SFS specification.

11.6.2.14. st_numGeometries

Int st_numGeometries(Geometry geom)

If geom is a GeometryCollection, returns the number of geometries. For single geometries, returns 1,

11.6.2.15. st_numPoints

Int st_numPoints(Geometry geom)

Returns the number of vertices in Geometry geom.

11.6.2.16. st_pointN

Point st_pointN(Geometry geom, Int n)

If geom is a LineString, returns the n-th vertex of geom as a Point. Negative values are counted backwards from the end of the LineString. Returns null if geom is not a LineString.

11.6.2.17. st_x

Float st_X(Geometry geom)

If geom is a Point, return the X coordinate of that point.

11.6.2.18. st_y

Float st_y(Geometry geom)

If geom is a Point, return the Y coordinate of that point.

11.6.3. Geometry Cast

11.6.3.1. st_castToLineString

LineString st_castToLineString(Geometry g)

Casts Geometry g to a LineString.

11.6.3.2. st_castToPoint

Point st_castToPoint(Geometry g)

Casts Geometry g to a Point.

11.6.3.3. st_castToPolygon

Polygon st_castToPolygon(Geometry g)

Casts Geometry g to a Polygon.

11.6.3.4. st_castToGeometry

Geometry st_castToGeometry(Geometry g)

Casts Geometry subclass g to a Geometry. This can be necessary e.g. when storing the output of st_makePoint as a Geometry in a case class.

11.6.3.5. st_byteArray

Array[Byte] st_byteArray(String s)

Encodes string s into an array of bytes using the UTF-8 charset.

11.6.4. Geometry Editors

11.6.4.1. st_translate

Geometry st_translate(Geometry geom, Double deltaX, Double deltaY)

Returns the Geometry produced when geom is translated by deltaX and deltaY.

11.6.5. Geometry Outputs

11.6.5.1. st_asBinary

Array[Byte] st_asBinary(Geometry geom)

Returns Geometry geom in WKB representation.

11.6.5.2. st_asGeoJSON

String st_asGeoJSON(Geometry geom)

Returns Geometry geom in GeoJSON representation.

11.6.5.3. st_asLatLonText

String st_asLatLonText(Point p)

Returns a String describing the latitude and longitude of Point p in degrees, minutes, and seconds. (This presumes that the units of the coordinates of p are latitude and longitude.)

11.6.5.4. st_asText

String st_asText(Geometry geom)

Returns Geometry geom in WKT representation.

11.6.5.5. st_geoHash

String st_geoHash(Geometry geom, Int prec)

Returns the Geohash (in base-32 representation) of an interior point of Geometry geom. See Geohash for more information on Geohashes.

11.6.6. Spatial Relationships

11.6.6.1. st_area

Double st_area(Geometry g)

If Geometry g is areal, returns the area of its surface in square units of the coordinate reference system (for example, degrees^2 for EPSG:4326). Returns 0.0 for non-areal geometries (e.g. Points, non-closed LineStrings, etc.).

11.6.6.2. st_centroid

Point st_centroid(Geometry g)

Returns the geometric center of a geometry.

11.6.6.3. st_closestPoint

Point st_closestPoint(Geometry a, Geometry b)

Returns the Point on a that is closest to b. This is the first point of the shortest line.

11.6.6.4. st_contains

Boolean st_contains(Geometry a, Geometry b)

Returns true if and only if no points of b lie in the exterior of a, and at least one point of the interior of b lies in the interior of a.

11.6.6.5. st_covers

Boolean st_covers(Geometry a, Geometry b)

Returns true if no point in Geometry b is outside Geometry a.

11.6.6.6. st_crosses

Boolean st_crosses(Geometry a, Geometry b)

Returns true if the supplied geometries have some, but not all, interior points in common.

11.6.6.7. st_difference

Geometry st_difference(Geometry a, Geometry b)

Returns the difference of the input geometries.

11.6.6.8. st_disjoint

Boolean st_disjoint(Geometry a, Geometry b)

Returns true if the geometries do not “spatially intersect”; i.e., they do not share any space together. Equivalent to NOT st_intersects(a, b).

11.6.6.9. st_distance

Double st_distance(Geometry a, Geometry b)

Returns the 2D Cartesian distance between the two geometries in units of the coordinate reference system (e.g. degrees for EPSG:4236).

11.6.6.10. st_distanceSphere

Double st_distanceSphere(Geometry a, Geometry b)

Approximates the minimum distance between two longitude/latitude geometries assuming a spherical earth.

11.6.6.11. st_distanceSpheroid

Double st_distanceSpheroid(Geometry a, Geometry b)

Returns the minimum distance between two longitude/latitude geometries assuming the WGS84 spheroid.

11.6.6.12. st_equals

Boolean st_equals(Geometry a, Geometry b)

Returns true if the given Geometries represent the same logical Geometry. Directionality is ignored.

11.6.6.13. st_intersection

Geometry st_intersection(Geometry a, Geometry b)

Returns the intersection of the input geometries.

11.6.6.14. st_intersects

Boolean st_intersects(Geometry a, Geometry b)

Returns true if the geometries spatially intersect in 2D (i.e. share any portion of space). Equivalent to NOT st_disjoint(a, b).

11.6.6.15. st_length

Double st_length(Geometry geom)

Returns the 2D path length of linear geometries, or perimeter of areal geometries, in units of the the coordinate reference system (e.g. degrees for EPSG:4236). Returns 0.0 for other geometry types (e.g. Point).

11.6.6.16. st_lengthSphere

Double st_lengthSphere(LineString line)

Approximates the 2D path length of a LineString geometry using a spherical earth model. The returned length is in units of meters. The approximation is within 0.3% of st_lengthSpheroid and is computationally more efficient.

11.6.6.17. st_lengthSpheroid

Double st_lengthSpheroid(LineString line)

Calculates the 2D path length of a LineString geometry defined with longitude/latitude coordinates on the WGS84 spheroid. The returned length is in units of meters.

11.6.6.18. st_overlaps

Boolean st_overlaps(Geometry a, Geometry b)

Returns true if the geometries have some but not all points in common, are of the same dimension, and the intersection of the interiors of the two geometries has the same dimension as the geometries themselves.

11.6.6.19. st_relate

String st_relate(Geometry a, Geometry b)

Returns the DE-9IM 3x3 interaction matrix pattern describing the dimensionality of the intersections between the interior, boundary and exterior of the two geometries.

11.6.6.20. st_relateBool

Boolean st_relateBool(Geometry a, Geometry b, String mask)

Returns true if the DE-9IM interaction matrix mask mask matches the interaction matrix pattern obtained from st_relate(a, b).

11.6.6.21. st_touches

Boolean st_touches(Geometry a, Geometry b)

Returns true if the geometries have at least one point in common, but their interiors do not intersect.

11.6.6.22. st_transform

Geometry st_transform(Geometry a, String fromCRS, String toCRS)

Returns a new geometry with its coordinates transformed to a different coordinate reference system (for example from EPSG:4326 to EPSG:27700).

11.6.6.23. st_within

Boolean st_within(Geometry a, Geometry b)

Returns true if geometry a is completely inside geometry b.

11.6.7. Geometry Processing

11.6.7.1. st_antimeridianSafeGeom

Geometry st_antimeridianSafeGeom(Geometry geom)

If geom spans the antimeridian, attempt to convert the geometry into an equivalent form that is “antimeridian-safe” (i.e. the output geometry is covered by BOX(-180 -90, 180 90)). In certain circumstances, this method may fail, in which case the input geometry will be returned and an error will be logged.

11.6.7.2. st_bufferPoint

Geometry st_bufferPoint(Point p, Double buffer)

Returns a Geometry covering all points within a given radius of Point p, where radius is given in meters.

11.6.7.3. st_convexHull

Geometry st_convexHull(Geometry geom)

Aggregate function. The convex hull of a geometry represents the minimum convex geometry that encloses all geometries geom in the aggregated rows.

11.6.7.4. st_idlSafeGeom

Alias of st_antimeridianSafeGeom.