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 相关文章推荐
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
Django框架中方法的访问和查找
Jul 15 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
python 实现数组list 添加、修改、删除的方法
Apr 04 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
如何理解Python中包的引入
May 29 Python
python 获取剪切板内容的两种方法
Nov 28 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 Python
Python实现排序方法常见的四种
Jul 15 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
浅析PHP水印技术
2007/02/14 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
js实现选项卡效果
2020/03/07 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python实现文件路径和url相互转换的方法
2015/07/06 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
办理护照介绍信
2014/01/16 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers