2010-06-25 4 views
2

Какие R-пакеты доступны для вычисления минимальной ограничивающей рамки для большого круга?Минимальный ограничивающий прямоугольник окружности на сфере

Например:

box <- polycirc(c(longitude, latitude), distance=35) 

Это возвращает ограничивающий прямоугольник для круга с радиусом 35 километров от центральной точки по координатам (на Земле). Где:

box.longitude_min = The longitude of the circle's western-most point. 
box.longitude_max = The longitude of the circle's eastern-most point. 
box.latitude_min = The latitude of the circle's southern-most point. 
box.latitude_max = The latitude of the circle's northern-most point. 

Что-то вроде этого уже должно существовать в R, но я не могу его найти. Ближайший я нашел (от SO), который я в настоящее время transmogrifying в R, является:

http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates

Кроме того, что это слово (если таковые имеются) для минимального ограничивающего прямоугольника окружности? (. Противоположность circumscribed)

+0

Существует также этот: http://stackoverflow.com/questions/1303265/algorithm-for-determining-minimum-bounding-rectangle-for-collection-of-lat-lon-co –

+0

Не могли бы вы использовать использование bbox() в пакете 'sp'? –

ответ

0

вверенную мне:

library(geosphere) 
    p <- c(longitude, latitude) 
    box <- apply(destPoint(p, c(0, 90, 180, 270), distance), 2, range) 
    print(box) 
0

Используйте функцию polycirc для создания точки окружности, а затем min и max основать рамку :)

require(pgirmess) 
circle <- polycirc(20, c(10, 20)) 
plot(circle, type = "l") 
rect(min(circle[,1]), min(circle[,2]), max(circle[,1]), max(circle[,2])) 
+0

Будет ли это работать для круга на поверхности сферы? (Пересечение полюсов или 180-го Меридиана?) И как бы вы использовали широту и долготу? –

+0

@ Дэйв Джарвис: Ооопс .... Я не правильно прочитал ваш вопрос (извините, был рано утром). Нет, это потребует некоторой настройки. – nico

+0

Не беспокойтесь. Я видел «polycirc» во время поиска, но уменьшал его (и многие другие подобные R-функции) за то, что не использовал сферическую поверхность. –