Python3 爬取OpenStreetMap平台的城市道路交通网数据

  • 前言
  • 思路
  • 代码
  • 效果
  • 结语

前言

论文需要城市道路信息数据,OpenStreetMap平台是一个开源免费的全球地图信息平台,但是对于中国地图信息收录不是很全。我们可以通过API进行获取指定城市的交通道路信息。实验代码在Python3环境中跑,开放环境是Jupyter。

思路

首先获取城市ID,将城市ID进行转换成10位字符串,传递处理后的城市ID生成OSM文件。这里有关键的两个数据包
1、获取城市ID

<osm-script><query type="relation"><has-kv k="boundary" v="administrative"/><has-kv k="name:zh" v="合肥市"/></query><print/>
</osm-script>

2、获取道路信息

<osm-script timeout="1800" element-limit="100000000"><union><area-query ref="10位的城市id"/><recurse type="node-relation" into="rels"/><recurse type="node-way"/><recurse type="way-relation"/></union><union><item/><recurse type="way-node"/></union><print mode="body"/>
</osm-script>

代码

import requests
import redef getCityRpadDataByOSM(cityName):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36","Content-Type": "application/x-www-form-urlencoded"}data = '<osm-script><query type="relation"><has-kv k="boundary" v="administrative"/><has-kv k="name:zh" v="'+cityName+'"/></query><print/></osm-script>'url = "http://www.overpass-api.de/api/interpreter"response = requests.post(url, data = data.encode(), headers = headers)# 利用正则表达式提取 idmatch = re.search('<relation id="(.*?)">',response.text)id = match.group(1)# id 需要 10位if id:id = str(3600000000+int(id))print(id)else:returndata2 = '<osm-script timeout="1800" element-limit="100000000"><union><area-query ref="'+id+'"/><recurse type="node-relation" into="rels"/><recurse type="node-way"/><recurse type="way-relation"/></union><union><item/><recurse type="way-node"/></union><print mode="body"/></osm-script>'response2 = requests.post(url, data = data2, headers = headers)if len(response2.text)>1000:# 这里设置阀值是因为 网络问题会导致出现超时,丢掉这个包with open(cityName+".osm","w",encoding='utf-8') as f:f.write(response2.text)getCityRpadDataByOSM("合肥市")

效果

根据代码会打印 3603288965,这是转换后的10位合肥城市ID
生成的“合肥市.osm”文件如果打开有timeout英文,说明是网络问题你超时了,你可以多试几次,最后成功的文件是这样的:

结语

参考博客:
利用OpenStreetMap获取城市路网数据
后面呢是需要提取XML数据中的信息,比如Node标签和Way标签中的信息,这个后面再记录,如果有需要可以评论,然后我把代码发出来。

Python3爬取OpenStreetMap平台的城市道路交通网数据相关推荐

  1. python3爬取巨潮资讯网站年报数据

    python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本.最初脚本的原链接忘了, ...

  2. python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...

  3. python3爬取数据_python3爬取巨潮资讯网站年报数据

    python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本.最初脚本的原链接忘了, ...

  4. Python2 Python3 爬取赶集网租房信息,带源码分析

    *之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是 ...

  5. python3爬取百度图片

    python3爬取百度图片 最终目的:能通过输入关键字进行搜索,爬取相应的图片存储到本地或者数据库 首先打开百度图片的网站,搜索任意一个关键字,比如说:水果,得到如下的界面 分析: 1.百度图片搜索结 ...

  6. Python3爬取影片入库

    Python3爬取影片入库 1.服务器说明 [root@openshift maoyan]# cat /etc/redhat-release CentOS Linux release 7.4.1708 ...

  7. 利用python爬取京东平台评论及图片并进行分析

    一.背景及目的 在淘宝.京东等网络平台上购物,逐渐成为大众化的购物方式.但假冒伪劣产品在这个摸不着实物的购物平台严重危害着消费者的购物体验,即使我们可以通过七天无理由退货退款来维护我们的合法权益,但是 ...

  8. Python3爬取企查查网站的企业年表并存入MySQL

    Python3爬取企查查网站的企业年表并存入MySQL 本篇博客的主要内容:爬取企查查网站的企业年报数据,存到mysql中,为了方便记录,分成两个模块来写: 第一个模块是爬取数据+解析数据,并将数据存 ...

  9. Python3爬取英雄联盟英雄皮肤大图

    前言 之前一直想爬取LOL英雄皮肤的高清图片,最近有事,也没怎么去研究,所以,现在才去看了下,并且写了Python脚本来抓取皮肤图片.需要说明一下,这个脚本有部分英雄没有抓取到,但是具体原因,我目前还 ...

最新文章

  1. Sublime Text 3便携版下载安装和常用插件安装--顺便解决报错An error occured installing和no packages available for install
  2. rundll32.exe文件详解
  3. echarts 如何使柱状图左右展示_echarts 柱状图展示数据
  4. Understand Execution Context
  5. 机构:去年购房者平均年龄近30岁
  6. 总帐科目的批量传输与复制
  7. H264码流打包分析
  8. Oculus首席科学家发声,称VR需要能够“欺骗”大脑
  9. C++:成绩类Score
  10. 钱盾率先提出的“全流程屏障”究竟是怎样的一种能力?
  11. 海淘第一单——KindleTouch
  12. 王者荣耀2.0代码优化版C++
  13. 2022-Java面试宝典收藏版
  14. 尼恩Java面试宝典
  15. 【原理+实战】AI所有领域SOTA综述 (一)语音识别
  16. linux集群常用文件拷贝命令
  17. 新ssd硬盘怎么安装efi_如何在PC中升级和安装新的硬盘驱动器或SSD
  18. python2中urllib.unquote乱码的原因与解决方法
  19. putty终端linux怎么粘贴复制,PuTTY下的保持SSH连接及复制粘贴功能
  20. 详解百度大脑EdgeBoard出色的视频处理技术

热门文章

  1. Adobe Lightroom Classic 入门教程(八)本地局部调整 --- 渐变滤镜与径向滤镜
  2. RK3568平台开发系列讲解(环境篇)RK3568上OpenCV 的编译移植
  3. Word或Excel 转Pdf 工具类(License 去水印)
  4. 西储大学(CWRU)轴承数据集故障诊断(一):数据读取,数据集划分
  5. 你觉得世界的尽头是什么
  6. 私有化轻量级持续集成部署方案--05-持续部署服务-Drone(上)
  7. Autoware学习笔记waypoint_follower之twist_filter
  8. Java下载Excel的模板文件
  9. Analys 版本历史
  10. 中小企业CRM评测-客户和联系人管理_XToolsCRM