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

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习行政区信息_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 的对象)

相关文章
|
11月前
|
定位技术
百度地图拾取经纬度转为标准GEOJSON格式的函数解决方案
百度地图拾取经纬度转为标准GEOJSON格式的函数解决方案
199 0
|
11月前
|
数据可视化 搜索推荐 JavaScript
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
753 0
|
3天前
|
JSON JavaScript 定位技术
Echarts自定义地图显示区域,可以显示街道,小区,学校等区域
Echarts自定义地图显示区域,可以显示街道,小区,学校等区域
|
11月前
|
JSON 定位技术 数据格式
GeoJSON区县级地理数据信息拼接使用说明
GeoJSON区县级地理数据信息拼接使用说明
561 0
|
7月前
|
SQL JSON 数据格式
获取【省、市、区县、乡镇街道】json,csv,sql数据
获取【省、市、区县、乡镇街道】json,csv,sql数据
89 1
|
10月前
|
移动开发 JavaScript 前端开发
uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)
最近在做获取用户当前定位信息的时候,发现uniapp官方提供的兼容性并不是特别好,光注意事项都是密密麻麻一大堆,在实际使用场景下,效果并不理想,也不是很稳定。于是便重新封装了一下腾讯地图的一些东西,提高了下兼容度!下边我会把我用的封装思路逻辑给大家一一讲解。完整代码可私信我我发给你以上便是基于uni-app框架开发,使用Promise进行异步请求和结果返回,封装的H5获取当前详细定位信息组件希望大家一起交流。
1283 0
|
11月前
|
JSON IDE 开发工具
geojson乡镇拼接的说明
geojson乡镇拼接的说明
197 0
|
11月前
|
定位技术
Echarts地图开发:geomap全国34省市区cp属性经纬度坐标
Echarts地图开发:geomap全国34省市区cp属性经纬度坐标
70 0
|
存储 数据可视化 定位技术
使用 ggplot2 绘制比较各省份及其区县的详细数据
使用 ggplot2 绘制比较各省份及其区县的详细数据
117 0
|
JSON 大数据 数据格式
行政区信息_Geometry 实现|学习笔记
快速学习行政区信息_Geometry 实现
124 0
行政区信息_Geometry 实现|学习笔记