开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段: 行政区信息_介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/691/detail/12118
行政区信息_介绍
行政区信息_介绍
项目最核心的内容是获取某个行政区的平均载客时间,需要在数据集中添加行政区的信息,有能力获取行政区信息,本部分是行政区信息的讲解,了解 GeoJSON 等工具,能够在整个数据集中通过经纬度找到行政区的名字,分布四个步骤,第一步需求介绍,第二步工具介绍,第三步解析 JSON,第四步读取 Geometry。
通过需求介绍理解需求,了解后续步骤、GeoJSON 含义,梳理思路,了解 GeoJSON
1.需求
项目的任务是统计出租车在不同行政区的平均等待时间(出租车开到北京的宣武区,等待下一个客人上车是时间是多少,时间称为待客时间或平均等待时间),所以源数据集和经过计算希望得到的新数据集大致如下
查看每一个行政区的平均的等待时间
源数据集
第一列 license 代表出租车用户、出租车司机行驶证号,第二列 pickUpTime 上车时间,第三列 dropUptime 下车时间,第四五列,pickUpX于pickUpY 是上车的经纬度,第六七列 dropUpX、dropUpY 是下车的经纬度
对需求进行处理,目标数据集是
目标数据集:
有一个行政区的名字,borough 就是一个行政区的名字,Queens 是皇后区,NA 是不存在,Brooklyn 是伯克林,avg 是等客时间的平均值,stddev 是平均等客时间的标准差,两个值的反应数据统计规律的值
对需求进行分析的最终目的是分析目标数据集的样子,有目标数据集可以反推出通过源数据集获取目标数据集的过程
通过需求大致了解目标数据集,数据处理的结果有三列,一列行政区,一列等待时间的平均值,一列等待时间的标准差
2.目标数据集分析
目标数据集中有三列,borough , avg( seconds) , stddev_samp(seconds)心
borough 表示目的地行政区的名称
avg(seconds) 和 stddev_samp(seconds) 是 seconds 的聚合,seconds 是下车时间和下一次上车时间之间的差值,代表等待时间
所以有两列数据是现在数据集中没有
borough 要根据数据集中的经纬度,求出其行政区的名字
seconds 要根据数据集中上下车时间,求出差值
要找到行政区与等客时间,等客时间可以通过会话分析找到
找到行政区的过程是曲折的,首先找到纽约总共行政区数量以及每个行政区的范围,在目标集中需要有行政区信息,从源数据集中找到经纬度判断源数据集下车的经纬度是否某个行政区的位置中,在范围中则找到行政区的名称
3.步骤
(1)求出 borough
①读取行政区位置信息
②搜索每一条数据的下车经纬度所在的行政区,找到行政区名称
③在数据集中添加行政区列
(2)通过会话分析求出 seconds
(3)根据 borough 计算平均等待时间,是一个聚合操作
如何找到行政区信息,在国际上、行业内有一个标准的地理范围表示,表示称为 GeoJSON,是一种文件格式
4.GeoJSON 是什么
(1)定义
GeoJSON 是一种基于 uson 的开源标准格式,用来表示地理位置信息。其中定了很多对象,表示不同的地址位置单位
(2)如何表示地理位置
有点 point,线段 point,多边形 Polygon
简单说,是一个 JSON 文件格式数据,数据定义地理位置信息,可以定义点、线段、多边形的地理位置信息
找到纽约所有行政区以及范围,数据集使用 GeoJSON 表示
5.数据集
行政区范围可以使用 GeoJSON 中的多边形来表示
课程中为大家提供了一份表示了纽约的各个行政区范围的数据集, 叫做,nyc-borough-boundaries-polygon.geojson
数据集是 JSON 格式,分为几段,第一段有 type,第二段有 features,
Type 表示 FeatureCollection,数据集是一组 feature,features 是一个数组,数组中每一项是一个单独的 feature,在一个 feature 中,表示一个行政区,行政区有类型是 feature,properties 是源信息,如 Id 是什么,行政区的编号是多少,行政区的名字,数据集包含行政区的名字
Geometry 是行政区的范围,type 是 Polygon,Polygon 表示多边形,要用多个线段表示,中间 coordinates 是线段的起点终点,第一条数据是一个经度纬度,代表一个点,第二段又表示一个点,两个点之间可以连成一条线,第三个、第四个都代表一个点,连接起来就是一个多边形,多边形代表一个行政区,数据集中有多个 feature,一个 feature 代表一个行政区,feature 中 properties 下有行政区的名字,Geometry 描述行政区的范围
使用步骤
(1)创建一个类型 Feature ,对应 JSON 文件中的格式
(2)通过解析 JSON ,创建 Feature 对象
(3)通过 Feature 对象创建 GeoJSON 表示一个地理位置的 Geometry 对象,Geometry 对象表示一个位置、一个范围、表示一个地理单位
(4)通过 Geometry 对象判断一个经纬度是否在其范围内
一个 Geometry 对象代表一个行政区的范围,判断经纬度是否在其范围内
6.总结
(1)思路
①从需求出发,设计结果集
②推导结第集所欠缺的字段
③补齐欠缺的字段,生成结果集,需求完成
(2)后续整体上要做的事情
需求是查看出租车在不同行政区的等待客人的时间
需要补充两个点,一是出租车下客点的行政区名称,二是等待时间。
本章节聚焦于行政区的信息补充
(3)学习步骤
①介绍 JSON 解析的工具,解析数据集
②介绍读取 GeoJSON 的工具
③JSON 解析
④读取 GeoJSON