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.