开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段:行政区信息_Geometry 实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/691/detail/12122
行政区信息_Geometry 实现
Geometry 实现
整体数据集 json 解析出来,最终目的生成 geometry 对象
1.步骤
转换 JSON 为 Geometry 对象
2.表示行政区的 JSON 段在哪
{
"type"" : "Featurecollection"
,
"features" : [
{
"type" : "Feature" ,
"id" : 0,
"properties" : {
"boroughcode" : 5,
"borough" : "Staten Island" ,
"@id":"http:\/\/nyc.pediacities.com\/Resource\/Borough
\
/staten_Island"
},
"geometry" : {
①
"type" : "Polygon" ,
"coordinates" : [
[
[-74.050508064032471,40.566422034160816],[-74.049983525625748,40.566395924928273]]
]
}
}
①geometry 段即是 Geometry 对象的 JSON 表示
找到对象的表示,将对象的表示转为对象,geometry、type、coordinates 是对象的 JSON 的表示,转为对象形式,转换无法自己完成,coordinates 是不一定的,可能是多边形,边是数量不确定,每一个点要进行解析、连线,对象有不同的类型,根据 type 生成不同的 geometry,整体解析较为复杂,使用 ESRI 工具读取
2.通过 ESRI 解析此段
case class Feature(
id: Int,
properties: Map[string, String],
geometry: J0bject ①
) {
def getGeometry: Geometry = { ②
GeometryEngine.geoJsonToGeometry( compact(render(geometry)),0,
Geometry.Type. Unknown).getGeometry
}
}
①geometry 对象需要使用 ESRI 解析并生成,所以此处并没有使用具体的对象类型,而是使用 JObject 表示一个 JsonObject,并没有具体的解析为某个对象,节省资源
②将 JSON 转为 Geometry 对象
在解析出的 Feature 对象中,有一个 JObject 的 geometry 对象,属性可以将 geoJsonToGeometry 转为 geometry 对象类型
Feature 对应 json 中的 Feature,Feature 中有一个 geometry 属性,提供 getGeometry 方法,生成 geometry 对象,将 JObject 转为字符串形式,render 对象,compact,进行相应的导入,转成字符串
点开 geoJsonToGeometry,需要 importFlags、type,type 不需要指定,对象本身包含
最终通过 geometry 进行相应操作,getGeometry 后返回出去,功能实现