2012-09-03 2 views
0

모양 파일 (northsea에 다른 퇴적물 클래스를 표시 함)은 readOGR()으로 표시됩니다. 많은 폴리곤에 "무엇을해야합니까"라는 구멍을 많이 가지고 있지만 rasterize()을 사용하면 구멍이 슬롯에 TRUE으로 표시되지 않으므로 모든 구멍이 제거됩니다. rasterize(...,fun='first')을 사용하여 성공하지 못했습니다. 그럼에도 불구하고, QGIS는 모든 구멍을 멋지게 보여줍니다. 또한, over() 제대로 아마 내가 뭔가 해낸 이유 슬롯 "플롯 주문"을 활용 구멍에, 예를 들어, 필드 값을 평가 :구멍이 있지만 구멍 구멍이 틀린 ESRI 모양 파일

for (i in 1:ncell(raster)){ 
    coo<-xyFromCell(raster,i,spatial=T) 
    col<-colFromX(ra,[email protected][1,1]) 
    row<-rowFromY(ra,[email protected][1,2]) 
    proj4string(coo)<-proj4string(shape) 
    n<-over(coo,shape) 
    raster[col,row]<-n$Prime_FOLK 
} 

래스터 우회하는, 그러나 걸릴 것입니다 끝나야 할 50 일. 그래서 여기에 내 질문에

:

사람이 비슷한 일을 경험하고 이에 대한 해결 방법을 발견 했습니까?

(내가 좋아하는 것, 예 데이터를 포함하지만 dput()는 SpatialPolygons 실패?!?)

답변

1

예. 올바르게 지정하지 않았기 때문에 구멍을 제대로 래스터 화하지 못하는 것과 같은 문제가 있습니다. 내가 사용한 셰이프 파일의 경우 첫 번째 다각형은 항상 주 다각형이고 두 번째 다각형은 항상 구멍입니다. 이것이 사실이 아니라면 상황에 따라 작동하지 않을 수 있습니다. 다음은 모든 비 첫 번째 다각형을 구멍으로 변환하기 위해 작성한 코드입니다. T :

## poly.dat is the SpatialPolygonsDataFrame 

fix.holes<-function(poly.dat){ 
    n.poly.all<-numeric() 
    for (k in 1:nrow([email protected])){ 
    n.poly.all[k]<-length([email protected][[k]]@Polygons) 
    } 
    has.hole<-which(n.poly.all>1) 
    n.poly<-n.poly.all[has.hole] 

    for (k in 1:length(has.hole)){ 
    for (m in 2:n.poly[k]){ 
     [email protected][[has.hole[k]]]@Polygons[[m]]@hole<-T 
    } 
    } 
    return(poly.dat) 
} 
+0

이 내용을 확인하고보고 해 보겠습니다. 고맙다. – Janhoo

관련 문제