行政区信息_GeoJSON 介绍|学习笔记

简介: 快速学习行政区信息_GeoJSON 介绍

开发者学堂课程【大数据 Spark2020版(知识精讲与实战演练)第四阶段行政区信息_GeoJSON 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/691/detail/12120


行政区信息_GeoJSON 介绍

 

GeoJSON 介绍

如何解析 Geometry 对象

1.GeoJSON 读取工具的介绍

打开数据集查看其中格式

image.png

进行解析后发现 features 数组,每一个元素代表一个行政区元素有一个类型 feature,有 properties 一些复杂信息,boroughCode 编号,borough 行政区,Staten Island纽约的行政区,有 IP,geometry JSON 对象,JSON 对象指定polygon,polygon 代表区域,coordinates 区域每条边的起始,通过 geometry 对象找到行政区所在的范围,范围最终要进行计算,GeoJSON 解析工具解析内容,生成对应的对象,提供对应的计算功能。

(1)介绍

读取 GeoJSON 的工具有很多,但是大部分都过于复杂,有一些只能 Java 中用

有一个较为简单,也没有使用底层∈语言开发的解析 GeoJSON 的类库叫做 ESRI Geometry , Scala 中也可以支持

(2)使用

ESRI Geometry 的使用比较的简单,大致就如下这样调用即可

val mg = GeometryEngine.geometryFromGeoJson( jsonStr,0,Geometry.Type.Unknown)

val geometry = mg.getGeometry

GeometryEngine.contains(geometry, other, csr)

读取 JSON 生成 Geometry 对象

重点:一个 Geometry 对象就表示一个 GeoJSON 支持的对象,可能是一个点,也可能是一个多边形

判断一个 Geometry 中是否包含另外一个 Geometry

有一个 GeometryEngine 对象,通过 geometryFromGeoJson 方法,传入 jsonStr,传入后得到 mg 对象,通过 getGeometry 获取 Geometry 对象,通过 GeometryEngine 判断一个 point 点是否在 geometry 所代表的行政区范围内

找到数据集,复制数据集进入 idea 中,导入

ESRI 是很出名的 GeoJSON 的解析工具,满足 scala 中进行 GeoJSON 解析的需求,提供计算功能,通过 ESRI 将 jsonStr 转为 geometry 对象,geometry 对象代表 geometry 这一类型对象,可以是点、边或多边形,表示多边形就是一个范围,可以判断一个点是否在其范围内,进而判断下车点是否在行政区范围内,使用较为简单 JSON 字符串即 geometry 一段。

image.png 

2.总结

(1)JSON 解析

FastJSON 和 Gson 直接在 Scala 中使用会出现问题,因为 Scala 的对象体系和 Java  略有不同

最为适合 Scala 的方式是使用 JSON4S 作为上层 API ,Jackson 作为底层提供 JSON 解析能力,共同实现 JSON 解析

其使用方式非常简单,两行即可解析

implicit val formats = Serialization.formats(NoTypeHints)

val obj = read[Person] (product)

(2)GeoJSON 的解析

有一个很适合 Scala 的 GeoJSON 解析工具,叫做 ESRI Geometry ,其可以将 GeoJSON 字符串转为 Geometry 对象,易于使用

GeometryEngine.geometryFromGeoJson(jsonStr,0,Geometry.Type.unknown)

(3)后续工作

读取行政区的数据集,解析 JSON 格式,将 JSON 格式的字符串转为对象.

使用 ESRI 的 GeometryEngine 读取行政区的 Geometry 对象的 JSON 字符串,生成Geometry 对象

使用上车点和下车点的坐标创建 Point 对象(Geometry 的子类)

判断 Point 是否在行政区的 Geometry 的范围内(行政区的 Geometry 其实本质上是子类 Polygon 的对象)

相关文章
geojson格式筛选及处理的解决方案
geojson格式筛选及处理的解决方案
348 0
|
7月前
|
JSON JavaScript 前端开发
shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)
在使用Openlayers、leaflet、mapbox等地图控件的时候,GeoJSON几乎是不可避免打交道的数据类型,如果您想要从事gis行业相关的开发工作,本篇文章应该能为您带来一些帮助。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript API
Vue使用vue-3d-model组件预览3D三维文件、立体文件,支持旋转、自动播放
Vue使用vue-3d-model组件预览3D三维文件、立体文件,支持旋转、自动播放
Threejs实现模拟河流,水面水流,水管水流,海面
Threejs实现模拟河流,水面水流,水管水流,海面
3210 0
Threejs实现模拟河流,水面水流,水管水流,海面
|
定位技术
干货!解决Cesium中Entity移动漂移的问题
案例场景:在Cesium开发三维场景展示中,肯定会碰到加载Entity的需求,如果在你的gis应用中,带了地形的展示。那么在旋转切换画面时,Entity是否跟着一起动了起来,感觉像漂移一样呢?
4109 0
干货!解决Cesium中Entity移动漂移的问题
|
12月前
|
atlas
Cesium导入geojson数据
这篇文章详细描述了如何在Cesium中导入GeoJSON数据来绘制地理矢量数据,并提供了实现的具体方法和示例代码。
453 2
Cesium导入geojson数据
|
12月前
|
图形学
ThreeJs创建管道效果
这篇文章介绍了在Three.js中创建管道(Tube)效果的方法和技术细节。
345 3
ThreeJs创建管道效果
|
前端开发 小程序 Java
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
本文详细介绍了如何在SpringBoot项目中统一处理接口返回结果及全局异常。首先,通过封装`ResponseResult`类,实现了接口返回结果的规范化,包括状态码、状态信息、返回信息和数据等字段,提供了多种成功和失败的返回方法。其次,利用`@RestControllerAdvice`和`@ExceptionHandler`注解配置全局异常处理,捕获并友好地处理各种异常信息。
5702 0
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
|
12月前
|
JavaScript 前端开发 API
JavaScript全屏,监听页面是否全屏
JavaScript全屏,监听页面是否全屏
247 0
|
JavaScript API 索引
js中的reduce()方法 讲解 和实现
`reduce()` 方法对数组元素依次应用一个回调函数,将结果累计并最终返回单一值。语法为 `reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)`。参数包括累计器(初次为初始值或首元素)、当前元素值、索引及数组自身。此方法需返回值供下一轮迭代使用。常见应用场景包括计算数组总和与平均值、统计元素频率、过滤与转换数组内容及去除重复项等。例如,可通过 `reduce()` 快速计算 `[1, 2, 3, 4, 5]` 的总和或对对象属性值求和。此外,还可自定义实现 `reduce()` 方法
3487 1