Akan Veriler great circle mapping tutorial'da öğrendiğim bazı şeyleri aldım ve R eğrileri trans-ekvator büyük çevreleri olduğunda garip şeylerin olmasını önlemek için yorumlarda bağlantılı kodla birleştirdim. Bu bana verir bu:Büyük daire harita üretimini otomatikleştirme R
airports <- read.csv("/home/geoff/Desktop/DissertationData/airports.csv", header=TRUE)
flights <- read.csv("/home/geoff/Desktop/DissertationData/ATL.csv", header=TRUE, as.is=TRUE)
library(maps)
library(geosphere)
checkDateLine <- function(l){
n<-0
k<-length(l)
k<-k-1
for (j in 1:k){
n[j] <- l[j+1] - l[j]
}
n <- abs(n)
m<-max(n, rm.na=TRUE)
ifelse(m > 30, TRUE, FALSE)
}
clean.Inter <- function(p1, p2, n, addStartEnd){
inter <- gcIntermediate(p1, p2, n=n, addStartEnd=addStartEnd)
if (checkDateLine(inter[,1])){
m1 <- midPoint(p1, p2)
m1[,1] <- (m1[,1]+180)%%360 - 180
a1 <- antipode(m1)
l1 <- gcIntermediate(p1, a1, n=n, addStartEnd=addStartEnd)
l2 <- gcIntermediate(a1, p2, n=n, addStartEnd=addStartEnd)
l3 <- rbind(l1, l2)
l3
}
else{
inter
}
}
# Unique months
monthyear <- unique(flights$month)
# Color
pal <- colorRampPalette(c("#FFEA00", "#FF0043"))
colors <- pal(100)
for (i in 1:length(monthyear)) {
png(paste("monthyear", monthyear[i], ".png", sep=""), width=750, height=500)
map("world", col="#191919", fill=TRUE, bg="black", lwd=0.05)
fsub <- flights[flights$month == monthyear[i],]
fsub <- fsub[order(fsub$cnt),]
maxcnt <- max(fsub$cnt)
for (j in 1:length(fsub$month)) {
air1 <- airports[airports$iata == fsub[j,]$airport1,]
air2 <- airports[airports$iata == fsub[j,]$airport2,]
p1 <- c(air1[1,]$long, air1[1,]$lat)
p2 <- c(air2[1,]$long, air2[1,]$lat)
inter <- clean.Inter(p1,p2,n=100, addStartEnd=TRUE)
colindex <- round((fsub[j,]$cnt/maxcnt) * length(colors))
lines(inter, col=colors[colindex], lwd=1.0)
}
dev.off()
}
tüm zamanlanmış ticari yolları içeren büyük bir veri kümesi için haritaların üretimini otomatik hale getirmek istiyorum - dummy sample - (airports.csv bağlantılıdır küresel ağda ATL ve diğer havaalanları arasında paylaşılan Akan Veri gönderisinde). Tercihen, Atlanta havaalanı ağ alanındaki değişiklikleri gösteren kısa bir videoda çerçeve olarak kullanacağım ayda bir harita üretecektim.
Sorun: Döngüyü, her bir çalıştırdığım her seferde tek bir PNG'den daha fazlasını üretmek için alamıyorum. Oldukça eminim ki, Aaron Hardin'in kodu, Akan Veriler eğitiminde kullanıldığı şekliyle otomasyonu “kırar”. Üç gün boyunca onunla uğraştıktan sonra ve her ne kadar alakalı bir şeyi takip edersek, bir diğeriyle uzlaşmak için pirzolalarımın eksik olduğunu anlıyorum. İşlemi otomatikleştiren biri var mı?
Sizin için bir tez onayı var!
çağrınızda tam yolunu ve dosya adını kullanmak Sen bir sürü kod göstermektedir. Hala çalışmayan bir * minimal * örnek yapmaya çalışın. Örneğin, çok basit bir dizi grafik çizen basit bir döngü yapın. Daha da basit, her bir döngü basitçe 'i 've' monthyear [i] 'değerini yazsın. İşlemde bahse girerim, hatayı bulacaksınız. Değilse, * minimal * örneği gönderin ve birileri size yardımcı olabilir. – Andrie
Çıktı formatı olarak pdf() 'yi kullanabilir ve ana etiketi olarak ayyıl kullanabilmektesiniz; bu sayede, döngüde her seferinde dosya çıkış bağlantısını açıp kapatmanız gerekmez. – mzuba
@mzuba Evet, ancak her arsa için bir dosya yerine, yalnızca tek bir pdf dosyası alırsınız. İyi düşünülmüş bir cevap için – Andrie