2016-04-18 7 views
0

Очень часто процедура заключается в преобразовании линий и границ в SpatialPolygons объектов с использованием функции Polygon из зр пакета. Но возможно ли преобразовать другие классы объектов в SpatialPolygons? Я использую функцию circles от dismo, чтобы создать окружность с определенным радиусом расстояния от известной пространственной точки. Эта функция возвращает объект класса CirclesRange.Transform CircleRange в SpatialPolygon в R

circ<-circles(spcoords,d=100000) 

class(circ) 
[1] "CirclesRange" 
attr(,"package") 
[1] "dismo" 

Когда я пытаюсь преобразовать объект в CirclesRangeSpatialPolygons, возникает следующая ошибка:

Error: is.integer(pO) is not TRUE 

Тогда я искал другие способы преобразования этого объекта, но я не был успешным. Я думаю, что сначала нужно преобразовать «circ» в другой класс, а затем попытаться преобразовать его в SpatialPolygons, но я не могу найти информацию об этом.

ответ

2

Посмотрите на str(circ), нужный объект SpatialPolygons уже является частью созданного объекта. Вам просто нужно запустить [email protected], чтобы извлечь многоугольник. Вот пример кода, основанного на наборе данных meuse.

## sample data 
data(meuse) 
coordinates(meuse) <- ~ x + y 
proj4string(meuse) <- CRS("+init=epsg:28992") 

## circle around the first 'meuse' feature (top-right corner) 
circ <- circles(meuse[1, ], d = 1000, lonlat = FALSE) 

poly <- [email protected] 
proj4string(poly) <- proj4string(meuse) 

## display data 
library(latticeExtra) 

spplot(meuse, "elev", scales = list(draw = TRUE), 
     col.regions = topo.colors(100), key.space = "right") + 
    as.layer(spplot(poly, fill = "transparent", lwd = 2)) 

spplot

+2

fdetsch прав! Однако, если вы не против использования другого пакета, функция 'gBuffer' из' library (rgeos) 'делает то же самое в' library (dismo) ', но возвращает объект класса' SpatialPolygons'. Используя 'data (meuse)', как было предложено @fdetsch, это будет: 'poly <- gBuffer (meuse [1,], width = 1000)' –

 Смежные вопросы

  • Нет связанных вопросов^_^