美文网首页GIS加油站
如何从高德获取地铁数据

如何从高德获取地铁数据

作者: 牛老师讲webgis | 来源:发表于2020-08-13 22:19 被阅读0次

    概述

    本文讲讲如何在高德获取地铁数据及后期处理,以北京为例。

    实现

    获取数据

    打开高德地铁,按下F12打开调试模式,切换到network面板,如下:

    F12查看
    点击右键,“Open in new tab”,在新窗口中打开。
    open in tab
    将页面另存为json数据格式。
    在这里插入图片描述

    数据处理

    将拿到的数据写代码转换成两个geojson数据,一个是站点数据,一个线路数据。

    1. 站点数据处理
    $.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));
    })
    
    1. 线路数据处理
    $.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了。
    在这里插入图片描述

    技术博客
    CSDN:http://blog.csdn.NET/gisshixisheng
    联系方式

    类型 内容
    qq 1004740957
    公众号 lzugis15
    e-mail niujp08@qq.com
    webgis群 452117357
    LZUGIS

    相关文章

      网友评论

        本文标题:如何从高德获取地铁数据

        本文链接:https://www.haomeiwen.com/subject/amxwdktx.html