python在openstreetmap地图上绘制路线图的实现


Posted in Python onJuly 11, 2019

利用python进行经纬度轨迹展示

嘿!各位好久不见,距离第一次发博客已经过去两年多了,本人也从本科生变成了研究生,好了书归正传,最近在做一个关于航班滑行路径轨迹的项目,目的是将航班的经纬度数据在地图上显现出来并生成一条路径,以方便日后的滑行路径优化与分析。本文所用的语言为python,使用的是folium包,数据在flightaware网站上可以找到,使用这个包之前还是需要先进行pip install folium

folium的基本用法

  • folium.Map([纬度,经度],zoom start,width,height,control_scale,no_touch)   #zoom start为地图的初始缩放尺寸,数值越大地图放大程度就会越大,width为像素或百分比(int或者str两种形式),height地图高度,control_scale为是否需要在地图上显示比例尺,默认为false,no_touch为是否禁止触碰地图或拖拽地图,默认为不禁止。这些功能都是可自己选择的,一般来说只需要经度纬度和zoom_start就好了
  • folium.Marker([纬度,经度]).add_to(m)   #在地图上设置一个标志符号
  • folium.PolyLine(location = [[纬度1,经度1],[纬度2,经度2]...],weight,color,opacity).add_to(m)   #在地图上划线将所输入坐标连接起来

python利用folium绘图代码

在装好folium包以后呢,我们就可以使用起来啦,代码如下所示:

from folium import plugins
import folium
import os
m = folium.Map([39.1289, 117.3539], zoom_start=10) #中心区域的确定
location =[[39.1289, 117.3539], [39.1277262, 117.3542938], [39.1277275, 117.3543001], [39.1277262, 117.3542938], 
   [39.1277275, 117.3543001], [39.1277262, 117.3542938], [39.1277262, 117.3542938], 
   [39.1271896, 117.3541359], [39.127121, 117.354126], [39.127121, 117.354126], 
   [39.1269348, 117.3541107], [39.1268692, 117.3541061], [39.1263994, 117.3540649], 
   [39.1257591, 117.3540165], [39.125608, 117.3540192], [39.1251984, 117.3539717], 
   [39.1250038, 117.3539568], [39.1246886, 117.3539276], [39.1246033, 117.3539269], 
   [39.1244316, 117.353912], [39.1242828, 117.353912], [39.1241112, 117.3538971], 
   [39.1238623, 117.3538666], [39.1233153, 117.3538361], [39.1232643, 117.3538374], 
   [39.1230354, 117.3537478], [39.1229895, 117.353714], [39.1228638, 117.3535239], [39.122818, 117.3534493], 
   [39.1227334, 117.353241], [39.1226985, 117.3531494], [39.122652, 117.3530273], [39.122652, 117.3529968], 
   [39.1225821, 117.352829], [39.1225239, 117.3526764], [39.1224861, 117.3525835], [39.1224774, 117.3525391], 
   [39.1224657, 117.3525238], [39.1224174, 117.3523745], [39.1221886, 117.3517625], [39.1221771, 117.3517327], 
   [39.1221399, 117.3516388], [39.1221199, 117.3515834], [39.1220169, 117.3512998], [39.1219769, 117.3512115], 
   [39.1219482, 117.3511057], [39.1219188, 117.3510437], [39.121814, 117.3507996], [39.1217791, 117.3507385], 
   [39.1217558, 117.350708], [39.1215935, 117.3505982], [39.121558, 117.3505859], [39.1213417, 117.3506131], 
   [39.1211014, 117.3507475], [39.121011, 117.3507996], [39.1209528, 117.3508301], [39.120883, 117.3508759], 
   [39.1208481, 117.3509064], [39.1207352, 117.3509714], [39.1204834, 117.3511356], [39.120369, 117.3511953], 
   [39.120369, 117.3511953], [39.1202774, 117.351255], [39.1186409, 117.3522551], [39.1185321, 117.3523254], 
   [39.1182976, 117.3524641], [39.1181374, 117.3525686], [39.1173566, 117.3530426], [39.1171188, 117.3531955], 
   [39.1168213, 117.3533746], [39.1163325, 117.3536682], [39.115867, 117.3539581], [39.1156691, 117.3540802], 
   [39.1156342, 117.3540955], [39.1156342, 117.3540955], [39.1144981, 117.3547927], [39.113551, 117.3553772], 
   [39.113551, 117.3553772], [39.1125069, 117.3559869], [39.1120846, 117.3557129], [39.1120846, 117.3557129], 
   [39.1119118, 117.3553002], [39.1118546, 117.355136], [39.111782, 117.3549652], [39.1115456, 117.3542404], 
   [39.1115958, 117.3540649], [39.1115958, 117.3540649], [39.1128411, 117.3532562], [39.1131786, 117.3530426], 
   [39.113807, 117.3526459], [39.113807, 117.3526459], [39.1191902, 117.3493593], [39.1197308, 117.3490295], 
   [39.1206386, 117.3484802], [39.1208713, 117.3483276], [39.1214676, 117.347971], [39.1214676, 117.347971], 
   [39.1214676, 117.347971], [39.1214676, 117.347971]] #输入坐标点(注意)folium包要求坐标形式以纬度在前,经度在后
route = folium.PolyLine( #polyline方法为将坐标用线段形式连接起来
 location, #将坐标点连接起来
 weight=3, #线的大小为3
 color='orange', #线的颜色为橙色
 opacity=0.8 #线的透明度
).add_to(m) #将这条线添加到刚才的区域m内
m.save(os.path.join(r'C:\Users\Desktop', 'Heatmap1.html')) #将结果以HTML形式保存到桌面上

成果展示(这个应该是要在联网的情况下进行的,有时候图像加载的有一些慢)

python在openstreetmap地图上绘制路线图的实现

Python 相关文章推荐
python模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python实现图片文件批量重命名
Mar 23 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
Python json格式化打印实现过程解析
Jul 21 Python
python绘制趋势图的示例
Sep 17 Python
Python和Bash结合在一起的方法
Nov 13 Python
python中remove函数的踩坑记录
Jan 04 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
python for循环赋值问题
Jun 03 Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 #Python
python实现微信自动回复机器人功能
Jul 11 #Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 #Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 #Python
PowerBI和Python关于数据分析的对比
Jul 11 #Python
pow在python中的含义及用法
Jul 11 #Python
Python简单处理坐标排序问题示例
Jul 11 #Python
You might like
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
php简单截取字符串代码示例
2016/10/19 PHP
php实现微信支付之退款功能
2018/05/30 PHP
JavaScript 学习笔记(四)
2009/12/31 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
vue.js实现双击放大预览功能
2020/06/23 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
办公室前台的岗位职责
2013/12/20 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
2014年情人节活动方案
2014/02/16 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
学校安全责任书
2014/04/14 职场文书
司法所长先进事迹
2014/06/02 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
2014年客房部工作总结
2014/11/22 职场文书
创先争优活动个人总结
2015/03/04 职场文书