2017-12-18 12 views
0

値:座標からラスタを作成し、私は、次の情報が格納されているdata.frame有する

  • X1 - 時間(godzina)

-

  • X2データ

    上記のデータについては、Punkt(1,1)、Punkt(1,2)という列があり、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") 
    

    私の目標は、ポイントと日付 - 時間ごとにラスタを作成し、1時間ごとに1つのラスタを作成することです。

    これまでのところ、私は一点でやり遂げました。列内のすべてのラスタセルの範囲を取得するには、私は次の計算を実行する必要があります。

    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='_')) 
    

    をおもちゃの例を使用するには、ラスタに複数の行が必要です。それの世話をするが、あなたはあなたの本当のデータであることをすべきではない以下:

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

    のx、y、およびこの値のマトリックスを使用すると、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

    関連する問題