Geomesa Pyspark分析异常:未定义的函数:st_转换

szqfcxe2  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(243)

我正在尝试获取一组多边形的面积。我可以使用st_areast_geomFromText,但在尝试使用st_transform时,我得到了undefined function错误。我需要从4326转换到3857(或任何可以给予我英亩的东西)。

geomesa版本:我有2.4.2,但现在我有3.4。
错误

AnalysisException: Undefined function: st_transform. This function is neither a built-in/temporary function, nor a persistent function that is qualified as spark_catalog.default.st_transform.; line 4 pos 2

代码

%scala
import spark.implicits._
import org.apache.spark.sql.functions._
import org.locationtech.geomesa.spark.jts._
spark.withJTS
import org.locationtech.geomesa.spark.geotools._

%sql
select 
a.user_id
, Sum(st_area(st_geomFromText(a.polygon))) --this works
, Sum(st_transform(st_geomFromText(a.polygon), 'EPSG:4326','EPSG:3857')) --this does not work
from core_table a
group by a.user_id

我尝试过改变fromCRStoCRS字符串。我尝试过使用小写、不同的数字、带/不带引号和字母等。我尝试过将st_transform()封装在SUM()中,但没有任何效果。
我也尝试过类似于this的方法。

gcuhipw9

gcuhipw91#

几何函数在不同的包中,因为它们需要GeoTools而不仅仅是JTS。我相信您需要调用org.apache.spark.sql.SQLTypes#init或等效的org.locationtech.geomesa.spark.GeometricDistanceFunctions#registerFunctions才能使它们可用。

相关问题