r - R在PlotOnStaticMap上绘制多个轨道
问题描述
这是生成航班图的示例代码,一次一个航班。如何修改代码以在一个绘图上生成所有四个航班?可以添加不同颜色的图例吗?
df <- data.frame(ICAO = c("A00050", "A00050", "A0020A", "A0020A", "A01021", "A01021", "A011AC", "A011AC"), ctime = as.POSIXct(x=c(1525202775.476, 1525202948.119, 1525178454.322, 1525179000.436, 1525181853, 1525182442.667, 1525204759.544, 1525205007.605), origin = "1970-01-01",tz = "US/Eastern"), Lat = c(38.887207, 39.099923, 38.700256, 39.098923, 38.700348, 39.097874, 38.700989, 39.0932), Long = c(-76.79933, -76.405518, -76.011538, -75.264946, -76.740457, -75.671875, -76.237, -75.8515))
library(spacetime)
library(adehabitatLT)
library(RgoogleMaps)
d <- df[df$ICAO == df$ICAO[1], ] # Can use 1, 3, 5, and 7 to get the four flights
coordinates(d) <- ~Long+Lat
proj4string(d) <- CRS("+proj=longlat +datum=WGS84")
## convert to a STTDF class:
gpx.ltraj <- as.ltraj(coordinates(d), d$ctime, id = "th")
gpx.st <- as(gpx.ltraj, "STTDF")
## Google maps plot:
llc <- c(mean(gpx.st@sp@bbox[2,]), mean(gpx.st@sp@bbox[1,]))
MyMap <- GetMap.bbox(center=llc, zoom=8, destfile="map.png")
PlotOnStaticMap(MyMap, lat=gpx.st@sp@coords[,2], lon=gpx.st@sp@coords[,1], FUN=lines, col="black", lwd=4)```
解决方案
这是一些在循环中添加行的示例代码。请注意,第二次飞行似乎绘制在第一次飞行之上,因此第一次飞行不可见。可以根据需要更改颜色和图例标签。
df <- data.frame(ICAO = c("A00050", "A00050", "A0020A", "A0020A", "A01021", "A01021", "A011AC", "A011AC"), ctime = as.POSIXct(x=c(1525202775.476, 1525202948.119, 1525178454.322, 1525179000.436, 1525181853, 1525182442.667, 1525204759.544, 1525205007.605), origin = "1970-01-01",tz = "US/Eastern"), Lat = c(38.887207, 39.099923, 38.700256, 39.098923, 38.700348, 39.097874, 38.700989, 39.0932), Long = c(-76.79933, -76.405518, -76.011538, -75.264946, -76.740457, -75.671875, -76.237, -75.8515))
library(spacetime)
library(adehabitatLT)
library(RgoogleMaps)
for(i in c(1,3,5,7)){
d <- df[df$ICAO == df$ICAO[i], ] # Can use 1, 3, 5, and 7 to get the four flights
coordinates(d) <- ~Long+Lat
proj4string(d) <- CRS("+proj=longlat +datum=WGS84")
## convert to a STTDF class:
gpx.ltraj <- as.ltraj(coordinates(d), d$ctime, id = "th")
gpx.st <- as(gpx.ltraj, "STTDF")
## Google maps plot:
llc <- c(mean(gpx.st@sp@bbox[2,]), mean(gpx.st@sp@bbox[1,]))
MyMap <- GetMap.bbox(center=llc, zoom=8, destfile="map.png")
PlotOnStaticMap(MyMap, lat=gpx.st@sp@coords[,2]
, lon=gpx.st@sp@coords[,1], FUN=lines
, col=c("black",'blue','red','gray')[(i+1)/2]
, lwd=4
,add=ifelse(i==1,F,T))
}
legend('topright'
,legend=df$ICAO[c(1,3,5,7)]
,lwd=4
,col=c("black",'blue','red','gray')
,lty=1)
推荐阅读
- swift - 一种声明 Swift 字典类型的方法,其中包含许多类型,包括嵌入式字典
- javascript - Markdown 强调的正则表达式
- react-native - TypeError 对象不是构造函数(评估 new_pubnubReact.default')
- typescript - 错误 Promise.all() 属性不可分配给参数
- web-services - 我无法使用 webserviced + IIS 上传大于 35 MB aprox 的文件
- python - 在 Django 中的模板渲染(NoReverseMatch)期间出错
- javascript - HTML5 video.currentTime 仅对某些用户返回 NaN
- python - 将字典列表与每个列表中可变数量的字典进行比较
- javascript - 无法在 D3 中渲染气泡图
- python - 使用 Numpy 获得第一个主成分并减少 PCA 的方差