GeoSpark 整体介绍

GeoSpark

GeoSpark是基于Spark分布式的地理信息计算引擎,相比于传统的ArcGIS,GeoSpark可以提供更好性能的空间分析、查询服务。

功能:并行计算,空间查询,查询服务

GeoSpark 继承自Apache Apark,并拥有创造性的 空间弹性分布式数据集(SRDD),

GeoSpark 将JTS集成到项目中,支持拓扑运算

GeoSpark 支持PostGIS SQL语法

GeoSpark 内置了 GeoTools

String sql = "select ST_GeomFromWKB(geom) as geom, parkname, parkid  from parks";
df = spark.sql(sql);

官方参考网站:

https://datasystemslab.github.io/GeoSpark/api/sql/GeoSparkSQL-Overview/

-1. 主要功能

1.1 GeoSparkSQL

包含了最新的SQL功能

1.2 SRDDs

支持特殊的SRDDs,包括PointRDD,RectangleRDD,PolygonRDD,LineStringRDD

支持泛类型异构几何,Point,Polygon, LineString,MultiPoint,MultiPolygon,MultiLineString,GeometryCollection,LinearRing等

1.3 空间分割

空间分割技术有四叉树,KDB树,R树,沃罗诺伊图(Voronoi diagram)、均匀网络(Uniform grids)

1.4 空间索引

支持四叉树,R树,空间K近邻查询

0. 主要概念

SparkSession //初始化Spark
JavaSparkContext 
FileDataSplitter 
JavaSparkContext
JavaPairRDD
ShapefileReader		readToGeometryRDD
SpatialRDD buildIndex
JavaRDD
GeoSparkSQLRegistrator
GeoSparkVizRegistrator
Adapter		//在DataFrame和RDD之间进行转换操作

Dataset 
SpatialRDD PointRDD ,GeometryRDD // 几何弹性数据集RDD
Dataset<Row> 		  //DataFrame 数据集
	createOrReplaceTempView
	printSchema

ImageSerializableWrapper 
ImageGenerator


GeoTools 
	ShapefileDataStore 
	ShapefileDataStoreFactory 
	DataStoreFinder
	

俩种数据集:几何弹性数据集RDD及DataFrame数据集

DataFrame 数据集可以通过SQL语句来操作

0.1 SpatialRDD

rawSpatialRDD 有 setRawSpatialRDD 构建

indexedRawRDD  由 buildIndex 构建
    包含分区判断,spatialPartitionedRDD 和 rawSpatialRDD 完成

0.2 分区

rawSpatialRDD和spatialPartitionedRDD的区别就是spatialPartitionedRDD保存的是rawSpatialRDD分区后的RDD

SpatialPartitioner //集成自Spark中的Partitioner方法

Geospark就开始调用private JavaRDD partition(final SpatialPartitioner partitioner)方法来进行分区

SpatialPartitioner 需要实现俩个函数,第一个函数是告诉Spark要分成多少区,第二个函数是将对象与分区ID对应起来。

GeoSpark 实现了三种分区策略,分别为

0.3 并行计算

1. 空间索引

1.1 索引查询

RangeQuery SpatialRangeQuery

1.2 KNN临近查询

KNNQuery SpatialKnnQuery

1.3 空间关联查询

JoinQuery SpatialJoinQuery

2. 坐标系转换

PointRDD  CRSTransform //支持EPGS标准坐标系

3. 支持数据类型

文件数据:ShapeFile , CSV,GeoJson , WKT , NetCDF/HDF

数据库:MySql,PostGreSQL,PostGIS

4. 内部数据类型

Geometry,GeometryFactory , Coordinate, PointRDD , Polygon , Point ,

5. GeoSpark SQL

https://datasystemslab.github.io/GeoSpark/api/sql/GeoSparkSQL-Overview/

ST_GeomFromWKT

ST_Transform

ST_Contains

ST_PolygonFromEnvelope

ST_PointFromText

6. GeoSpark计算框架及逻辑

6.1 GeoSpark如何利用分布式实现高效查询

要想利用Spark,需要将自己的类型转换为RDD, SpatialRDD 是泛型,泛型要求类型是Geometry的子类

GeoSpark提供有PointRDD,PolygonRDD

7. 几何操作

数据集边界,最小边界矩形,多边形联合

8. 空间操作

空间范围查询,距离加入查询,空间加入查询(内部和重叠)以及空间K最近相邻元素查询

9. GeoSpark 方案

http://www.sohu.com/a/282853074_326074

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1iVWGST-1577671565141)(C:\Users\ADMINI~1\AppData\Local\Temp\1572248661374.png)]

参考

BigGiser https://www.jianshu.com/u/922878a44beb

jyj019 https://blog.csdn.net/jyj1100/article/category/7913410

发布了220 篇原创文章 · 获赞 16 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zhanggqianglovec/article/details/103761728