2013-02-20 2 views
8

전 세계의 지구 생태 지역에 대한 worldwildlife.org에서 다운로드 한 shapefile이 있습니다. 파일은 여기에로드 할 수 있습니다 : http://worldwildlife.org/publications/terrestrial-ecoregions-of-the-world.R에서 쉐이프 파일 - 래스터 변환?

표준 모양 파일로 제공되며 두 가지를하고 싶습니다. 첫째 : 내 로컬 디렉토리에서 Shape 파일을 가지고 내가 사용해야하는 확신 동부 북미 (내선 = 범위 (-95, -50, 24, 63))

# Read shapefile using package "maptools" 
eco_shp <- readShapeLines("F:/01_2013/Ecoregions/Global/wwf_terr_ecos.shp", 
          proj4string=CRS("+proj=utm +zone=33 +datum=WGS84")) 


# Set the desired extent for the final raster using package "raster" 
ext <- extent(-95, -50, 24, 63) 

의 정도에 클립 rasterize 함수는 "래스터"패키지에 있지만 여전히 제대로 작동하지 않습니다. 이 작업을 수행하는 방법에 대한 제안은 감사하겠습니다.

+0

당신은이 rasterised해야합니까? polygon으로 shapefile을 cliping하는 것이 충분합니까? – mnel

+0

Mnel : 다른 환경 레이어와 일치 시키려면 .asc 파일로 래스터 화해야합니다. –

+0

shapfile에 의한 클리핑의 첫 번째 단계는 도움이 될 것입니다. 그러면 새 오브젝트를 래스터 화하고 덜 집중적으로 사용할 수 있습니다. –

답변

11

공간 래스터 데이터의 경우 raster (sp 래스터 Spatial 클래스가 아닌)을 사용해야한다고 생각하는 것이 좋습니다. 또한 공간 벡터 데이터를 읽거나 쓰고 조작하는 데 maptools이 아닌 rgdal을 사용해야합니다.

이것은 당신이 시작할 수 있어야합니다

library(rgdal) 
library(raster) 

## Read in the ecoregion shapefile (located in R's current working directory) 
teow <- readOGR(dsn = "official_teow/official", layer = "wwf_terr_ecos") 

## Set up a raster "template" to use in rasterize() 
ext <- extent (-95, -50, 24, 63) 
xy <- abs(apply(as.matrix(bbox(ext)), 1, diff)) 
n <- 5 
r <- raster(ext, ncol=xy[1]*n, nrow=xy[2]*n) 

## Rasterize the shapefile 
rr <-rasterize(teow, r) 

## A couple of outputs 
writeRaster(rr, "teow.asc") 
plot(rr) 

enter image description here

+0

감사합니다. Josh O'Brien, 코드가 잘 작동하는 것 같습니다! :) –

+1

듣기 좋게. 실제로 래스터 레이어 중 하나를 템플릿 래스터 ('rasterize (teow, r)'에서'r')로 사용하고 싶은 경우 proj4strings을 얻으려면 약간의 연습을해야 할 수도 있습니다 (** 래스터 ** 및 ** rgdal ** 모두 프로젝션 메타 데이터를 처리하는 데 정말 유용합니다.). –

+1

큰 데이터 세트에서는 rasterize()가 불안정하고 비효율적 인 것으로 나타났습니다. 나는 최근에 6 피트 해상도 (출력은 14 MB GeoTIFF 파일, 8095 x 14819)의 시애틀 도시를 래스터 화하려고 시도했으며 R은 출력이없고 오류 메시지가 없으면 "완료"하기 전에 7 개의 스레드를 실행하는 데 약 3 시간을 보냈습니다. . R을 사용하여 원하는 범위와 해상도의 빈 GeoTIFF 래스터를 생성 한 다음 gdal (QGIS의 도움으로)을 통해 래스터 라이즈 작업을 실행하면 단일 스레드에서 30 분 이내에 완료됩니다. –

관련 문제