2017-12-18 15 views
0

값 :좌표에서 래스터를 생성하고 I는 다음과 같은 정보가 저장되어있는 data.frame이

  • X1 - 시간 (godzina)

-

  • X2 데이터

    그리고 위에서 언급 한 데이터의 경우 Punkt (1,1), Punkt (1,2)라는 열이 있는데 여기에서 두 번째 행은 중심 값 (예 : 19.65,49.5)과 강우량을 찾을 수 있습니다.

    Data <- structure(list(X1 = c("data", "20140509", "20140509", "20140509", 
    "20140509", "20140509", "20140509", "20140509", "20140509", "20140509", 
    "20140509", "20140509", "20140509", "20140509", "20140509"), 
    X2 = c("godzina", "0", "1", "2", "3", "4", "5", "6", "7", 
    "8", "9", "10", "11", "12", "13"), `Punkt(1,1)` = c("19.55,49.5", 
    "0", "0", "0", "0", "0", "0", "0", "0", "0", "0.25", "0", 
    "0", "0.01", "0"), `Punkt(1,2)` = c("19.55,49.55", "0", "0", 
    "0", "0", "0", "0", "0", "0", "0", "0.4", "0", "0", "0.01", 
    "0"), `Punkt(1,3)` = c("19.55,49.6", "0", "0", "0", "0", 
    "0", "0", "0", "0", "0", "0.3", "0", "0", "0", "0")), .Names = c("X1", 
    "X2", "Punkt(1,1)", "Punkt(1,2)", "Punkt(1,3)"), row.names = c(NA, 
    15L), class = "data.frame") 
    

    나의 목표는 모든 포인트와 날짜 - 시간에 대해 래스터를 만들고 매 시간마다 하나의 단일 래스터를 만드는 것입니다.

    지금까지 나는 단일 지점에서 작업을 수행했습니다. 열에서 모든 래스터 셀의 범위를 얻기 위해 나는 다음과 같은 계산을 수행해야합니다

    Rainfall = as.numeric(Data[,3][11]) 
    

    을 그리고 내가 만들 수 있습니다

    Coordinates = Data[1,][3] 
    xmin = as.numeric(substr(Coordinates, 1,5)) - 0.025 
    xmax = as.numeric(substr(Coordinates, 1,5)) + 0.025 
    ymin = as.numeric(substr(Coordinates, 7,11)) - 0.025 
    ymax = as.numeric(substr(Coordinates, 7,11)) + 0.025 
    

    내가 강우 속도를 정의해야합니다 (의 긍정적 인 일을 해보자) 래스터 파일 :

    r1 <- raster(nrows=1, ncols=1, xmn=xmin, xmx=xmax, ymn=ymin, ymx=ymax) 
    r1 <- setValues(r1, Rainfall) 
    plot(r1) 
    

    아무도 도와 줄 수 있습니까?

  • 답변

    1

    포인트는 (여가 :)에 압축을 풀고

    pts <- matrix(as.numeric(unlist(strsplit(unlist(Data[1,-c(1:2)]), ","))), ncol=2, byrow=TRUE) 
    

    의 값으로 결합 :

    v <- apply(as.matrix(Data[-1, -c(1:2)]), 1, as.numeric) 
    pv <- cbind(pts, v) 
    

    은 "이름"(날짜/시간)이 들어

    nms <- apply(Data[-1,1:2], 1, function(i) paste(i, collapse='_')) 
    

    장난감 예제가 작동하려면 래스터에서 둘 이상의 행이 필요합니다. (가) 아래에 그 처리한다, 그러나 당신이 당신의 실제 데이터로 그렇게 안 : X, Y 및 값이 행렬로

    pv <- rbind(pv, pv) 
    pv[1:3,1] <- 20 
    

    , 당신은 rasterFromXYZ를 사용할 수 있습니다

    library(raster) 
    r <- rasterFromXYZ(pv) 
    names(r) <- nms 
    
    r 
    #class  : RasterBrick 
    #dimensions : 3, 2, 6, 14 (nrow, ncol, ncell, nlayers) 
    #resolution : 0.45, 0.05 (x, y) 
    #extent  : 19.325, 20.225, 49.475, 49.625 (xmin, xmax, ymin, ymax) 
    #coord. ref. : NA 
    #data source : in memory 
    #names  : X20140509_0, X20140509_1, X20140509_2, X20140509_3, X20140509_4, X20140509_5, X20140509_6, X20140509_7, X20140509_8, X20140509_9, X20140509_10, X20140509_11, X20140509_12, X20140509_13 
    #min values :  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.25,   0.00,   0.00,   0.00,   0.00 
    #max values :  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.00,  0.40,   0.00,   0.00,   0.01,   0.00 
    
    +0

    감사합니다 @RobertH ! 그게 바로 제가 찾고 있던 것이 었습니다! – PaulG