R에서 SpatialPolygon을 래스터 화하는 방법은 무엇입니까?


10

{sp} 패키지의 '래스터 화'기능을 사용하여 세계 수심 측정 래스터 레이어에서 관심 영역의 수심 측정 값을 추출하려고합니다.

* 편집 : 내가 찾고있는 것보다 '추출'기능을 찾았습니다.

이것이 내가 지금까지 한 일입니다.

> class(subarea0) #This is my area of interest (Eastern Canadian Arctic Sea)
[1] "SpatialPolygons"
attr(,"package")
[1] "sp"

> extent(subarea0)
class       : Extent 
xmin        : -82.21997 
xmax        : -57.21667 
ymin        : 60.2 
ymax        : 78.16666

library(marelac)
data("Bathymetry")#World bathymetric data in library (marelac)
names(Bathymetry);class(Bathymetry);str(Bathymetry)
[1] "x" "y" "z"
[1] "list"
List of 3
 $ x: num [1:359] -180 -179 -178 -177 -176 ...
 $ y: num [1:180] -89.5 -88.5 -87.5 -86.5 -85.5 ...
 $ z: num [1:359, 1:180] 2853 2873 2873 2873 2873 ...

  raster_bath<-raster(Bathymetry)#Transformed into a raster layer
    extent(raster_bath) <- extent(subarea0)#Transform the extend of my raster to the extend of my SpatialPolygons

>ras_sub0<-rasterize(subarea0,raster_bath)#rasterize my SpatialPolygons (*Edits: not the function that I need here, but I am still interested to learn what results mean)
Found 2 region(s) and 10 polygon(s)
> plot(ras_sub0)
> plot(subarea0, add=TRUE)

여기에 이미지 설명을 입력하십시오

> ras_sub0
class       : RasterLayer 
dimensions  : 180, 359, 64620  (nrow, ncol, ncell)
resolution  : 0.06964709, 0.0998148  (x, y)
extent      : -82.21997, -57.21667, 60.2, 78.16666  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 
values      : in memory
min value   : 1 
max value   : 2 
layer name  : layer 

결과를 이해하지 못합니다. 각 다각형마다 두 가지 색상이 표시되는 이유는 무엇입니까? 그들은 무엇을 의미합니까?

수심 측량 깊이 윤곽을 어떻게 얻을 수 있습니까? 이것이 내 해상도 또는 치수 변경과 관련이 있습니까?

* 편집 : 좋아, 이제 다음을 수행했습니다.

v <- extract(raster_bath, subarea0)#Extract data from my Raster Layer for the locations of my SpatialPolygons

v는 목록이며 공간 다각형 으로이 정보를 리 바인드하는 방법 / 형식을 확실하지 않습니다 ...

감사합니다!


'수심계 깊이 윤곽선 얻기'라고 말하면 윤곽선도 생성 하시겠습니까?
Simbamangu

답변:


6

ras_sub0<-rasterize(subarea0,raster_bath)은 다각형의 색인 번호를 가져 와서 래스터의 값에 할당합니다.

다각형과 래스터의 교차점 만 원하는 경우 :

subarea0_bathy <- intersect(raster_bath, subarea0)

업데이트 : @GodinA가 지적했듯이 intersect ()가 때로는 다각형의 전체 범위를 가진 래스터를 반환하지 않는 것처럼 보입니다! 이 문제를 해결하려면 원본보다 약간 큰 래스터를 교차시킬 수 있습니다.

r2 <- raster() # create a generic raster
extent(r2) <- extent(subarea0) + 1 # add 1 degree of extent (0.5 each side)
r3 <- intersect(raster_bath, r2) 

@Simbamangu에게 감사합니다. "교차"명령을 시도했지만 subarea0_bathy와 내 공간 다각형 (subarea0)을 플롯 할 때 완전히 겹치지 않습니다. 왜 그렇습니까? 이전 질문에 대답하기 위해 그렇습니다. 나는 결국 수심 측정 윤곽을 갖고 싶습니다. 어떤 제안?
GodinA

예, 수심 측량 데이터와 탄자니아 다각형의 출력을 살펴본 결과 동일한 효과가 나타납니다. 위의 내 업데이트를 참조하십시오. 윤곽의 경우, 한 쉽게의 cont <- contour(r3)다음 lines(cont)큰 R 아닌가요?
Simbamangu

R은 환상적 일 수 있습니다! @ Simbamangu에게 감사드립니다. 그러나 깊이 윤곽선을 사용하여 Spatialpolygons 만 플로팅하고 싶습니다. SpatialPolygonsDataframe을 만들 수 있습니까? 교차를 사용하여 Spatialpolygons를 포함하는 전체 사각형에 대한 정보를 얻습니다. 어떻게 든 Spatialpolygons를 깊이 윤곽선과 결합해야하지만 어떻게 해야할지 잘 모르겠습니다. 이것이 바로 '추출'기능이 좋은 출발이라고 생각한 이유이지만, 공간 폴리곤과 어떻게 리 바인드 할 수 있는지 잘 모르는 깊이 목록으로 끝납니다 ... 어떤 아이디어? 다시 감사합니다!
GodinA

무엇을 끝내고 싶습니까? 하위 영역과 겹치는 윤곽선 (SpatialLines)? 이제 원래 질문을 넘어 서기 때문에 새로운 질문을 시작하고 싶을 수도 있습니다.
Simbamangu

예,이 정의 영역에 대한 깊이 윤곽선이있는 하위
GodinA

1

의 기본 하위 기능을 사용하는 또 다른 솔루션이 raster있습니다.

# create a raster with the dimensions that you are interested in.
r <- raster(extent(subarea0)+1) # +1 to increase the area
res(r) <- 0.1 # you can change the resolution here. 0.1 can be about 10x10 km if you are close to the equator.
crs(r) <- projection(subarea0) # transfer the coordinate system to the raster

# Now you can add data to the cells in your raster to mark the ones that fall within your polygon.
r[subarea0,] <- 1 # this an easy way to subset a raster using a SpatialPolygons object

# check your raster
plot(r)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.