Geospark将从shapefile、csv等格式文件以及DataFrame中的读取的字段保存到了Geometry的userData字段中,可以通过调用.getUserData()方法获取,他会返回一个String对象,各个字段以\t连接。

Geometry属于JTS开源库的一部分,Geospark将JTS集成在了项目中,并且对其做了改动,所以我们在pom.xml中无需在配置。JTS中核心类是Geometry,代表了一个几何图形,存储了这个几何图形的坐标信息,并且支持拓扑运算。

以CSV为例,他每条属性有两个字段,如何读取。

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

读取checkin.csv,并且将其转为Geometry

// 初始化Spark
SparkSession spark = SparkSession.builder().
config("spark.serializer","org.apache.spark.serializer.KryoSerializer").
config("spark.kryo.registrator", "org.datasyslab.geospark.serde.GeoSparkKryoRegistrator").
master("local[*]").appName("Learn08").getOrCreate(); // 加载CSV文件
JavaSparkContext sc = new JavaSparkContext(spark.sparkContext());
String pointRDDInputLocation = Learn08.class.getResource("/checkin.csv").toString();
Integer pointRDDOffset = 0; // 地理位置(经纬度)从第0列开始
FileDataSplitter pointRDDSplitter = FileDataSplitter.CSV;
Boolean carryOtherAttributes = true; // 第二列的属性(酒店名),这里我们要加载的字段 PointRDD rdd = new PointRDD(sc, pointRDDInputLocation, pointRDDOffset, pointRDDSplitter, carryOtherAttributes);
rdd.rawSpatialRDD.foreach((point -> {
String[] attrs = point.getUserData().toString().split("\t");
System.out.println(StringUtils.join(attrs, "|"));
}));

ointRDD rdd = new PointRDD(sc, pointRDDInputLocation, pointRDDOffset, pointRDDSplitter, carryOtherAttributes);,我们将carryOtherAttributes设置为true,并且调用.split("\t")将字段分隔,并用|重新拼接:

hotel|NewYork
gas|NewYork
restaurant|NewYork
bar|NewYork

对于shp文件也是如此,geospark会将shp文件中的每一个图斑的所有字段全部放在userData中,并用\t连接。

最新文章

  1. Tomcat Start 报错 (COULD NOT DELETE MAY BE LOCKED BY ANOTHER PROCESS)
  2. 用c#开发微信 系列汇总
  3. Linux (Ubuntu) 下配置VPN服务器
  4. c++之路起航——指针
  5. 我的第一款windows phone软件
  6. 各I/O模型 对应Web服务应用模型(select,poll,epoll,kevent,"/dev/poll")
  7. 排序算法之快速排序 JAVA快速排序算法
  8. 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
  9. 2014年辛星全然解读html第八节
  10. C# WebBrowser函数互相调用
  11. 【less和sass的区别,你了解多少?】
  12. Storm源码阅读之SpoutOutputCollector
  13. python collection模块
  14. SpaceVim中vimproc的vimproc_linux64.so未找到
  15. ubuntu 14.04 安装 OpenCV -2.4.13
  16. Linux下GoAccess的安装与全部用法
  17. 测试、集成等领域最好的Java工具
  18. CentOS7无法使用tab补全功能??
  19. mxonline实战13,授课讲师列表页,详情页,index页面全局导航
  20. oradebug工具使用(转载)

热门文章

  1. Mysql 实战关于date,datetime,timestamp类型使用
  2. Turtlebot3新手教程:Open-Manipulator机械臂
  3. 一张图看懂sql的各种join
  4. Mysql中的语句优化
  5. PHP 获取重复数组中 第二多的元素
  6. 【SpringMVC】SpringMVC 响应数据
  7. Centos 6.5 Rabbitmq 安装和集群,镜像部署
  8. druid discard long time none received connection问题解析
  9. [Usaco2007 Feb]Cow Party
  10. 干电池升压IC