R語言地理可視化:中國國內(nèi)航線航班信息統(tǒng)計、繪制分布夜景圖
全文鏈接:http://tecdat.cn/?p=31693
原文出處:拓端數(shù)據(jù)部落公眾號
最近,有一種說法:“中國經(jīng)濟發(fā)展的命脈就是石油和航線”。因此,航線的重要性不言而喻。
近年來,中國的航運業(yè)發(fā)展迅速,不僅帶來了經(jīng)濟效益和社會效益,也帶來了就業(yè)崗位。因此,我們有必要分析航線分布狀況。
為了更好地幫助客戶進行航運業(yè)務(wù)、航線設(shè)計、港口定位等決策研究,我們使用基于R語言地理信息系統(tǒng)的中國航線分布可視化。該方法利用地理信息系統(tǒng)的空間數(shù)據(jù)庫管理功能,對中國各航線進行統(tǒng)計和分析,并基于R語言統(tǒng)計分析工具,對分析結(jié)果進行可視化處理,生成中國航線的空間分布圖。
讀取地圖繪制所需的包
以下軟件包均是繪制地圖相關(guān)的 。
library(maptools)
library(ggplot2)
library(ggmap)
library(maps)
library(rgeos)
library(shapefiles)
library(geosphere)
library(plyr)
獲取地圖數(shù)據(jù)來源
航線、機場坐標(biāo)
機場:?airports.dat
航線:?routes.dat
板塊地圖、都市地圖
世界地圖:?ne_10m_admin_0_countries.shp
都市地圖:?ne_10m_urban_areas.shp

# 讀取都市地圖文件 讀取版圖地圖文件 ?urbanareasin <- readShapePoly("ne_0m_uranareas.shp") ?worldmapsin <- readShapePol("ne_1_admin_0_countries.shp") ?# 以下為格式轉(zhuǎn)化 ?worldmap <- fortifyworldapsin)
這一部分的主要工作是將shapefile文件轉(zhuǎn)化為R可以識別的格式,然后建立數(shù)據(jù)與地圖坐標(biāo)間的關(guān)聯(lián)。本文使用了航線頻數(shù)來計算地圖航線繪制的亮度。讀者根據(jù)需要可以自行關(guān)聯(lián)所需數(shù)據(jù),例如成本,平均成本,旅客人次等,以達到不同的研究目的。
# 開始抽取機場數(shù)據(jù) ?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條航線無標(biāo)識
?table(lineinworld)

summary(worldline)

統(tǒng)計部分國內(nèi)站點的出發(fā)的航班信息
#北京出發(fā)航班 ??head(worldline[worldline$AIRPORT_FROCODE=="PEK",] )

排序
e$AIRPORT_TOCDE)[2,], ?
????? decreasing = TRUE)))

北京到達航班
head(worldline[worldine$AIRPORT_TOCODE=="PEK",] )

上海出發(fā)航班
head(worldline[worlline$AIRPORTFROM_CODE=="SHA",] )

上海到達航班
head(worldline[worldline$AIRPOT_T_CODE=="SHA",] )

香港出發(fā)航班
head(worldline[worldline$ARPORT_FRO_CODE=="SHA",] )

地圖旋轉(zhuǎn)
這一步是對地圖進行坐標(biāo)變換,設(shè)置中國為世界中心,這里做了簡單的坐標(biāo)加減運算。
center <- 115# 航線坐標(biāo)計算中心距離gcircles$long.reenter <- ielse(gcicles$long < center -
由于地圖是圖形數(shù)據(jù),若是簡單移動,地圖會被切割,繪制時會出現(xiàn)圖形變形等錯誤,故需要對地圖數(shù)據(jù)進行再處理。該過程分為兩步:
處理 1?:圖形切割后,切割圖形重分組。
處理 2?:重分組后,非閉合圖形,閉合處理。
切割圖形重分組算法
檢查組內(nèi)不同經(jīng)度300度以上的坐標(biāo),作為極端值,然后對數(shù)據(jù)進行平均?。然后分別對極端值分組標(biāo)號為一組,將低于300的坐標(biāo)作為一組。
?
閉合曲線
分別計算世界點圖每個航線的起始點?終點,和航線的曲線數(shù)據(jù)?.?找到曲線數(shù)據(jù)中不連續(xù)的數(shù)據(jù)即為沒有閉合的曲線?,?然后?,?將斷點數(shù)據(jù)重新賦值?,?進行連接?,?得到閉合的航線曲線?.
g <- rep(1, length(df[, longcol]))
? if (diff(rage(df[, lngcol])) > 300) {
??
??? d <- df[, longcol] > mean(range(df[, longcol]))
開始寫原始算法替換函數(shù) 世界地圖重分組
?#計算世界地圖的經(jīng)緯度的均值worldmp.men <- agregate(x = wrldmap[, ("long.recenter")],
?????????????????????????? by = list(worldmap$group), FUN = mean)
?#計算世界地圖的經(jīng)緯度的最小值?
worldma.min <- aregate( = wrldmap[, c("longrecenter")],
????????????????????????? by = list(worldmap$group), FUN = min)
?#計算世界地圖的經(jīng)緯度的最大值?
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])#給數(shù)據(jù)的變量名命名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), ]
最后得到世界航線的曲線和坐標(biāo)?(wrld)?以及城市航線的坐標(biāo)?(urb),?并使用geom_polygon和geom_line函數(shù)進行設(shè)置?.?其顏色?粗細等。最后使用ggplot函數(shù)進行繪制。
urb <- geom_polygon(aes(long.recenter, lat, group = group.regroup),
??????????????????? size = 0.3, color = "#FDF5E6", fill = "#FDF5E6",
??????????????????? alpha = 1, data = urbanareas.cp)# 放大系數(shù)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)


?最受歡迎的見解
1.R語言動態(tài)圖可視化:如何、創(chuàng)建具有精美動畫的圖
2.R語言生存分析可視化分析
3.Python數(shù)據(jù)可視化-seaborn Iris鳶尾花數(shù)據(jù)
4.r語言對布豐投針(蒲豐投針)實驗進行模擬和動態(tài)
5.R語言生存分析數(shù)據(jù)分析可視化案例
6.r語言數(shù)據(jù)可視化分析案例:探索brfss數(shù)據(jù)數(shù)據(jù)分析
7.R語言動態(tài)可視化:制作歷史全球平均溫度的累積動態(tài)折線圖動畫gif視頻圖
8.R語言高維數(shù)據(jù)的主成分pca、 t-SNE算法降維與可視化分析案例報告
9.python主題LDA建模和t-SNE可視化