2012-10-16 44 views
2

我正在嘗試使用RgoogleMaps保存帶有覆蓋png文件的點的地圖。 我能夠在繪圖設備中成功創建地圖和疊加點,但無法弄清楚如何將點寫入我的地圖的PNG文件。RgoogleMaps PlotOnStaticMap不向png文件添加點

我在Mac OS X Lion的10.7.5 [R版本2.15.0

來自R docs使用示例代碼中,我得到了相同的結果:我開的打印設備上線,但不能寫入PNG文件。

這裏是我使用的示例代碼:

lat = c(40.702147,40.718217,40.711614); 
lon = c(-74.,-74.015794,-73.998284); 
center = c(mean(lat), mean(lon)); 
zoom <- min(MaxZoom(range(lat), range(lon))); 
#this overhead is taken care of implicitly by GetMap.bbox();    
MyMap <- GetMap(center=center, zoom=zoom,markers = '&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.&markers=color:red|color:red|label:C|40.718217,-73.998284', destfile = "MyTile1.png"); 

tmp <- PlotOnStaticMap(MyMap, lat = c(40.702147,40.711614,40.718217), lon = c(-74.015794,-74.,-73.998284), destfile = "MyTile1.png", cex=1.5,pch=20,col=c('red', 'blue', 'green'), add=FALSE); 
#and add lines: 
PlotOnStaticMap(MyMap, lat = c(40.702147,40.711614,40.718217), lon = c(-74.015794,-74.,-73.998284), lwd=1.5,col=c('red', 'blue', 'green'), FUN = lines, add=TRUE) 

我知道,巴設備是否正常工作,因爲這工作:

png('my.png') 
plot(seq(1:10)) 
dev.off() 

感謝您的幫助。

回答

1

要添加點和線爲PNG使用PlotOnStaticMap一個可能需要顯式設置類型=「開羅與巴新」的文件的東西在調用PlotOnStaticMap之前繪製設備。在我的機器在我的[R環境工作的:

png('MyTile1.png',type='cairo-png') 
dev.cur() 
png 3 # returned value 

但這並不

png('MyTile1.png') 
dev.cur() 
quartz_off_screen 2 # returned value 

下面的代碼寫點和線MyTile1.png:

lat = c(40.702147,40.718217,40.711614); 
lon = c(-74.,-74.015794,-73.998284); 
center = c(mean(lat), mean(lon)); 
zoom <- min(MaxZoom(range(lat), range(lon)));    

MyMap <- GetMap(center=center, zoom=zoom,markers = '&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.&markers=color:red|color:red|label:C|40.718217,-73.998284') 

# explicitly set device to png with type='cairo-png' 
png('MyTile1.png',type='cairo-png')  
# add points    
tmp <- PlotOnStaticMap(MyMap, lat = c(40.702147,40.711614,40.718217), lon = c(-74.015794,-74.,-73.998284), cex=1.5,pch=20,col=c('red', 'blue', 'green')); 
#and add lines: 
PlotOnStaticMap(MyMap, lat = c(40.702147,40.711614,40.718217), lon = c(-74.015794,-74.,-73.998284), lwd=1.5,col=c('red', 'blue', 'green'), FUN = lines, add=TRUE) 
dev.off() 
0

你可以按照你的最後一行與

dev.print(png, width = 800, file = "MyTile2.png") 

或類似

+0

感謝響應。是的,這個和/或dev.copy()可以用於交互式會話,但我正在試圖將這個腳本運行在無頭服務器上,所以我希望能夠直接寫入png。 Thx再次。 – glynnsc