Java从高德地图获取全国地铁站数据

news2024/9/21 18:58:10

Java从高德地图获取全国地铁站数据。

数据来源(高德地图):http://map.amap.com/subway/index.html?&4401
在这里插入图片描述

采集代码

    /**
     * 从高德地图地铁线路同步全国地铁站数据(非必要不调用)
     * 数据来源:http://map.amap.com/subway/index.html?&4401
     */
//    @GetMapping("/subwayParser")
    public void subwayParser() {
        String[] links = {
                "https://map.amap.com/service/subway?_1684218661470&srhdata=1100_drw_beijing.json",
                "https://map.amap.com/service/subway?_1684218693712&srhdata=3100_drw_shanghai.json",
                "https://map.amap.com/service/subway?_1684218708196&srhdata=4401_drw_guangzhou.json",
                "https://map.amap.com/service/subway?_1684218719262&srhdata=4403_drw_shenzhen.json",
                "https://map.amap.com/service/subway?_1684218731379&srhdata=4201_drw_wuhan.json",
                "https://map.amap.com/service/subway?_1684218743629&srhdata=1200_drw_tianjin.json",
                "https://map.amap.com/service/subway?_1684218759393&srhdata=3201_drw_nanjing.json",
                "https://map.amap.com/service/subway?_1684218773376&srhdata=8100_drw_xianggang.json",
                "https://map.amap.com/service/subway?_1684218803777&srhdata=5000_drw_chongqing.json",
                "https://map.amap.com/service/subway?_1684217707451&srhdata=3301_drw_hangzhou.json",
                "https://map.amap.com/service/subway?_1684218833591&srhdata=2101_drw_shenyang.json",
                "https://map.amap.com/service/subway?_1684218852774&srhdata=2102_drw_dalian.json",
                "https://map.amap.com/service/subway?_1684218869557&srhdata=5101_drw_chengdu.json",
                "https://map.amap.com/service/subway?_1684218886740&srhdata=2201_drw_changchun.json",
                "https://map.amap.com/service/subway?_1684218905074&srhdata=3205_drw_suzhou.json",
                "https://map.amap.com/service/subway?_1684218920973&srhdata=4406_drw_foshan.json",
                "https://map.amap.com/service/subway?_1684218936956&srhdata=5301_drw_kunming.json",
                "https://map.amap.com/service/subway?_1684218956105&srhdata=6101_drw_xian.json",
                "https://map.amap.com/service/subway?_1684218976721&srhdata=4101_drw_zhengzhou.json",
                "https://map.amap.com/service/subway?_1684219002370&srhdata=4301_drw_changsha.json",
                "https://map.amap.com/service/subway?_1684219044819&srhdata=3302_drw_ningbo.json",
                "https://map.amap.com/service/subway?_1684219064385&srhdata=3202_drw_wuxi.json",
                "https://map.amap.com/service/subway?_1684219087401&srhdata=3702_drw_qingdao.json",
                "https://map.amap.com/service/subway?_1684219109584&srhdata=3601_drw_nanchang.json",
                "https://map.amap.com/service/subway?_1684219127182&srhdata=3501_drw_fuzhou.json",
                "https://map.amap.com/service/subway?_1684219147299&srhdata=4419_drw_dongguan.json",
                "https://map.amap.com/service/subway?_1684219174915&srhdata=4501_drw_nanning.json",
                "https://map.amap.com/service/subway?_1684219192214&srhdata=3401_drw_hefei.json",
                "https://map.amap.com/service/subway?_1684219209797&srhdata=5201_drw_guiyang.json",
                "https://map.amap.com/service/subway?_1684219228846&srhdata=3502_drw_xiamen.json",
                "https://map.amap.com/service/subway?_1684219243963&srhdata=2301_drw_haerbin.json",
                "https://map.amap.com/service/subway?_1684219261162&srhdata=1301_drw_shijiazhuang.json",
                "https://map.amap.com/service/subway?_1684219275594&srhdata=6501_drw_wulumuqi.json",
                "https://map.amap.com/service/subway?_1684219292478&srhdata=3303_drw_wenzhou.json",
                "https://map.amap.com/service/subway?_1684219308833&srhdata=3701_drw_jinan.json",
                "https://map.amap.com/service/subway?_1684219330534&srhdata=6201_drw_lanzhou.json",
                "https://map.amap.com/service/subway?_1684219353633&srhdata=3204_drw_changzhou.json",
                "https://map.amap.com/service/subway?_1684219370051&srhdata=3203_drw_xuzhou.json",
                "https://map.amap.com/service/subway?_1684219391167&srhdata=1401_drw_taiyuan.json",
                "https://map.amap.com/service/subway?_1684219404866&srhdata=1501_drw_huhehaote.json",
                "https://map.amap.com/service/subway?_1684219420149&srhdata=4103_drw_luoyang.json"
        };

        // 输出数组中的链接
        for (String link : links) {
            String subwayData = HttpUtil.get(link, 10000);
//            log.info("抓取到的地铁站数据:data = {}", subwayData);

            JSONObject jsonObject = new JSONObject(subwayData);

            List<AppSubwayData> appSubwayDataList = new ArrayList<>();

            // 获取城市名称
            String city = jsonObject.getString("s");
            log.info("城市: " + city);

            // 获取线路信息
            JSONArray lineArray = jsonObject.getJSONArray("l");
            for (int i = 0; i < lineArray.length(); i++) {
                JSONObject lineObject = lineArray.getJSONObject(i);

                // 获取线路名称
                String lineName = lineObject.getString("ln");
                log.info("线路名称: " + lineName);
                String lineIdentifier = lineObject.getString("ls");
                log.info("线路标识: " + lineIdentifier);

                JSONArray stationArray = lineObject.getJSONArray("st");
                for (int j = 0; j < stationArray.length(); j++) {
                    JSONObject stationObject = stationArray.getJSONObject(j);

                    AppSubwayData appSubwayData = new AppSubwayData();
                    // 按照"地铁"分隔字符串
                    String[] subwayArray = city.split("地铁");
                    appSubwayData.setName(subwayArray[0].trim());
                    appSubwayData.setCityName(city);
                    appSubwayData.setLineName(lineName);
                    appSubwayData.setLineIdentifier(lineIdentifier);
                    // 获取站点名称
                    String stationName = stationObject.getString("n");
                    log.info("站名: " + stationName);
                    appSubwayData.setStation(stationName);

                    // 获取经纬度
                    String coordinates = stationObject.getString("sl");
                    String[] latLng = coordinates.split(",");
                    double latitude = Double.parseDouble(latLng[0]);
                    double longitude = Double.parseDouble(latLng[1]);
                    log.info("经度: " + latitude);
                    appSubwayData.setLatitude(BigDecimal.valueOf(latitude));
                    log.info("纬度: " + longitude);
                    appSubwayData.setLongitude(BigDecimal.valueOf(longitude));
                    appSubwayDataList.add(appSubwayData);
                }
            }
            if (CollectionUtil.isNotEmpty(appSubwayDataList)) {
                boolean saveBatch = this.appSubwayDataService.saveBatch(appSubwayDataList);
                if (saveBatch) {
                    log.info("成功保存{}的地铁站数据{}条...", city, appSubwayDataList.size());
                }
            }
        }
    }

地铁站数据包含以下字段释义:

“s”: 城市名称 (“贵阳市地铁”)
“i”: 城市代码 (“5201”)
“l”: 地铁线路列表
“ln”: 线路名称 (“1号线”)
“su”: 线路状态 (“1” 表示开通,“0” 表示关闭)
“kn”: 线路显示名称 (“轨道交通1号线”)
“lo”: 线路方向 (“0” 表示起点到终点,“1” 表示终点到起点)
“lp”: 线路起始终止站索引列表 (例如, [“0 356”] 表示起始站索引为 0,终止站索引为 356)
“ls”: 线路标识
“cl”: 线路颜色代码
“la”: 线路备注
“x”: 线路类型
“li”: 线路编号列表

每条线路包含一个站点列表:
“st”: 站点列表
“rs”: 站点坐标(像素坐标,例如 “1552 1107”)
“udpx”: 上下行站点坐标列表
“su”: 站点状态 (“1” 表示开通,“0” 表示关闭)
“udsu”: 上下行站点状态列表
“n”: 站点名称 (“小孟工业园”)
“sid”: 站点ID
“p”: 站点坐标(像素坐标,例如 “1552 1107”)
“r”: 站点所属线路标识
“udsi”: 上下行线路标识列表
“t”: 站点类型
“si”: 站点标识
“sl”: 站点经纬度 (“106.709631,26.497717”)
“udli”: 上下行线路编号列表
“poiid”: 站点POI ID
“lg”: 站点级别
“sp”: 站点拼音简写

请注意,这些字段的具体含义可能根据实际应用或数据提供者的定义而有所不同。以上是一般情况下的字段释义,您可以根据您的具体需求进行适当的解释和使用。

数据

在这里插入图片描述
数据在这里~
传送链

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电厂用 JL-8D/3X2定时限电流继电器 复合继电器 功耗低 JOSEF约瑟】

JL-8D/3X2定时限电流继电器名称;定时限电流继电器型号:JL-8D/3X2触点容量250V5A功率消耗&#xff1c;5W返回系数0.90.97整定范围0.039.9A;0.130A辅助电源24220VDC/AC 系列型号&#xff1a; JL-8D/3X1定时限电流继电器&#xff1b; JL-8D/3X111A2定时限电流继电器&#xff1b…

深度操作系统 deepin V23 Beta 发布

深度操作系统 deepin V23 发布了首个 Beta 版本。 公告写道&#xff0c;它是 V23 Alpha 版本的一次升级&#xff0c;但不建议用于生产环境。作为一个专注于用户体验的系统&#xff0c;Deepin v23 beta 版本引入了许多新的特性&#xff0c;包括 DDE 新变化、终端、跨版本升级以…

Agilent安捷伦33522B任意波形发生器

Agilent安捷伦33522B任意波形发生器30兆赫 2通道 为您最苛刻的测量生成全方位信号的无与伦比的能力 具有 5 倍低谐波失真的正弦波&#xff0c;可提供更纯净的信号 脉冲频率高达 30 MHz&#xff0c;抖动减少 10 倍&#xff0c;可实现更精确的计时 具有排序功能的逐点任意波形功能…

Notepad++ 添加自定义右键菜单项

目录 1. 背景 020.添加右键菜单项 - “打开至” 030.添加右键菜单项 - “复制到剪切板” 效果图&#xff1a; 1. 背景 笔记本上使用Notepad&#xff0c;会因为存在标签栏&#xff0c;导致窗口能显示的行数减少。 去除标签栏后&#xff0c;又无法操作一些右键菜单。 转而开…

掌握企业核心:工商详细信息API 60多项全维度信息解读

引言 在当今竞争激烈的商业环境中&#xff0c;了解和评估企业的工商注册信息变得至关重要。无论是与供应商合作、寻找合作伙伴&#xff0c;还是进行市场调研和背景调查&#xff0c;我们都需要准确和全面的企业工商信息来做出明智的决策。但是&#xff0c;获取这些信息往往是一…

SpringBoot的常见配置

SpringBoot基础配置 1. 配置文件格式问题导入1.1 修改服务器端口1.2 自动提示功能消失解决方案1.3 SpringBoot配置文件加载顺序 2. yaml问题导入2.1 yaml语法规则2.2 yaml数组数据2.3 yaml数据读取 3. 多环境开发配置问题导入3.1 多环境启动配置3.2 多环境启动命令格式3.3 多环…

CloudCompare二次开发之如何通过PCL进行点云分割?

文章目录 0.引言1.CloudCompare界面设计配准(segment)按钮2.欧式聚类分割&#xff08;Euclidean_Seg&#xff09;3.基于区域生长的分割&#xff08;Region_Seg&#xff09; 0.引言 因笔者课题涉及点云处理&#xff0c;需要通过PCL进行点云数据一系列处理分析&#xff0c;查阅现…

【漏洞预警】泛微E-Cology ofsLogin任意用户登陆漏洞

泛微ofsLogin任意用户登陆漏洞 漏洞描述 泛微e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 泛微e-cology前台任意用户登录漏洞&#xff1a;…

Git 代码分支管理 | 京东云技术团队

作者&#xff1a;京东科技 周新智 一、引言 近日&#xff0c;IoT 研发团队加入了不少新同学&#xff0c;对 git 分支的命名和管理方式有些许的模糊&#xff0c;分支的命名规范以及管理方式对项目的版本发布至关重要&#xff0c;为了解决实际开发过程中版本发布时代码管理混乱…

大模型高效调参—PEFT库( Parameter-Efficient Fine-Tuning)

介绍 在面对特定的下游任务时&#xff0c;如果进行Full FineTuning&#xff08;即对预训练模型中的所有参数都进行微调&#xff09;&#xff0c;太过低效&#xff1b;而如果采用固定预训练模型的某些层&#xff0c;只微调接近下游任务的那几层参数&#xff0c;又难以达到较好的…

Java 8 腰斩!Java 17 暴涨 430%!!

前言 New Relic 最新发布了一份 “2023 年 Java 生态系统状况报告”&#xff0c;旨在提供有关当今 Java 生态系统状态的背景和见解。该报告基于从数百万个提供性能数据的应用程序中收集的数据&#xff0c;对生产中使用最多的版本、最受欢迎的 JDK 供应商、容器的兴起等多方面进…

数据链路层讲解

目录 一、数据链路层解决的问题 二、以太网协议 2.1 认识以太网 2.2 以太网帧格式 2.3 MAC地址 2.3.1 认识MAC地址 2.3.2 对比MAC地址和IP地址 2.4 MTU 2.4.1 认识MTU 2.4.2 MUT对IP协议的影响 2.4.3 MTU对UDP协议的影响 2.4.4 MTU对TCP协议的影响 2.5 数据跨网络…

什么是npu算力盒子,算力是越大越好吗?

一、什么是npu算力盒子&#xff1f;该怎么选&#xff1f; NPU&#xff08;神经处理单元&#xff09;算力盒子是一种专门用于进行人工智能计算的硬件设备&#xff0c;其中集成了高性能的NPU芯片。NPU是一种针对深度学习任务进行优化的处理器&#xff0c;具备高度并行计算和低功…

MySQL高级_第07章_InnoDB数据存储结构

MySQL高级_第07章_InnoDB数据存储结构 1.数据库的存储结构:页 索引结构给我们提供了高效的索引万式&#xff0c;不过索引信息以及数据记录都是保存在文件上的, 确切说是存储在页结构中。另一方面&#xff0c;索引是在存储引擎中实现的&#xff0c;MySQL服务器上的存储引擎负责…

文章生成器-原创文章生成器

在网络营销领域&#xff0c;优质文章是吸引新客户和保留老客户的重要工具。然而&#xff0c;生成高质量且符合SEO优化的文章并不是一件容易的事情。这就是为什么网站文章生成器如今备受欢迎的原因。而在众多的文章生成工具中&#xff0c;147GPT批量生成文章软件是一款非常出色的…

apache doris自定义udf函数

环境准备 下载(https://doris.apache.org/zh-CN/download) 上传文件到节点,并解压 apache-doris-fe-1.2.4.1-bin-x86_64.tar.xzapache-doris-be-1.2.4.1-bin-x86_64-noavx2.tar.xzapache-doris-dependencies-1.2.4.1-bin-x86_64.tar.xz部署 官方部署文档(本文的端口均有修…

如何将 Confluence 数据自助迁移至 ONES|软件国产化替代

近日&#xff0c;ONES 升级了 Confluence 自助迁移工具&#xff0c;对迁移数据类型、迁移范围、迁移模式等多个维度的能力进行了提升&#xff0c;帮助企业更高效率、更低成本地将 Confluence 中的数据完整、准确地迁移至 ONES Wiki 中。 在 Confluence 与 ONES 服务资源充足的…

win下C++通过Clion部署yolov5——libtorch+yolov5

libtorchyolov5 一、环境配置二、下载官网例子三、测试3.1、创建项目3.2、cmakelist.txt编写3.3、运行测试 一、环境配置 需要配置libtorchOpenCV&#xff0c;此处参考博文&#xff1a;clion配置libtorchOpenCV环境配置。 环境解决后即可开始下一步啦。 二、下载官网例子 下…

【debug】分立式网络切片部署

文章目录 启动代码部署全流程网络配置配置静态IP 部署核心网部署基站部署基站1部署基站2部署基站3查看amf日志 问题routing-config的问题不加routing-config与加的对比调查 nr-binder功能测试基站1基站2ifconfig路由表方向解决 路由规则 启动代码 启动OAI核心网 #开启数据转发…

WebAssembly--执行与内存模型

前言 在WebAssembly初探中&#xff0c;我们已经了解了WebAssembly的发展和标准演进过程&#xff0c;并简单地体验了一把Wasm的应用&#xff0c;本篇文章会通过对比WASM和JS的执行流程&#xff0c;WebAssembly的内存模型深入分析&#xff0c;带大家理解下WebAssembly部分核心原…