R - как получить плавную кривую между двумя точками? - PullRequest
3 голосов
/ 11 декабря 2011

Я пытаюсь нарисовать линию между двумя городами на карте мира, используя R (используя map и wrld_simpl).

Как мне получить плавную линию между двумя точками?Если я проведу линию между США и Австралией, у нее будет три разных сегмента

require(rworldmap)

map("world", col="#f2f2f2", fill=TRUE, bg="white", lwd=0.05)

data(wrld_simpl)

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

australia_lat = wrld_simpl$LAT[wrld_simpl$NAME == 'Australia']
australia_lon = wrld_simpl$LON[wrld_simpl$NAME == 'Australia']

lines(c(US_lon, US_lat), c(australia_lon, australia_lat))

. Это рисует линию, но не правильно между aus и US.что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 11 декабря 2011

Метод lines принимает вектор x x-координат и y y-координат. Поэтому ваша строка должна выглядеть так:

lines(c(US_lon, australia_lon), c(US_lat, australia_lat))

Если вы хотите большой круг, сработает следующее:

require(geosphere)
gc <- gcIntermediate(c(US_lon, US_lat), c(australia_lon, australia_lat), breakAt=TRUE, n=1000)
invisible(lapply(gc, lines, col='red', lwd=2))
1 голос
/ 17 ноября 2015

Вы также можете нарисовать «кривую», используя grid.curve ():

grid.curve(US_lon, australia_lon, US_lat, australia_lat)

... и вы можете определить «вид» кривой.

...