麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS教程」使用NodeJS抓取自2018年以来国内举办的所有马拉松数据

在之前的文章《「GIS教程」如何制作一张马拉松动态路线图/视频(无需编程及专业GIS工具)》中介绍了了如何制作一张马拉松动态路线图的方法,当时还比较好奇做这种视频有人看吗?全国才几个马拉松啊!后面一搜不得了,好家伙,原来国内几乎每个周末都有马拉松,并且还不止一场,好的时间段甚至一天的马拉松超过10场!马拉松是目前国内比较走红的运动,并且其路线也是天然的空间信息,所以小编就想着把国内目前所有举办过的马拉松都整理下来进行统计分析。

上图:QGIS里的热力图

数据源

目前网上的数据源有很多,小编最后使用的是中国马拉松官网。

网址:https://www.runchina.org.cn/

数据获取思路

步骤一:爬取赛历数据

首先通过中国马拉松官网我们可以找到赛历数据,将所有的赛历数据都爬取下来,保存在一个JSON里。

步骤二:数据添加经纬度

我们发现,中国马拉松官网上的数据没有城市经纬度信息,不太方便地理空间分析,所以我们需要将raceAddress这个字段的信息转换成经纬度。这里用到的是地理/逆地理编码功能。这里小编使用的是天地图的地理编码API。在使用天地图API之前需要注册天地图开发者帐号。地址:

http://lbs.tianditu.gov.cn/home.html

注册完成并认证之后,需要注册一个应用,这里使用的是服务端的应用哈。

PS:个人开发者一个号地理编码API的额度是 7000 次/天,目前还够用。

搞定上面的内容之后,就可以遍历步骤一的数据,并调用地理编码API,将经纬度信息添加到数据中。

请求方式(可能会随时时间改变):

http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}&tk=您的密钥

完成之后将生成的数据存为新的JSON。

步骤三:JSON转CSV

这个就比较简单了,直接调用Nodejs中的 json2csv 库即可,最后生成带经纬度的文件。

完整代码

完整代码如下:

为了防止资源恶意爬取,此处内容被作者隐藏。

立即获取

小编也是花了小半天时间完成的,感谢大家的支持。

代码运行教程

代码运行需要依赖NodeJS v18不会配置的请先自行搜索。

使用方法

先安装依赖

    yarn install

或者

    npm install

再运行 node index.js 抓取数据,会生成一个 output.json 文件。

接着运行 node generateGeoCode.js 添加数据的经纬度信息,运行之前需要将你的天地图密钥填入 generateGeoCode.js 文件中。

最后运行 node json2csv.js 生成数据csv文件。

后话

任何使用问题可以留言,有问题小编会第一时间回复哈。

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)