我们经常坐飞机,就知道上了飞机之后飞机是怎么飞的,就不甚了解了。今天我们就来扒一下航班的飞行数据,看看飞机飞行的航迹是怎样的。
首先要看航班的飞行轨迹,从https://zh.flightaware.com/这个网址可以查得到。今天我们来查一下2020年8月24日MU2387航班的飞行轨迹。
网页的数据表情况是这样的
我们先把这个表格给用爬虫,扒下来
代码:
library(stringr)
library(rvest)
library(dplyr)
#抓取航路数据
my_url<-"https://zh.flightaware.com/live/flight/CES2387/history/20200824/2345Z/ZLXY/ZSNJ/tracklog"
web_page<-read_html(my_url)
my_tabale<-web_page%>%html_table(".tracklogTable",header=T)
mydat<-as.data.frame(my_tabale[1])
#数据清洗
temp<-mydat[3:173,]
temp_1<-c()
temp_2<-c()
temp_1<-temp%>%filter(temp$纬度纬度!=temp[22,2] )
temp_2<-temp_1 %>% filter(temp_1$纬度纬度!= temp_1[26,2])
View(temp_2)
效果如图
数据爬下来了,下面就是对数据进行一些改造。比如纬度“34.387634.39”是这样,后面多了“.39”这样的。对于我们来说意义不大,我们就把.39这样的“尾巴”舍去。
temp_2$经度经度<-substr(temp_2$经度经度,1,8)
temp_2$纬度纬度<-substr(temp_2$纬度纬度,1,8)
temp_3<-data.frame(lng=temp_2$经度经度[1:167],
lat=temp_2$纬度纬度[1:167])
得到的数据结构如下:
好了,这就是我们要的飞行的经纬度,下来我们就开始画图。我们先用示意图来
library(ggplot2)
library(mapdata)
library(ggthemes)
####################用ggplot画出航迹图1
map_temp_1<-map("china",plot = F)
ggplot(temp_3)+
geom_path(data =map_temp_1,aes(x=long,y=lat,group=group))+
geom_line(aes(as.numeric(lng),
as.numeric(lat)),colour="red")+
ggtitle(label = "MU2387飞行航迹图",subtitle = "西安-->南京")+
theme_map()+
coord_fixed()
效果如图:
####################用ggplot画出航迹图2
map_temp<-map_data("china")
ggplot(temp_3)+
geom_path (data = map_temp,aes(x=long,y=lat,group=group))+
geom_line(aes(as.numeric(lng),
as.numeric(lat)),colour="red")
效果如图:
看着是不太舒服吧,我们就用可交互式的画图来看,这样会更习惯的。
###################交互式航迹图
library(leaflet)
library(leafletCN)
leaflet() %>%amap() %>%addPolylines(lng=as.numeric(temp_3$lng),
lat=as.numeric(temp_3$lat),
color = "blue", weight = 5)
效果如图: