如何从高德获取地铁数据
时间:2022-07-23
本文章向大家介绍如何从高德获取地铁数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
概述
本文讲讲如何在高德获取地铁数据及后期处理,以北京为例。
实现
获取数据
打开高德地铁,按下F12打开调试模式,切换到network面板,如下:
点击右键,“Open in new tab”,在新窗口中打开。
将页面另存为json数据格式。
数据处理
将拿到的数据写代码转换成两个geojson数据,一个是站点数据,一个线路数据。
- 站点数据处理
$.get('data/subway.json', function (res) {
var geojson = {
'type': 'FeatureCollection',
'features': []
};
res = res['l'];
var stations = {};
for (var i = 0; i < res.length; i++) {
const r = res[i];
var kn = r['kn'];
var ln = r['ln'];
var cl = r['cl'];
var ls = r['ls'];
var st = r['st'];
var lineInfo = {
kn: kn,
ln: ln,
cl: cl,
ls: ls
};
for (let j = 0; j < st.length; j++) {
var s = st[j];
// 站点去重
if(!stations[s['poiid']]) {
stations[s['poiid']] = true;
var coords= s.sl.split(',').map(Number);
var properties = Object.assign(s, lineInfo);
geojson.features.push({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: coords
},
properties: properties
});
}
}
}
console.log(JSON.stringify(geojson));
})
- 线路数据处理
$.get('data/subway.json', function (res) {
var geojson = {
'type': 'FeatureCollection',
'features': []
};
res = res['l'];
for (var i = 0; i < res.length; i++) {
const r = res[i];
var st = r['st'];
var coords = [];
for (let j = 0; j < st.length; j++) {
var s = st[j];
var _coords= s.sl.split(',').map(Number);
coords.push(_coords);
}
geojson.features.push({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: coords
},
properties: r
});
}
console.log(JSON.stringify(geojson));
})
将浏览器console输出的内容拷贝下来,粘贴到一个文本里面,另存为geojson或者json均可。用QGIS打开并做简单的符号化即可得到如下效果。
同时我们将高德的切片地图加进来,将数据的正确性进行验证。从图上来看数据还是比较准确的。
将站点和线路数据导出为shp。根据点连成的线不是很圆滑,我们在arcgis里面做一下平滑处理,在toolbox工具箱中找到Smooth Line工具,Smoothing Algorithm选择BEZIER_INTERPOLATION。
进行平滑处理后的数据,以及原数据的对比如下:
对处理后的线路和站点数据进行简单的配图,一副地铁图就OK了。
- 投资人榴莲又卖出一枚三拼域名
- python爬虫(五)_urllib2:Get请求和Post请求
- python爬虫(七)_urllib2:urlerror和httperror
- 双拼市场好!米友售出域名chuijia.com
- Elasticsearch--数据索引
- python爬虫(一)_爬虫原理和数据抓取
- 域名tbw.vip一口价58888元交易
- Tomcat服务器+JSP页面+MySQL数据库网站部署
- 一步步教你理解LSTM
- 2017下半年IT行业快速发展的趋势
- 2018年人工智能和机器学习路在何方?听听美国公司怎么做
- Kubernetes服务网格(第10部分):服务网格API
- Kubernetes的服务网格(第2部分):Pods目前看来还是很棒的
- Docker / OSX快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 自定义返回按钮的实例详解
- Android在layout xml中使用ViewStub完成动态加载问题
- Android编程中Intent实现页面跳转功能详解
- Android编程之桌面小部件AppWidgetProvider用法示例
- Android编程实现悬浮窗获取并显示当前内存使用量的方法
- Android ListView中动态添加RaidoButton的实例详解
- Android沉浸式状态栏设计的实例代码
- Android编程使用LinearLayout和PullRefreshView实现上下翻页功能的方法
- R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
- Android 中两个Activity 之间的传值问题
- 学习使用Material Design控件(二)使用DrawerLayout实现侧滑菜单栏效果
- Android Spinner列表选择框的应用
- Android实现截屏方式整理(总结)
- 用RSHINY DASHBOARD可视化美国投票记录
- Android 侧滑关闭Activity的实例