2011-12-10 25 views
6

Trong R, sử dụng gói bản đồ và chức năng gcIntermediate, làm thế nào để vẽ đường thẳng giữa hai quốc gia? Nó cần thời gian dài, nhưng tôi không chắc mình nên cung cấp những gì cho các quốc gia (nói rằng tôi muốn vẽ một đường giữa Hoa Kỳ và Thụy Điển)Gói bản đồ R - cách vẽ đường giữa các quốc gia?

Trả lời

8

Có nhiều bản đồ bạn có thể sử dụng, tùy thuộc vào thông tin nào/detail/etc. bạn cần, nhưng đối với này rất đẹp wrld_simpl sẽ làm tốt:

library(maptools) 
library(geosphere) 

data(wrld_simpl) 

US_lat = wrld_simpl$LAT[wrld_simpl$NAME == 'United States'] 
US_lon = wrld_simpl$LON[wrld_simpl$NAME == 'United States'] 

SWE_lat = wrld_simpl$LAT[wrld_simpl$NAME == 'Sweden'] 
SWE_lon = wrld_simpl$LON[wrld_simpl$NAME == 'Sweden'] 

points = gcIntermediate(c(US_lon, US_lat), c(SWE_lon, SWE_lat), 100) 

dev.new(width=6, height=4) 
plot(wrld_simpl) 
lines(points, col='red') 

enter image description here

+0

Nice! Tôi đang làm điều đó với các đường từ nhiều quốc gia đến Brazil. Đối với một số quốc gia sau ~ 120 độ Đông (như Úc, New Zealand, Nhật Bản ...) các đường đi về phía đông, trở thành eo biển, đi tất cả 360 độ sang phía bên kia của màn hình, và sau đó tiếp tục đường tròn của nó. Bất kỳ cách nào để giải quyết điều đó? – Rodrigo

Các vấn đề liên quan