首页 / 浏览问题 / 组件GIS / 问题详情
SparkSQLUtils.toFeatureRDD丢失坐标系信息
2EXP 2020年12月17日
//获取FeatureRDD
FeatureRDD featureRDD = FeatureRDDProviderFactory.apply(params).rdd(new Configuration(), sc, params, new Query(datasetName));
//featureRDD.schema().getCoordinateReferenceSystem(); 可以获取到坐标系信息
//将FeatureRDD先转为DataFame
df = SparkSQLUtils.toDF(spark,featureRDD);

//DataFrame传输到下一个处理算法中时,从此DataFrame获取FeatureRDD丢失坐标系信息
//scala 
val pointRDD = SparkSQLUtils.toFeatureRDD(df, null, null, null)
val prj = pointRDD.schema.getCoordinateReferenceSystem //此处获取的值为null

1个回答

目前版本的dataframe没有存坐标系信息。建议先这样用

val newwR=FeatureRDD.apply(pointRDD ,featureRDD .schema,true)

即可保留坐标系信息

1,520EXP 2020年12月18日
这个方法会导致newwR数据(设置坐标系后的数据)的字段与featureRDD 的完全一样

那如果对df数据进行了数据操作,比如字段的增删改的操作,使用这个方法会丢失这些操作

这种情况该怎样处理
不一定用featureRDD的schema,你得根据原始的rdd schema来传参数,如果删除了字段,那么得重新构造新schema。
...