2014-09-03 3 views
0

친애하는 사람들이 stackoverflow.for 루프의 R에있는 다각형의 면적 계산

SPDF의 각 다각형의 면적을 계산하려고합니다. 나는 데이터를 입력하고 영역 목록을 가져올 수있는 함수를 만들기 위해 노력하고 있습니다. 나는 내 폴리곤의 모든 영역을 반환하는 for 루프를 작성해야한다. 한 폴리곤의 표면 계산을 위해 다음 코드가 작동합니다 :

surfacefirstpolygon <- gArea(inputSPDF[1,1]) 

이 코드는 다음 코드를 실행할 때 i를 하나씩 출력합니다.

polys <- slot(inputSPDF,"polygons") 
for(i in 1:length(polys)){ 
    print(i) 
} 

은 그 때 나는 다음을 수행하여 for 루프에 함께 이러한 코드 조각을 넣어보십시오 :

polys <- slot(inputSPDF,"polygons") 
areasofpolygons <- for(i in 1:length(polys)){ 
    gArea(inputSPDF[i,i]) 
} 

이 작동하고 나에게 다음과 같은 오류를 제공하지 않습니다. is.projected (spgeom)에

오류 'is.projected'기능 선택 방법에 'obj와'인수 평가할 오류 : [.data.frame에서 오류 (@ X의 데이터를, I, J, ... drop = FALSE) : 정의되지 않은 열이 선택되었습니다.

아무 잘못 알지 못합니다. =

dd = dim(inputSPDF) 
for(i in 1:dd[1]){ 
    areasofpolygons[i] <- gArea(inputSPDF[i,1]) 
} 
+0

나는 목록이 서로의 아래에 놓을 수 없기 때문에 그것이라고 생각했다. 그래서 나는 또한 작동하지 않는 다음을 시도했다 : test <- list() for i (1 in : polys)) { test [i] <- gArea (gem_ned_LAEA [i, i]) } – Zuenie

+0

'data'와'grea' 란 무엇입니까? 이것은 재현 할 수 없습니다! BTW : 당신이하려고하는 방식으로 R에 목록 이해 메커니즘이 없습니다. 그런 것을 실현하기 위해 [적용 기능] (http://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/)을보십시오. –

+0

데이터가 제 입력 데이터이고 gArea는 다각형의 표면을 계산하는 패키지 rgeos의 함수입니다. 적용 링크 주셔서 감사합니다. 그것을 지금 보게 될 것이다. 재현성에 관해서 : 저는 SpatialPolygonDataFrame으로 작업하고 있습니다. 처음부터 하나를 만드는 것은 쉽지 않습니다. 내가 물어 본 또 다른 질문에서 내 스크립트를 보관 용 계정에 연결하고 사람들이 보관 용 계정에서 내 shapefile을 다운로드하도록 허용했습니다. 그렇다면 안전하지 않을 수 있다는 의견을 받았습니다. 나는 그것을 더 나은 재현성있는 스크립트로 만드는 방법을 모른다. – Zuenie

답변

1

시도

결과 :

dd = dim(inputSPDF) 
for(i in 1:dd[1]) for(j in 1:dd[2]){ 
     areasofpolygons[length(areasofpolygons)+1] = gArea(inputSPDF[i,j]) 
    } 
areasofpolygons 

질문에서 설명한 오류 아마가 치수 ("미정 열 선택")를 초과하는 것을 나타낸다. 또한 [i, i]가 사용되면 동일한 행과 열 번호 만 액세스됩니다.

+1

좋은 답변을 얻으려면이 코드의 용도와 방법에 대한 의견을 추가하십시오. –

+1

몇 가지 정보를 추가했습니다. @ Zuenie의 피드백도 환영합니다. – rnso

+0

이 줄을 실행하면 꽤 오래 (5 분 정도) 실행 된 다음 빈 areasofpolygons를 반환합니다. 오류를 반환하지 않습니다. 하지만 이미 도와 줘서 고마워!나는 왜 첫 번째 대본에서도 열 수가 잘못 될지 이해하지 못한다. – Zuenie