Перетворення багатокутника в растр за допомогою R


15

Я намагаюся перетворити файл форми в растр в межах Р. Мій підхід полягає в тому, щоб прочитати в растрі так:

library(rgdal) # Loads SP package by default
demo <- readOGR('F:/data/', 'shapefile') # Creates a SpatialPolygonsDataFrame class (sp)

Це прекрасно працює, і я можу це зробити. Однак це великий файл файлів, і я хочу перетворити його в растр. Я спробував таке:

r <- raster(ncol=180, nrow=180)
Demo_ras = rasterize(r, demo, 'pop')  # pop is an integer here

Повідомлення про помилку:

Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "rasterize", for signature "RasterLayer", "SpatialPolygonsDataFrame"

Я трохи розгублений, який правильний порядок аргументів. Я також спробував це:

Demo_ras = rasterize(demo, r, 'pop')

Що призводить до наступної помилки:

Error in .polygonsToRaster(x, y, ...) : 
  polygon and raster have no overlapping areas

Хоча має сенс, що растр неможливо генерувати для області, яка не охоплює область SpatialPolygonsDataFrame, я не впевнений, яку інформацію мені потрібно вказати, щоб растр містив цю SpatialPolygonsDataFrameобласть.

Відповіді:


23

Функція rasterize () хоче мати спочатку форму (багатокутник), а потім растр за замовчуванням, отже, ваша перша помилка. Друга команда, яку ви показали, Demo_ras = rasterize(demo, r, 'pop')- це правильний шлях, але, як ви виявили, їй потрібні розширення!

Ви можете призначити відрізки растра для покриття тих же розрізів багатокутника:

extent(r) <- extent(demo)

... це має працювати для прикладу, який ви надали, доки "pop" - це правильна назва змінної в "demo". Нижче працювало наступне (R 2.14 / OSX), де AREA - стовпець реального числа в border.shp:

poly <- readOGR("/workingdirectory", "boundary") # does not work  with final slash '/' 
r <- raster(ncol=180, nrow=180)
extent(r) <- extent(poly)
rp <- rasterize(poly, r, 'AREA')

Побачила редагування та перевірила ще раз - остаточний нахил вперед мабуть на OSX, я вважаю, що це не для Windows? Варто знати!
Сімбамангу

хммм, у мене виникли проблеми з косою рисою обох ОСX і Windows .. не впевнений, використовуємо ми ту саму версію чи ні.
djq

OSX 10.7.2 / R 2.14 на шахті; безумовно, працює в будь-якому випадку. Що ви використовуєте?
Сімбамангу

Щоб автоматизувати перетворення, я написав це: github.com/brry/misc/blob/master/shp2raster.R
Беррі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.