基于Spark的大数据空间分析与运算方法研究

利用大数据计算做空间分析与运算,提供缓冲区分析、叠加分析、裁剪、合并等空间分析与运算接口和调用示例。

1、缓冲区建立

任务要求:利用大数据计算,对大数据库中存储的点、线、面等空间数据,自动建立其周围一定宽度范围内的缓冲区多边形图层

解决方案:

  • 以符合GeoJson数据格式的空间空间要素字符串为输入对象
  • 将GeoJson字符串进行切分,并判断每一个GeoJson字符串属于什么图形要素类型(点/线/面),根据图形要素类型建立Geometry类型要素(Point、MultiPoint、Polyline、Polygon),将产生的所有Geometry类型要素放在一个list集合,将List及缓冲区半径传入缓冲区建立函数CreateBuffer
  • 在CreateBuffer函数中,由List形成RDD,RDD内元素为Geometry类型要素
  • 使用map算子对上一步RDD每一个Geometry类型要素进行缓冲区建立,map算子中使用逻辑函数CreatBuffer
  • 在map算子中对每一个Geometry类型要素传入变量都返回一个GeoJson要素字符串
  • 将RDD使用动作算子collect形成List返回

基于Spark的大数据空间分析与运算方法研究_第1张图片

2、缓冲区分析

任务要求:利用大数据计算,对大数据库中存储的点、线、面等空间数据,自动建立其周围一定宽度范围内的缓冲区多边形图层,然后建立该图层与目标图层的叠加,进行分析而得到所需结果。

解决方案:

  • 以符合GeoJson数据格式的空间空间要素字符串为输入对象
  • 将GeoJson字符串进行切分,并判断每一个GeoJson字符串属于什么图形要素类型(点/线/面),根据图形要素类型建立Geometry类型要素(Point、MultiPoint、Polyline、Polygon),将产生的所有Geometry类型要素放在一个list集合,将List相交叠加函数OverLay
  • 在OverLay函数中,由List形成RDD,RDD内元素为Geometry类型要素
  • 使用reduce算子对上一步RDD每两个Geometry类型要素进行相交叠加,reduce算子中使用逻辑函数OperatorIntersection.local().execute,最终产生的reduce为一个GeoJson要素字符串
  • 将GeoJson要素字符串返回

3、叠加分析

任务要求:利用大数据计算,对大数据库存储的点、线、面等空间数据,实现索引过滤与相交计算,生成叠加分析结果。

解决方案:

  • 以符合GeoJson数据格式的空间空间要素字符串为输入对象
  • 将GeoJson字符串进行切分,并判断每一个GeoJson字符串属于什么图形要素类型(点/线/面),根据图形要素类型建立Geometry类型要素(Point、MultiPoint、Polyline、Polygon),将产生的所有Geometry类型要素放在一个list集合,将List相交叠加函数OverLay
  • 在OverLay函数中,由List形成RDD,RDD内元素为Geometry类型要素
  • 使用reduce算子对上一步RDD每两个Geometry类型要素进行相交叠加,reduce算子中使用逻辑函数OperatorIntersection.local().execute,最终产生的reduce为一个GeoJson要素字符串
  • 将GeoJson要素字符串返回

4、 裁剪

任务要求:利用大数据计算,以裁剪要素类中的一个或多个要素作为模具,提取与裁剪要素相重叠的要素,形成裁剪要素结果。

解决方案:

  • 以符合GeoJson数据格式的空间要素字符串为模具对象输入,以符合GeoJson数据格式的空间要素字符串为待裁剪对象输入
  • 将模具对象GeoJson字符串进行切分,并判断每一个GeoJson字符串属于什么图形要素类型(点/线/面),根据图形要素类型建立Geometry类型要素(Point、MultiPoint、Polyline、Polygon),将产生的所有Geometry类型要素放在一个List集合,同样的方法处理待裁剪对象,将List模具及待裁剪对象传入裁剪函数GetClip
  • 由list形成RDD,RDD内元素为Geometry类型要素
  • 使用flatMap算子进行压平操作。对上一步RDD每一个Geometry类型模具(转为PloyLine)对待裁剪对象进行裁剪,flatMap算子中使用裁剪函数OperatorCut.local().execute,RDD每个模板元素对待裁剪元素裁剪时都会产生若干Geometry类型要素,这里使用Iterator返回
  • 将上一步产生的RDD使用map算子使得RDD元素类型由Geometry类型要素转为GeoJson要素字符串
  • 将RDD使用动作算子collect形成List返回

5、合并

任务要求:利用大数据计算,将数据类型相同的多个输入数据集合并为新的单个输出数据集。

解决方案:

  • 以符合GeoJson数据格式的空间空间要素字符串为输入对象
  • 将GeoJson字符串进行切分,并判断每一个GeoJson字符串属于什么图形要素类型(点/线/面),根据图形要素类型建立Geometry类型要素(Point、MultiPoint、Polyline、Polygon),将产生的所有Geometry类型要素放在一个List集合,将List合并函数Union
  • 在Union函数中,由List形成RDD,RDD内元素为Geometry类型要素
  • 使用reduce算子对上一步RDD每两个Geometry类型要素进行合并,reduce算子中使用逻辑函数OperatorUnion.local().execute,最终产生的reduce为一个GeoJson要素字符串
  • 将GeoJson要素字符串返回

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(大数据)