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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 快速学习行政区信息_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格式的函数解决方案
251 0
|
数据可视化 搜索推荐 JavaScript
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
924 0
|
3月前
|
JSON 数据可视化 定位技术
Map——使用BIGEMAP+geojson获取乡镇行政边界数据
Map——使用BIGEMAP+geojson获取乡镇行政边界数据
161 0
|
JSON 定位技术 数据格式
GeoJSON区县级地理数据信息拼接使用说明
GeoJSON区县级地理数据信息拼接使用说明
643 0
|
数据可视化 前端开发 定位技术
[LBS学习笔记4]地理特征POI、AOI、路径轨迹
今天继续LBS地理信息的学习,目标是写到10篇博客的时候,做出一个地图工具页面用,包含地图空间索引Geohash、S2、H3的可视化展示。
365 0
|
JSON IDE 开发工具
geojson乡镇拼接的说明
geojson乡镇拼接的说明
236 0
|
定位技术
Echarts地图开发:geomap全国34省市区cp属性经纬度坐标
Echarts地图开发:geomap全国34省市区cp属性经纬度坐标
97 0
|
存储 数据可视化 定位技术
使用 ggplot2 绘制比较各省份及其区县的详细数据
使用 ggplot2 绘制比较各省份及其区县的详细数据
171 0
|
存储 定位技术 数据库管理
如何在QGIS中将纬度和经度添加为CSV文件
如何在QGIS中将纬度和经度添加为CSV文件
401 0
如何在QGIS中将纬度和经度添加为CSV文件
|
JSON 大数据 BI
行政区信息_介绍|学习笔记
快速学习行政区信息_介绍
124 0
行政区信息_介绍|学习笔记