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 17 Python
简单介绍Python中的len()函数的使用
Apr 07 Python
Python实现简单的四则运算计算器
Nov 02 Python
Django实战之用户认证(初始配置)
Jul 16 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
PyCharm设置护眼背景色的方法
Oct 29 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 Python
Python异常模块traceback用法实例分析
Oct 22 Python
Python动态声明变量赋值代码实例
Dec 30 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
Python 中由 yield 实现异步操作
May 04 Python
python selenium 获取接口数据的实现
Dec 07 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
杏林同学录(八)
2006/10/09 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
validform表单验证的实现方法
2019/03/08 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
js实现表格数据搜索
2020/08/09 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python getopt详解及简单实例
2016/12/30 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
python文件选择对话框的操作方法
2019/06/27 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
pycharm实现猜数游戏
2020/12/07 Python
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
音乐教学随笔感言
2014/02/19 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android