2016-02-16 7 views
1

У меня есть шейп-файл, который я хотел бы расширить (в основном добавляя некоторые строки и столбцы NA). Есть ли какая-либо функция, которая делает это как raster::extend? К сожалению, это работает только для raster объектов.Как расширить «SpatialPolygonsDataFrame» до заданного размера

Я могу обрезать его, используя raster::crop, у которого есть метод для SpatialPolygonsDataFrame, но я не могу найти что-либо для продления.

+1

Не вполне удовлетворительное решение, но обычно мне проще преобразовать SpatialPolygonsDataFrame в обычный фрейм данных, используя 'fortify' из' ggplot2'. Оттуда вы можете расширить данные, однако вам нужны регулярные функции фрейма данных. Это также связано с бонусом, что результат легко понять с помощью 'ggplot' и его графических функций. – dmp

+0

Спасибо за комментарий. – newbie

+1

Вы можете легко добавить колонии NA, напрямую обратившись к слоту данных 'SpatialPolygonsDataFrame' следующим образом: spdf @ data, где spdf - ваш объект' SpatialPolygonsDataFrame', например. 'spdf @ data $ my_na' добавляет новый столбец под названием« my_na ». Что касается «строк», почему вы хотите добавить строки NA в объект 'SpatialPolygonsDataFrame'? Если вы просто хотите расширить пространственную протяженность, вы можете 'buffer()' в той степени, в которой вы хотите. – shekeine

ответ

1

Я нашел способ сделать это! Объем данных SpatialPolygons, похоже, хранится в слоте под названием bbox. Внутри слота (который вы можете получить доступ через [email protected]), вы найдете простую матрицу, как этот:

min max 
x -81 -80 
y 11 12 

Просто заменив эту матрицу с другой, который выглядит, как тот, который вы хотите получить изменит степень ваши SpatialPolygons. Вы можете даже использовать степень вашего другого многоугольника или растра, чтобы сделать матрицу:

[email protected] <- as.matrix(extent(my.raster)) 

Это не так аккуратно, как растр расширим ... но это работает так же :) Надеюсь, что это не слишком поздно!