Chuyển đổi đa giác thành raster bằng R


15

Tôi đang cố gắng chuyển đổi một shapefile thành một raster trong R. Cách tiếp cận của tôi là đọc trong raster như sau:

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

Điều này hoạt động tốt, và tôi có thể vẽ nó. Tuy nhiên nó là một shapefile lớn và tôi muốn chuyển đổi nó thành một raster. Tôi đã thử như sau:

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

Thông báo lỗi:

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

Tôi hơi bối rối đó là thứ tự đúng của các đối số. Tôi cũng đã thử điều này:

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

Kết quả nào xảy ra lỗi sau:

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

Mặc dù có ý nghĩa rằng raster không thể được tạo cho một khu vực không bao gồm SpatialPolygonsDataFrame, nhưng tôi không chắc chắn tôi cần chỉ định thông tin gì để raster nên chứa SpatialPolygonsDataFramekhu vực đó.

Câu trả lời:


23

Hàm rasterize () muốn có hình dạng (đa giác) trước sau đó là raster theo mặc định, do đó lỗi đầu tiên của bạn. Lệnh thứ hai bạn đã hiển thị Demo_ras = rasterize(demo, r, 'pop')là cách chính xác, nhưng khi bạn phát hiện ra nó cần các mức độ phù hợp!

Bạn có thể chỉ định các phạm vi của raster để bao gồm cùng các phạm vi của đa giác:

extent(r) <- extent(demo)

... cái này sẽ hoạt động với ví dụ bạn đã cung cấp, miễn là 'pop' là tên chính xác của một biến trong 'demo'. Phần sau chỉ hoạt động ngay bây giờ (R 2.14 / OSX), trong đó DIỆN là một cột số thực trong ranh giới.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')

Xem bản chỉnh sửa của bạn và kiểm tra lại - dấu gạch chéo chuyển tiếp cuối cùng rõ ràng là tùy chọn trên OSX, tôi có dùng nó không với Windows không? Đáng để biết!
Simbamangu

hmmm, tôi gặp vấn đề với dấu gạch chéo trên cả OSX và Windows .. không chắc chúng ta có sử dụng cùng một phiên bản hay không.
djq

OSX 10.7.2 / R 2.14 trên mỏ; chắc chắn hoạt động một trong hai cách. Bạn đang dùng gì?
Simbamangu

Để tự động hóa chuyển đổi, tôi đã viết bài này: github.com/brry/misc/blob/master/shp2raster.R
Berry
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.