1 Star 20 Fork 4

scuzzk/AmapMetro

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

🗺️项目介绍

本项目将分享如何从高德地图上获取并清洗地铁线路矢量数据,将其存储为本地数据,数据包括运营中在建地铁并不包括各地规划中尚未修建的地铁线路

注意本项目并非自动化数据采集,需要使用者手动逐一收集更新地铁线路信息,再通过本项目程序清洗原始数据得到最终的矢量数据。

案例数据如有纰漏还望各位朋友批评指正,作者将及时更新。

🗺️数据成果(更新中)

🔠数据概况

截止2024年9月28日,本项目已完成大湾区四座城市的地铁线路数据整理,其他地区的数据正在更新中⌛...

其中广州区域的地铁数据还包含了广清城际、广肇广惠城际等城际线路,其中广佛线分别存储在广州和佛山两座城市的地铁线路中,如须合并线路数据需要注意剔除重复数据。

序号 城市名称 更新状态 线路数量 运营中线路数量 在建线路数量 更新日期
1 深圳 在库 31 15 16 2024-9-28
2 广州 在库 34 21 13 2024-9-28
3 佛山 在库 9 5 4 2024-9-28
4 东莞 在库 2 1 1 2024-9-28

线路总览

序号 城市 线路展示 与卫星图比对
1 广州 guangzhou guangzhou
2 深圳 shenzhen shenzhen
3 佛山 foshan foshan
4 东莞 dongguan dongguan

🔠数据说明及下载

作者根据城市划分不同的地铁线路数据,每个城市命名的文件夹下按照坐标系类型数据类型分为不同的文件,有需要的朋友可以根据具体情况使用。

地铁线路数据包含地铁线路名称、线路状态、最早运行时间、最晚运行时间和运营单位。但是由于部分线路数据不完整,可能仅包含线路名称和线路状态属性数据。

数据下载链接可以在最终数据FinalData中下载

📋坐标系类型

目前国内常见的地图厂商主要采用火星坐标系GCJ02(常见于高德地图,后续简单用高德坐标系代指)百度地图坐标系(常见于百度地图)WGS84坐标系(常见于卫星底图),如果套用不同的底图需要选择相应的坐标系,否则坐标点位可能存在偏移。

results_contrast

📋数据类型

本次分享的成果数据格式额外增加了KML格式数据,方便大家直接导入奥维地图进行查看。因为地铁站坐标点数据较多,如没有奥维地图会员将无法实时查看,因此按照城市分别存储。

🗺️准备环节

🔠搭建运行环境

本项目程序使用Python 3进行编写,并引用了以下第三方库。作者开发过程中使用Anaconda配置环境和管理第三方库,国内用户推荐使用清华大学开源软件镜像站的安装包下载,待完成Anaconda安装后,请确保已经安装配置以下第三方库。需要特别注意,本程序核心引用的第三方库geopandas库的配置相对麻烦,可以参考官方教程和编程社区进行配置geopandas官网

序号 库名称 用途 备注
1 os 用于文件读写
2 math 主要在坐标转换阶段使用 本文坐标转换程序主要参考该文档wandergis/coordTransform_py
3 json 用于读写原始地铁数据json文件
4 geojson 用于读写geojson文件
5 geopandas 用于读写geojson文件和转化数据类型 配置难度较高,需要参考官网的指南geopandas官网
6 shapely 用于配合geopandas处理坐标信息

🔠数据来源分析

📋数据获取

在网页打开高德地图,按下F12调出开发者工具,打开网络监听,在搜索栏输入运营中或在建的地铁线路,网页会返回整体的地铁线路数据,通过点击“预览”查看名为poiInfo?query....的数据能够发现里面包含了线路站点的所有信息,包括线路名称、首末站点名称、地点站名以及坐标点等信息。

F12

📋数据格式解析

打开F12开发者工具数据预览部分,地铁站点数据主要存储在对象“data”的列表“busline_list”中,一般会返回2个对象,即图中编号“0”和“1”,代表同一线路往返线路。

busline_list

不过一般只关注编号为“0”的对象即列表内的第一个对象,后续内容无需重复清洗采集,也可以避免不同城市线路名称重复的问题。

打开编号为“0”的对象,需要重点关注以下值:

序号 名称 含义
1 company 地铁运营单位
2 front_name 起始站点名称
3 terminal_name 终点站点名称
4 key_name 线路名称
5 name 线路全称
6 stations 线路站点数据
7 status 线路运行状态

line_info

展开“station”又可以看到各个站点的数据信息,重点关注以下值: station

序号 名称 含义
1 name 站点名称
2 endtime 关闭时间
3 station_num 站点序号
4 xy_coords 经纬坐标

📋明确运营地铁线路清单

打开高德地图地铁图,可以查看当前在运营的全部地铁线路。 subwayoperate subwaylist

但是高德地图并没有集成展示部分城际线路,还是需要到目的地的地铁运营商官网进行查询。例如佛山地铁官网,集成汇总了所有的广佛地铁线路。

subwaylist

📋明确在建地铁线路清单

高德地图上会用灰色虚线表示在建地铁线路,点击站点会弹出在建地铁线路名称。在搜索框搜索该地铁,会像运营地铁线路数据一样返回路线相关信息。

subwaylist subwaylist

关于在建地铁的清单可以通过官方媒体,例如广州地铁官方发布、羊城晚报等官方发布信息,也可关注重点跟踪汇总城市地铁线路建设进度的公众号,比如本项目所参考的清单资料来源与公众号Metro Bay,对建设进度有比较详细的节点对比和建设进度点评。

subwaylist

🗺️数据清洗

🔠整体流程

基本按照如下思路进行数据清洗:

  1. 以城市为单位进行线路数据收集,独立创建文件夹;
  2. 每条线路独立存储为JSON格式文件;
  3. 遍历每条线路数据,提取坐标数据和属性信息,统一汇总到一个GeoJSON文件中,统一按照高德坐标系保存;
  4. 根据使用者对文件格式和坐标系统的需求将刚才的GeoJSON文件转化为SHP文件。

🔠模块简介

在刚才的流程中能够看到,这个程序将反复使用到以下几个功能,为了方便后期的代码维护,将不同的功能打包为不同的模块,使用者仅需要重点关注FilePath以及Generator两个功能模块即可。

序号 名称 作用
1 FilePath 规定程序运行和数据保存地址目录
2 JsonReader 获取文件夹下的文件名称清单以及读取json文件
3 GetData 从GeoJSON文件中提取出坐标和属性信息
4 CoorTrans 完成火星坐标系、WGS84坐标系和百度地图坐标系之间的坐标转换
5 Generator 通过调用前面的模块输出得到期望的数据类型和坐标系

🔠修改FilePath模块下的根目录

需要提前设定根目录,赋值在root下,需要使用者手动修改为目标目录。 filepath

默认根目录下设置RawDataFinalData两个子文件夹,其中

  1. RawData用于存储原始地铁Json数据,该文件夹下按照城市名称再创建子文件夹,每条线路独立保存为单独的Json文件

  2. FinalData用于存储清洗好的地铁线路和站点数据,先按照文件类型创建子文件夹,然后再按照要素类型(点或线)创建文件夹,最后分别按照坐标系类型创建文件夹 filepath

🔠存储原始Json数据

按照前文的数据来源解析,使用者可将预览里的数据全部折叠,右键点击选择复制,然后在本地目标文件夹下的RawData文件夹下新建空白文本,建议采用地铁线路名称命名,用记事本打开文件将刚才复制的内容粘贴进去,保存并退出,再将文件后缀“.txt”更改为“.json”

需要注意,建议数据路径名称全部为英文,同时不要出现空格、特殊字符等标记,以免后续程序运行失败。例如广州地铁1号线数据的地址可以设置为“D:/ProjectName/RawData/Guangzhou/line1.json” copydata saveasjson

🔠设置输出文件格式和坐标系

打开根目录下的启动程序文件MetroData,在当中设定数据格式、要素类型和坐标系统。

该程序默认自动生成高德坐标系下的地铁线路和站点Geojson格式数据文件,后续的数据在此基础上进行转化。 generator

木兰宽松许可证,第2版 木兰宽松许可证,第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体” 是指提交贡献的机构及其“关联实体”。 “关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是 指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可 以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定 撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡 献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软 件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“ 关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或 其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权 行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定 的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“ 本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对 任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于 何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文 版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i. Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii. Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package; iii. Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

主要用于清洗从高德地图搜索得到的地铁线路数据并生成SHP文件和GeoJSON文件,涵盖了高德坐标系、百度坐标系和WGS1984坐标系三种类型的坐标点数据,方便在不同地图平台上使用。 展开 收起
README
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/scuzzk/AmapMetro.git
git@gitee.com:scuzzk/AmapMetro.git
scuzzk
AmapMetro
AmapMetro
master

搜索帮助