SparkSession对象后,就可以通过read方法加载数据为DataFrame对象了。Ganos Spark提供了一系列UDF时空算子实现基于SQL的时空数据查询,本文主要介绍相关时空算子函数。

SpatialConstructors空间构造函数

  • ST_GeomFromGeoHash
    Geometry st_geomFromGeoHash(String geohash, Int prec)

    给定GeoHash编码,返回该编码对应的GeoHash值,GeoHash的精度为prec位。

  • ST_GeomFromWKT
    Geometry st_geomFromWKT(String wkt)

    从给定WKT格式表示的空间对象描述转化为Geometry对象。

  • ST_GeomFromWKB
    Geometry st_geomFromWKB(Array[Byte] wkb)

    从给定WKB格式表示的空间对象描述转化为Geometry对象。

  • ST_LineFromText
    LineString st_lineFromText(String wkt)

    给定左下(lowerLeft)与右上(upperRight)点对象,生成它们所表示的空间范围的Geometry对象。

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

    按照给定边界的坐标值生成所表示的空间范围的Geometry对象。

  • ST_MakePolygon
    Polygon st_makePolygon(LineString shell)

    生成线对象Shell所包围的区域的Polygon对象,Shell必须为闭合线对象。

  • ST_MakePoint
    Point st_makePoint(Double x, Double y)

    给定x,y坐标,生成POINT对象

  • ST_MakeLine
    LineString st_makeLine(Seq[Point] points)

    给定一系列POINT对象,生成它们所构成的LineString对象。

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

    给定x,y,m坐标值,生成POINT对象。

  • ST_MLineFromText
    MultiLineString st_mLineFromText(String wkt)

    生成wkt格式表示的MultiLineString对象。

  • ST_MPolyFromText
    MultiPolygon st_mPolyFromText(String wkt)

    生成wkt格式表示的MultiPolygon对象。

  • ST_Point
    Point st_point(Double x, Double y)

    等同于ST_MakePoint, 即给定x,y坐标,生成POINT对象。

  • ST_PointFromGeoHash
    Point st_pointFromGeoHash(String geohash, Int prec)

    返回由Geohash字符串geohash(base-32编码)定义的边界框的几何中心处的Point,其精度为prec位。

  • ST_PointFromText
    Point st_pointFromText(String wkt)
  • ST_PointFromWKB
    Point st_pointFromWKB(Array[Byte] wkb)

    从给定WKB格式表示的空间对象描述生成Point对象。

  • ST_Polygon
    Polygon st_polygon(LineString shell)

    从给定LineString空间对象生成Polygon对象。

  • ST_PolygonFromText
    Polygon st_polygonFromText(String wkt)

    从给定WKT格式表示的空间对象描述生成Polygon对象。

Geometry Accessors函数

  • ST_Boundary
    Geometry st_boundary(Geometry geom)

    使用 ST_Boundary 函数可确定源 ST_Geometry 的边界。

  • ST_CoordDim
    Int st_coordDim(Geometry geom)

    要评估几何的维度,请使用 ST_Dimension 函数,该函数处理 ST_Geometry 要素并以整数形式返回维度。

  • ST_Dimension
    Int st_dimension(Geometry geom)

    要评估几何的维度,请使用 ST_Dimension 函数,该函数处理 ST_Geometry 要素并以整数形式返回维度。

  • ST_Envelope
    Geometry st_envelope(Geometry geom)

    T_Envelope 函数处理 ST_Geometry 并返回表示源 ST_Geometry 包络矩形的 ST_Geometry。

  • ST_ExteriorRing
    LineString st_exteriorRing(Geometry geom)

    以 ST_LineString 形式返回 ST_Polygon 的外部环。

  • ST_GeometryN
    Int st_geometryN(Geometry geom, Int n)

    评估 ST_Polygon 和索引并以 ST_LineString 形式返回第 n 个内部环。

  • ST_IsClosed
    Boolean st_isClosed(Geometry geom)

    使用 ST_IsClosed 谓词函数可确定线串是否闭合;如果线串的起点与终点相交,则 ST_IsClosed 返回 TRUE。

  • ST_IsCollection
    Boolean st_isCollection(Geometry geom)

    判断geom对象是否为几何对象集合。

  • ST_IsEmpty
    Boolean st_isEmpty(Geometry geom)

    ST_IsEmpty 谓词函数用于确定几何是否为空。该函数分析 ST_Geometry,如果 ST_Geometry 为空,则返回 1 (TRUE);如果不为空,则返回 0 (FALSE)

  • ST_IsRing
    Boolean st_isRing(Geometry geom)

    ST_IsRing 以 ST_LineString 作为输入参数,如果是环(如 ST_LineString 是闭合的简单线串),则返回 1;否则返回 0

  • ST_IsSimple
    Boolean st_isSimple(Geometry geom)

    ST_IsSimple 谓词函数用于确定 ST_LineString、ST_MultiPoint 或 ST_MultiLineString 是简单的还是非简单的。

  • ST_IsValid
    Boolean st_isValid(Geometry geom)

    ST_IsSimple 谓词函数用于确定集合对象geom是否为有效的集合对象。

  • ST_NumGeometries
    Int st_numPoints(Geometry geom)

    您可能想要确定多部分几何中各种几何的数目,例如 ST_MultiPoint、ST_MultiLineString 和 ST_MultiPolygon 的数目。为此,请使用 ST_NumGeometries谓词函数。此函数返回几何集合中各种元素的计数。

  • ST_NumPoints
    Int st_numPoints(Geometry geom)

    评估 ST_LineString 并以整数数形式返回其序列中的点数。

  • ST_PointN
    Point st_pointN(Geometry geom, Int n)

    获取 ST_LineString 和第 n 个点的索引,然后返回该点。

  • ST_X
    Float st_X(Geometry geom)

    以双精度数形式返回点数据类型的 x 坐标值。

  • ST_Y
    Float st_y(Geometry geom)

    以双精度数形式返回点数据类型的 y 坐标值。

Geometry Cast函数

  • ST_CastToPoint
    Point st_castToPoint(Geometry g)

    将Geometry类型转换为Point类型。

  • ST_CastToPolygon
    Polygon st_castToPolygon(Geometry g)

    将Geometry类型转换为Polygon类型。

  • ST_CastToLineString
    LineString st_castToLineString(Geometry g)

    将Geometry类型转换为LineString类型。

  • ST_ByteArray
    Array[Byte] st_byteArray(String s)

    将字符串类型按照UTF-8转换为Array[Byte]类型。

Geometry Editors函数

ST_Translate
Array[Byte] st_asBinary(Geometry geom)

返回将Geometry对象按照矢量(deltaX,deltaY)位移后生成的新的Geometry对象。

Geometry Outputs函数

  • ST_AsBinary
    Array[Byte] st_asBinary(Geometry geom)

    返回Geometry的Array[Byte] 表示方式。

  • ST_AsGeoJSON
    String st_asGeoJSON(Geometry geom)

    返回Geometry的GeoJSON表示方式。

  • ST_AsLatLonText
    String st_asLatLonText(Point p)

    返回描述Point对象的纬度和经度的字符串描述,以度,分和秒为单位(这假设p的坐标单位是纬度和经度)。

  • ST_AsText
    String st_asText(Geometry geom)

    返回Geometry的字符串表示方式。

  • ST_GeoHash
    String st_geoHash(Geometry geom, Int prec)

    返回Geometry的GeoHash编码表示方式,精度位数为prec。

Spatial Relationships函数

  • ST_Contains
    Boolean st_contains(Geometry a, Geometry b)

    当且仅当a的外部没有b的位置时,返回true,并且b的内部的至少一个点位于a的内部。

  • ST_Covers
    Boolean st_covers(Geometry a, Geometry b)

    如果属于b的任意一点都位于a的内部,则返回true

  • ST_Crosses
    Boolean st_crosses(Geometry a, Geometry b)

    如果a与b有部分相同区域,但不是全部,则返回true

  • ST_Disjoint
    Boolean st_disjoint(Geometry a, Geometry b)

    等同于“NOT ST_Intersects”, 即a与b没有任何相交的部分

  • ST_Equals
    Boolean st_equals(Geometry a, Geometry b)

    如果a与b完全想同,则返回true

  • ST_Intersects
    Boolean st_intersects(Geometry a, Geometry b)

    如果a与b有部分会全部区域相同,则返回true

  • ST_Overlaps
    Boolean st_overlaps(Geometry a, Geometry b)

    如果几何具有一些但不是所有的共同点,具有相同的尺寸,并且两个几何的内部的交点与几何本身具有相同的尺寸,则返回true

  • ST_Touches
    Boolean st_touches(Geometry a, Geometry b)

    如果a与b至少有一个共同POINT对象,并且a与b内部没有任何相交部分,则返回true。

  • ST_Within
    Boolean st_within(Geometry a, Geometry b)

    如果a完全位于b内部,则返回true

  • ST_Relate
    String st_relate(Geometry a, Geometry b)

    返回描述两个几何的内部,边界和外部之间的交叉点的维度的“九交模型”交互矩阵模式。

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

    如果“九交模型”交互矩阵掩码与从st_relate(a,b)获得的交互矩阵模式匹配,则返回true。

  • ST_Area
    Double st_area(Geometry g)

    返回Geometry的面积

  • ST_Centroid
    Point st_centroid(Geometry g)

    返回Geometry的几何中心

  • ST_ClosestPoint
    Point st_closestPoint(Geometry a, Geometry b)

    返回a与b距离最近的POINT对象

  • ST_Distance
    Double st_distance(Geometry a, Geometry b)

    以坐标参考系统为单位返回两个几何之间的2D笛卡尔距离(例如,EPSG的度数:4236)。

  • ST_DistanceSphere
    Double st_distanceSphere(Geometry a, Geometry b)

    假设球形地球,近似两个经度/纬度几何之间的最小距离。

  • ST_Length
    Double st_length(Geometry geom)

    以坐标参考系统为单位返回线性几何的2D路径长度或面几何的周长(例如,EPSG的度数:4236)。对于其他几何类型(例如Point),返回0.0。

  • ST_LengthSphere
    Double st_lengthSphere(LineString line)

    使用球形地球模型近似LineString几何的2D路径长度。返回的长度以米为单位。近似值在st_lengthSpheroid的0.3%范围内,并且在计算上更有效。

Geometry Processing函数

  • ST_antimeridianSafeGeom
    Geometry st_antimeridianSafeGeom(Geometry geom)

    如果geom跨越antimeridian,则尝试将几何转换为“antimeridian-safe”的等效形式(即输出几何由BOX(-180 -90,180,90)覆盖)。在某些情况下,此方法可能会失败,在这种情况下将返回输入几何,并将记录错误。

  • ST_BufferPoint
    Geometry st_bufferPoint(Point p, Double buffer)

    返回覆盖Point p给定半径内所有点的几何,其中radius以米为单位

  • ST_ConvexHull
    Geometry st_convexHull(Geometry geom)

    聚合函数。几何体的凸包表示包含聚合行中所有几何图形的最小凸面几何体。