系列目录

带你入门GeoSpark系列之一【环境篇】
带你入门GeoSpark系列之二【Spatial RDD篇】
带你入门GeoSpark系列之三【空间查询篇】

1.空间范围查询( Spatial Range Query)

空间范围查询,顾名思义我们可以给定一个范围(query window),然后查询出包含在当前范围内的地理对象。

1.1 数据准备

创建checkin1.csvdata/checkin1.csv路径下:
注意这里故意把bar坐标修改了一下

-88.331492,32.324142,hotel
-88.175933,32.360763,gas
-99.388954,32.357073,bar
-88.221102,32.35078,restaurant

1.2 代码示例

considerBoundaryIntersection参数可以配置查询是否包括query window边界上的地理对象。

package com.suddev.bigdata.queryimport com.vividsolutions.jts.geom.Envelope
import org.apache.spark.serializer.KryoSerializer
import org.apache.spark.{SparkConf, SparkContext}
import org.datasyslab.geospark.enums.FileDataSplitter
import org.datasyslab.geospark.serde.GeoSparkKryoRegistrator
import org.datasyslab.geospark.spatialOperator.RangeQuery
import org.datasyslab.geospark.spatialRDD.PointRDD/*** Spatial Range Query* @author Rand* @date 2020/4/16 0016*/
object SpatialRangeQueryApp {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("SpatialRangeQueryApp").setMaster("local[*]").set("spark.serializer",classOf[KryoSerializer].getName).set("spark.kryo.registrator", classOf[GeoSparkKryoRegistrator].getName)implicit val sc = new SparkContext(conf)val objectRDD = createPointRDDobjectRDD.rawSpatialRDD.rdd.collect().foreach(println)// 定义QueryWindowval rangeQueryWindow = new Envelope(-90.01, -80.01, 30.01, 40.01)// 是否考虑边界val considerBoundaryIntersection = falseval usingIndex = falseval queryResult = RangeQuery.SpatialRangeQuery(objectRDD, rangeQueryWindow, considerBoundaryIntersection, usingIndex)queryResult.rdd.collect().foreach(println)}def createPointRDD(implicit sc:SparkContext): PointRDD ={val pointRDDInputLocation = "data/checkin1.csv"// 这个变量控制我们的地理经度和纬度在数据的哪两列,我们这里是第0,1列,Offset就设置为0val pointRDDOffset = 0val pointRDDSplitter = FileDataSplitter.CSV// 这个参数允许我们除了经纬度外还可以携带其他自定义数据val carryOtherAttributes = trueval objectRDD = new PointRDD(sc, pointRDDInputLocation,pointRDDOffset, pointRDDSplitter, carryOtherAttributes)objectRDD}
}

带你入门GeoSpark系列之三【空间查询篇】相关推荐

  1. 15分钟带你入门sklearn与机器学习——分类算法篇

    作者 | 何从庆 本文转载自AI算法之心(ID:AIHeartForYou) [导读]众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机 ...

  2. 1.偏头痛杨的Java入门教学系列之认识Java篇

    转载自:偏头痛杨的Java入门教学系列 地址:https://blog.csdn.net/piantoutongyang/article/details/70138697 前戏 今天我们主要来介绍一下 ...

  3. openlayers4 入门开发系列之地图工具栏篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  4. openlayers4 入门开发系列之船讯篇

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  5. SuperMap iObject入门开发系列之三管线系统标注

    本文是一位好友"托马斯"授权给我来发表的,介绍都是他的研究成果,在此,非常感谢. 管线系统会涉及到一些坐标标注,属性标注,提供给用户查询获取其需要的信息,这期的文章介绍的是基于超图 ...

  6. hadoop入门学习系列之三mysq+php+mysqladmin安装

    由于hive需要由mysql来储存元数据,所以先安装一下mysql 一.安装mysql yum install mysql yum intall mysql-server yum install my ...

  7. C++入门课程系列:基础知识篇(1)

    C++是一种静态数据类型语言. • 在C++语言中,变量是计算机编程的一个重要概念,它是一个存储值的字母或名称 • 有几种基本类型的变量: string ("一组词"). char ...

  8. openlayers入门开发系列之地图工具栏篇

    本篇的重点内容是利用openlayers实现地图工具栏功能,包括地图缩放.移动.地图量算.地图打印.清空.全屏.鹰眼.比例尺.地图坐标显示等,效果图如下: 部分核心代码如下: 地图缩放 地图移动 地图 ...

  9. openlayers入门开发系列之地图属性查询篇

    本篇的重点内容是利用openlayers实现地图属性查询功能,效果图如下: 实现思路: 模糊查询点击事件 //模糊查询 $("#swatchQuery").bind("c ...

最新文章

  1. python处理大量excel数据-python往excel写入大量数据
  2. 函数中{}输出格式详解(C#)
  3. 《训练指南》——6.9
  4. python下载后是黑的_python下载文件记录黑名单的实现代码
  5. 如何使用autotools工具
  6. linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码
  7. react todolist代码优化
  8. 超级计算机手机芯片,美国开建arm超级计算机,单节点性能是手机芯片100倍
  9. 【PTA】7-1 jmu-Java-01入门-取数字浮点数(5分)
  10. 数学建模——粒子群优化算法(PSO)【有详细样例 + 工具:matlab】(万字总结)
  11. HttpUtils发送delete方法
  12. Google浏览器安装插件
  13. 一款快速搭建局域网http服务器的神器
  14. 文件后缀对应文件类型表
  15. 从pdf简历中提取信息——BiLSTM-CRF
  16. TI电量计--基本介绍及常见问题解答
  17. matlab中在xls单元格中填充颜色,!Excel中如何根据某一列的值对整行进行颜色填充?...
  18. ps修改证件照的底色
  19. element -ui如何去掉原来的蓝色下划线
  20. 一个老兵的linux学习和面试经验分享 【转载】

热门文章

  1. 锁店,这个管理模式你一定要了解,重庆阿尔克基地分享。
  2. TED Talk | On Reading Minds
  3. 2017秋 《高级软件工程》学习总结
  4. La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2016 A~F
  5. 海思3559单独编译ive模块
  6. Python闭包的两个案例
  7. 「翻译」BERT 多语言模型
  8. 覆盖与重载(一):泛型能决定方法宗量吗?
  9. edp和lvds区别
  10. 财务数据mysql库设计_数据库设计规范 - MySQL