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函数
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)
聚合函数。几何体的凸包表示包含聚合行中所有几何图形的最小凸面几何体。