R: построение радиального расстояния от точки на шейп-файле карты мира

Как и в моем предыдущем вопросе здесь, скажем, я рисую страны на карте мира. с помощью картографических инструментов, если бы я построил страну, есть ли способ найти центральную точку этой страны и нанести радиальное расстояние от этой точки? Я использую шейп-файл wrld_simpl, который поставляется с maptools, поэтому, если я рисую Германию:

 plot(wrld_simpl[wrld_simpl$NAME=='Germany',], col='red', add=T)

Я хотел бы найти центр Германии и построить круг из этой точки, который показывает любую область, которая находится в пределах, скажем, 100-километрового расстояния. Опять же, я хочу иметь возможность сделать это для множества разных стран, поэтому в идеале мне нужно общее решение, а не конкретное для Германии.


person userk    schedule 15.08.2013    source источник


Ответы (1)


Это частичный ответ. Приведенный ниже фрагмент кода вычисляет центроид многоугольника, поэтому, если вы можете извлечь данные о вершинах многоугольника для интересующей вас страны, это даст вам «центр», после которого можно легко нарисовать круг. (polyx и polyy — векторы x- и y-координат

require(pracma)
pchit <- polyarea(polyx,polyy)
centx <- centy <- 0
    for (kk in 1:(length(polyx)-1) ) {
        centx <- centx + (polyx[kk]+polyx[kk+1]) * (polyx[kk]*polyy[kk+1]-polyx[kk+1]*polyy[kk])
        centy <- centy + (polyy[kk]+polyy[kk+1]) * (polyx[kk]*polyy[kk+1]-polyx[kk+1]*polyy[kk])
    }
    centx <- -1/pchit/6 * centx
    centy <- -1/pchit/6 * centy
person Carl Witthoft    schedule 15.08.2013
comment
Спасибо за совет. Я добавлю в пакет векторизованную форму этой функции как polycenter(). -1 кажется неправильным. Есть ссылка на эту формулу? - person Hans W.; 22.08.2013
comment
Я изменил polyarea, который теперь возвращает истинную (ориентированную) площадь, а не ее абсолютное значение. Это означает, что -1 больше не нужен. - person Hans W.; 22.08.2013
comment
@HansWerner Извинения - вы имели в виду знак минус в последних двух строках, верно? Да, они исчезают в зависимости от порядка вершин. - person Carl Witthoft; 22.08.2013