首页 > 其他分享 >R语言地理可视化:中国国内航线航班信息统计、绘制分布夜景图

R语言地理可视化:中国国内航线航班信息统计、绘制分布夜景图

时间:2023-02-28 22:44:07浏览次数:51  
标签:航线 worldline 地图 library 航班信息 可视化 夜景 数据

全文链接:http://tecdat.cn/?p=31693

原文出处:拓端数据部落公众号

最近,有一种说法:“中国经济发展的命脉就是石油和航线”。因此,航线的重要性不言而喻。

近年来,中国的航运业发展迅速,不仅带来了经济效益和社会效益,也带来了就业岗位。因此,我们有必要分析航线分布状况。

为了更好地帮助客户进行航运业务、航线设计、港口定位等决策研究,我们使用基于R语言地理信息系统的中国航线分布可视化。该方法利用地理信息系统的空间数据库管理功能,对中国各航线进行统计和分析,并基于R语言统计分析工具,对分析结果进行可视化处理,生成中国航线的空间分布图。

读取地图绘制所需的包

以下软件包均是绘制地图相关的 。

library(maptools)
library(ggplot2)
library(ggmap)
library(maps)
library(rgeos)
library(shapefiles)
library(geosphere)
library(plyr)

获取地图数据来源

航线、机场坐标

机场: airports.dat

航线: routes.dat

板块地图、都市地图

世界地图: ne_10m_admin_0_countries.shp

都市地图: ne_10m_urban_areas.shp

image.png

# 读取都市地图文件 读取版图地图文件  
urbanareasin <- readShapePoly("ne_0m_uranareas.shp")  
worldmapsin <- readShapePol("ne_1_admin_0_countries.shp")  
# 以下为格式转化  
worldmap <- fortifyworldapsin)

这一部分的主要工作是将shapefile文件转化为R可以识别的格式,然后建立数据与地图坐标间的关联。本文使用了航线频数来计算地图航线绘制的亮度。读者根据需要可以自行关联所需数据,例如成本,平均成本,旅客人次等,以达到不同的研究目的。

# 开始抽取机场数据  
airports <- rea.table("airorts.dat", sep = ",", header = FALSE)  
worldport <- airports[airpot$V5 != "", c("V3", "V5",  
                                         "V7", "V8", "V9")]  
names(worldprt) <- c("city", "code", "lan", "lon", "att")

有453条航线无标识

  
table(lineinworld)

image.png

summary(worldline)

image.png

统计部分国内站点的出发的航班信息

#北京出发航班  
 head(worldline[worldline$AIRPORT_FROCODE=="PEK",] )

image.png

排序

e$AIRPORT_TOCDE)[2,],  
      decreasing = TRUE)))

image.png

北京到达航班

head(worldline[worldine$AIRPORT_TOCODE=="PEK",] )

image.png

上海出发航班

head(worldline[worlline$AIRPORTFROM_CODE=="SHA",] )

image.png

上海到达航班

head(worldline[worldline$AIRPOT_T_CODE=="SHA",] )

image.png

香港出发航班

head(worldline[worldline$ARPORT_FRO_CODE=="SHA",] )

image.png

地图旋转

这一步是对地图进行坐标变换,设置中国为世界中心,这里做了简单的坐标加减运算。

center <- 115

# 航线坐标计算中心距离

gcircles$long.reenter <- ielse(gcicles$long < center -

由于地图是图形数据,若是简单移动,地图会被切割,绘制时会出现图形变形等错误,故需要对地图数据进行再处理。该过程分为两步:

处理 1 :图形切割后,切割图形重分组。

处理 2 :重分组后,非闭合图形,闭合处理。

切割图形重分组算法

检查组内不同经度300度以上的坐标,作为极端值,然后对数据进行平均 。然后分别对极端值分组标号为一组,将低于300的坐标作为一组。

 

闭合曲线

分别计算世界点图每个航线的起始点 终点,和航线的曲线数据 . 找到曲线数据中不连续的数据即为没有闭合的曲线 , 然后 , 将断点数据重新赋值 , 进行连接 , 得到闭合的航线曲线 .

g <- rep(1, length(df[, longcol]))

  if (diff(rage(df[, lngcol])) > 300) {

   
    d <- df[, longcol] > mean(range(df[, longcol]))

开始写原始算法替换函数 世界地图重分组


 

#计算世界地图的经纬度的均值

worldmp.men <- agregate(x = wrldmap[, ("long.recenter")],
                           by = list(worldmap$group), FUN = mean)
 

#计算世界地图的经纬度的最小值

 

worldma.min <- aregate( = wrldmap[, c("longrecenter")],
                          by = list(worldmap$group), FUN = min)

 

#计算世界地图的经纬度的最大值

 

woldmap.ma <- aggregate(x worldmap[, c("long.recenter")],

                          by = list(wormap$group) FUN = max)

 

worldmap.md <- cbind(worldma.mea, worldap.in[,

                                                 2], worldap.max[, 2])

#给数据的变量名命名

colnames(worldmpmd) <- c("group", mean", "min" "max")

 

worldmapt <- join(x = worldmap, y = wolmap.md, b = c("group"))
# 闭合曲线

worlmap.rg <- orldmap.rg[order(woldm$goup.regroup,

                                 worldmap.rg$order), ]

最后得到世界航线的曲线和坐标 (wrld) 以及城市航线的坐标 (urb), 并使用geom_polygon和geom_line函数进行设置 . 其颜色 粗细等。最后使用ggplot函数进行绘制。


urb <- geom_polygon(aes(long.recenter, lat, group = group.regroup),

                    size = 0.3, color = "#FDF5E6", fill = "#FDF5E6",

                    alpha = 1, data = urbanareas.cp)

# 放大系数

bigmap <- 1

geom_polygon(aes(lon,lat,grop = group), size = 0.2,

               fill = '#f9f9', colou = 'grey6, data = worldmap) +

  geom_line(aes(long.recete,lat,grup = grop.regroup, clor = freq,

                alpha = freq), sie = 0.4, dat = gcicles.rg)

image.png


QQ截图20230122122556.png 最受欢迎的见解

1.R语言动态图可视化:如何、创建具有精美动画的图

2.R语言生存分析可视化分析

3.Python数据可视化-seaborn Iris鸢尾花数据

4.r语言对布丰投针(蒲丰投针)实验进行模拟和动态

5.R语言生存分析数据分析可视化案例

6.r语言数据可视化分析案例:探索brfss数据数据分析

7.R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图

8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

9.python主题LDA建模和t-SNE可视化

标签:航线,worldline,地图,library,航班信息,可视化,夜景,数据
From: https://www.cnblogs.com/tecdat/p/17166367.html

相关文章