中国国内航线信息的可视化

 

上图是对国内机场和航线信息进行了一个简单的可视化。圆点表示了中国163个机场的位置,线条显示了5381条航线。之前曾在这个网站上见到了作者用R语言来对全世界的航线进行可视化。正所谓见贤思齐,本图就是模仿山寨的结果。但是这个图的生成没有原文那么复杂,所用到的地理图形包和步骤也与原例略有不同,比较失败的是没有展现出原图的夜景效果。具体实施的步骤如下:

    从这个网站下载到机场数据和航线数据;
    从中挑选出中国的机场和国内航线,并加以整理;
    用ggmap包读取谷歌地图;
    将机场和航线信息绘制在地图上。

 

 

library(ggmap)
data.port <- read.csv( ' d:\\airports.dat ',F)
data.line <- read.csv( ' d:\\routes.dat ',F)
library(stringr)
# 找到中国的机场
portinchina <- str_detect(data.port[, ' V4 '],  " China")
chinaport <- data.port[portinchina,]
# 去除少数几个没有编号的机场
chinaport <-chinaport[chinaport$V5!= '',
                      c( ' V3 ', ' V5 ', ' V7 ', ' V8 ', ' V9 ')]
names(chinaport) <- c( ' city ', ' code ', ' lan ', ' lon ', ' att ')
 
# 找出国内航班
lineinchina <- (data.line[, ' V3 '] %in% chinaport$code) & (data.line[, ' V5 '] %in% chinaport$code)
chinaline <- data.line[lineinchina,c( ' V3 ', ' V5 ', ' V9 ')]
names(chinaline) <- c( ' source ', ' destination ', ' equipment ')
 
#构建一个函数,根据机场编码得到经纬度
findposition <-  function(code) {
    find <- chinaport$code==code
    x <- chinaport[find, ' lon ']
    y <- chinaport[find, ' lan ']
    return(data.frame(x,y))
}
 
# 将机场编码转为经纬度
from <- lapply(as.character(chinaline$source),findposition)
from <- do.call( ' rbind ',from)
from$group <-  1:dim(from)[ 1]
names(from) <- c( ' lon ', ' lan ', ' group ')
 
to <- lapply(as.character(chinaline$destination),findposition)
to <- do.call( ' rbind ',to)
to$group <- 1:dim(to)[ 1]
names(to) <-c( ' lon ', ' lan ', ' group ')
data.line <- rbind(from,to)
temp<- data.line[data.line$group< 100,]
# 用ggmap包从google读取地图数据,并将之前的数据标注在地图上。
ggmap(get_googlemap(center =  ' china ', zoom= 4,
                    maptype= ' roadmap '),extent= ' device ')+
    geom_point(data=chinaport,aes(x=lon,y=lan),
               colour =  ' red4 ',alpha= 0.8)+
    geom_line(data=data.line,aes(x=lon,y=lan,group=group),
              size= 0.1,alpha= 0.05,color= ' red4 '

 

 

有兴趣的同学还可以进一步研究,哪个航线最远,分布如何,哪条航线最多,航线飞机档次如何,哪个机场海拔最高,哪个机场最忙.

from: http://xccds1977.blogspot.com/2012/07/blog-post_26.html

转载于:https://www.cnblogs.com/vivizhyy/archive/2012/09/11/2680270.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值