VPPS-SS14-W06-1-LiDARgeil






fls <- list.files("D:/BEN/Korbinian/Lidargeil/lidargeil/R/data", pattern = "locations.csv", 
    full.names = TRUE)

## load data
loc.list <- lapply(fls, function(...) {
    read.csv(..., stringsAsFactors = FALSE, fill = TRUE)
})

## to see the structure of the data list
str(loc.list)
## List of 5
##  $ :'data.frame':    20 obs. of  5 variables:
##   ..$ origin     : chr [1:20] "D" "B12" "B12" "B12" ...
##   ..$ treeID     : chr [1:20] "B12" "B9" "B13" "B11" ...
##   ..$ distance   : num [1:20] 5.32 6.25 8.74 7.84 7.78 5.72 8.08 8.11 2.14 2.97 ...
##   ..$ bearing    : int [1:20] 354 358 352 340 348 310 298 288 348 318 ...
##   ..$ inclination: num [1:20] 27 22 20.5 19 19 12.5 8.5 4 18 15 ...
##  $ :'data.frame':    20 obs. of  5 variables:
##   ..$ origin     : chr [1:20] "B" "B" "B" "B" ...
##   ..$ treeID     : chr [1:20] "A04" "A05" "A06" "A07" ...
##   ..$ distance   : num [1:20] 8.82 5.35 2.7 3.98 7.39 ...
##   ..$ bearing    : int [1:20] 139 130 101 102 101 89 97 93 98 97 ...
##   ..$ inclination: num [1:20] 0 0 11 9.5 6 5.5 8.5 10 8 6 ...
##  $ :'data.frame':    23 obs. of  5 variables:
##   ..$ origin     : chr [1:23] "A" "A" "A" "A" ...
##   ..$ treeID     : chr [1:23] "B" "A01" "A02" "A03" ...
##   ..$ distance   : num [1:23] 30 5.73 7 13.3 20.8 ...
##   ..$ bearing    : int [1:23] 351 24 40 20 9 5 1 9 23 12 ...
##   ..$ inclination: int [1:23] 23 18 23 29 27 23 27 27 28 27 ...
##  $ :'data.frame':    48 obs. of  5 variables:
##   ..$ origin     : chr [1:48] "C" "B01" "B01" "B01" ...
##   ..$ treeID     : chr [1:48] "B01" "B02" "B03" "B08" ...
##   ..$ distance   : num [1:48] 0 5.47 7.6 7.53 8.5 10.4 3.4 2.8 5.55 14.6 ...
##   ..$ bearing    : int [1:48] 0 178 204 254 248 250 238 202 278 252 ...
##   ..$ inclination: int [1:48] 0 -14 -14 -5 -5 -5 -10 -16 -13 -3 ...
##  $ :'data.frame':    20 obs. of  5 variables:
##   ..$ origin     : chr [1:20] "B" "B" "B" "B" ...
##   ..$ treeID     : chr [1:20] "A06" "A07" "A09" "A10" ...
##   ..$ distance   : num [1:20] 2.7 2.98 12.32 10.85 18.5 ...
##   ..$ bearing    : int [1:20] 101 99 89 92 93 92 179 164 152 144 ...
##   ..$ inclination: num [1:20] 11 9.5 5.5 8.5 7 5 -25 -23 -19 -19 ...

fls
## [1] "D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/GISdur_tree_locations.csv"         
## [2] "D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/LiDARgeil_tree_locations.csv"      
## [3] "D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/Pseudogley_tree_locations.csv"     
## [4] "D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/Supernasen_tree_locations.csv"     
## [5] "D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/suppenkasper_in_tree_locations.csv"

loc <- do.call("rbind", loc.list)
str(loc)
## 'data.frame':    131 obs. of  5 variables:
##  $ origin     : chr  "D" "B12" "B12" "B12" ...
##  $ treeID     : chr  "B12" "B9" "B13" "B11" ...
##  $ distance   : num  5.32 6.25 8.74 7.84 7.78 5.72 8.08 8.11 2.14 2.97 ...
##  $ bearing    : int  354 358 352 340 348 310 298 288 348 318 ...
##  $ inclination: num  27 22 20.5 19 19 12.5 8.5 4 18 15 ...

head(loc)
##   origin treeID distance bearing inclination
## 1      D    B12     5.32     354        27.0
## 2    B12     B9     6.25     358        22.0
## 3    B12    B13     8.74     352        20.5
## 4    B12    B11     7.84     340        19.0
## 5    B12    B10     7.78     348        19.0
## 6    B12    B14     5.72     310        12.5

spec <- read.csv("D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/species_inventory.csv", 
    stringsAsFactors = FALSE, fill = TRUE)

str(spec)
## 'data.frame':    104 obs. of  2 variables:
##  $ treeID : chr  "B01" "B02" "B03" "B04" ...
##  $ species: chr  "Kiefer" "Fichte" "Fichte" "Fichte" ...

loc.spec <- merge(loc, spec)

save(loc.spec, file = "D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/tree_locations_species_all.RData")

kood <- function(origin.x, origin.y, origin.z, distance, bearing, inclination) {
    alpha <- (bearing - 1.6) * pi/180
    distance <- cos(inclination * pi/180) * distance
    x <- c(cos(alpha) * distance + origin.x)
    y <- c(sin(alpha) * distance + origin.y)
    z <- c(sin(inclination * pi/180) * distance + origin.z)
    kood <- data.frame(x, y, z)
    names(kood) <- c("x", "y", "z")
    kood
}

kood(1:129, 5645538.43101407, 246.676422, 26.3, 9, 27)
##          x       y     z
## 1    24.24 5645541 257.3
## 2    25.24 5645541 257.3
## 3    26.24 5645541 257.3
## 4    27.24 5645541 257.3
## 5    28.24 5645541 257.3
## 6    29.24 5645541 257.3
## 7    30.24 5645541 257.3
## 8    31.24 5645541 257.3
## 9    32.24 5645541 257.3
## 10   33.24 5645541 257.3
## 11   34.24 5645541 257.3
## 12   35.24 5645541 257.3
## 13   36.24 5645541 257.3
## 14   37.24 5645541 257.3
## 15   38.24 5645541 257.3
## 16   39.24 5645541 257.3
## 17   40.24 5645541 257.3
## 18   41.24 5645541 257.3
## 19   42.24 5645541 257.3
## 20   43.24 5645541 257.3
## 21   44.24 5645541 257.3
## 22   45.24 5645541 257.3
## 23   46.24 5645541 257.3
## 24   47.24 5645541 257.3
## 25   48.24 5645541 257.3
## 26   49.24 5645541 257.3
## 27   50.24 5645541 257.3
## 28   51.24 5645541 257.3
## 29   52.24 5645541 257.3
## 30   53.24 5645541 257.3
## 31   54.24 5645541 257.3
## 32   55.24 5645541 257.3
## 33   56.24 5645541 257.3
## 34   57.24 5645541 257.3
## 35   58.24 5645541 257.3
## 36   59.24 5645541 257.3
## 37   60.24 5645541 257.3
## 38   61.24 5645541 257.3
## 39   62.24 5645541 257.3
## 40   63.24 5645541 257.3
## 41   64.24 5645541 257.3
## 42   65.24 5645541 257.3
## 43   66.24 5645541 257.3
## 44   67.24 5645541 257.3
## 45   68.24 5645541 257.3
## 46   69.24 5645541 257.3
## 47   70.24 5645541 257.3
## 48   71.24 5645541 257.3
## 49   72.24 5645541 257.3
## 50   73.24 5645541 257.3
## 51   74.24 5645541 257.3
## 52   75.24 5645541 257.3
## 53   76.24 5645541 257.3
## 54   77.24 5645541 257.3
## 55   78.24 5645541 257.3
## 56   79.24 5645541 257.3
## 57   80.24 5645541 257.3
## 58   81.24 5645541 257.3
## 59   82.24 5645541 257.3
## 60   83.24 5645541 257.3
## 61   84.24 5645541 257.3
## 62   85.24 5645541 257.3
## 63   86.24 5645541 257.3
## 64   87.24 5645541 257.3
## 65   88.24 5645541 257.3
## 66   89.24 5645541 257.3
## 67   90.24 5645541 257.3
## 68   91.24 5645541 257.3
## 69   92.24 5645541 257.3
## 70   93.24 5645541 257.3
## 71   94.24 5645541 257.3
## 72   95.24 5645541 257.3
## 73   96.24 5645541 257.3
## 74   97.24 5645541 257.3
## 75   98.24 5645541 257.3
## 76   99.24 5645541 257.3
## 77  100.24 5645541 257.3
## 78  101.24 5645541 257.3
## 79  102.24 5645541 257.3
## 80  103.24 5645541 257.3
## 81  104.24 5645541 257.3
## 82  105.24 5645541 257.3
## 83  106.24 5645541 257.3
## 84  107.24 5645541 257.3
## 85  108.24 5645541 257.3
## 86  109.24 5645541 257.3
## 87  110.24 5645541 257.3
## 88  111.24 5645541 257.3
## 89  112.24 5645541 257.3
## 90  113.24 5645541 257.3
## 91  114.24 5645541 257.3
## 92  115.24 5645541 257.3
## 93  116.24 5645541 257.3
## 94  117.24 5645541 257.3
## 95  118.24 5645541 257.3
## 96  119.24 5645541 257.3
## 97  120.24 5645541 257.3
## 98  121.24 5645541 257.3
## 99  122.24 5645541 257.3
## 100 123.24 5645541 257.3
## 101 124.24 5645541 257.3
## 102 125.24 5645541 257.3
## 103 126.24 5645541 257.3
## 104 127.24 5645541 257.3
## 105 128.24 5645541 257.3
## 106 129.24 5645541 257.3
## 107 130.24 5645541 257.3
## 108 131.24 5645541 257.3
## 109 132.24 5645541 257.3
## 110 133.24 5645541 257.3
## 111 134.24 5645541 257.3
## 112 135.24 5645541 257.3
## 113 136.24 5645541 257.3
## 114 137.24 5645541 257.3
## 115 138.24 5645541 257.3
## 116 139.24 5645541 257.3
## 117 140.24 5645541 257.3
## 118 141.24 5645541 257.3
## 119 142.24 5645541 257.3
## 120 143.24 5645541 257.3
## 121 144.24 5645541 257.3
## 122 145.24 5645541 257.3
## 123 146.24 5645541 257.3
## 124 147.24 5645541 257.3
## 125 148.24 5645541 257.3
## 126 149.24 5645541 257.3
## 127 150.24 5645541 257.3
## 128 151.24 5645541 257.3
## 129 152.24 5645541 257.3



load("D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/tree_locations_species_all.RData")

load("D:/BEN/Korbinian/Lidargeil/lidargeil/R/data/corner_points.RData")

source("D:/BEN/Korbinian/Lidargeil/lidargeil/R/functions/kood.R")

plot(corner.points)
## Loading required package: sp
## Error: cannot coerce type 'S4' to vector of type 'double'

coords.ele <- data.frame(origin = corner.points@data$corner, origin.x = corner.points@coords[, 
    1], origin.y = corner.points@coords[, 2], origin.z = corner.points@data$ele)

loc.spec.xyz <- merge(loc.spec, coords.ele, all.x = TRUE)

names(loc.spec.xyz) <- c("origin", "treeID", "distance", "bearing", "inclination", 
    "species", "origin.x", "origin.y", "origin.z")



# alle eintraege als zahlen verstehen

loc.spec.xyz$origin.x <- as.numeric(loc.spec.xyz$origin.x)
loc.spec.xyz$origin.y <- as.numeric(loc.spec.xyz$origin.y)
loc.spec.xyz$origin.z <- as.numeric(loc.spec.xyz$origin.z)
loc.spec.xyz$distance <- as.numeric(loc.spec.xyz$distance)
loc.spec.xyz$bearing <- as.numeric(loc.spec.xyz$bearing)
loc.spec.xyz$inclination <- as.numeric(loc.spec.xyz$inclination)




# KOORDIANTEN BERECHNEN

n <- c(1:129)
neue_kood <- data.frame(kood(loc.spec.xyz$origin.x[n], loc.spec.xyz$origin.y[n], 
    loc.spec.xyz$origin.z[n], loc.spec.xyz$distance[n], loc.spec.xyz$bearing[n], 
    loc.spec.xyz$inclination[n]))



# NEUEN DATENSATZ KREIEREN


data.all <- data.frame(loc.spec.xyz, neue_kood)

# um die nas kuemmern

nummer <- c(1:129)
na <- is.na(loc.spec.xyz$origin.x)
spaltennummer_mit_na <- data.frame(cbind(na, nummer))

spaltennummer_mit_na <- spaltennummer_mit_na[]

names(spaltennummer_mit_na) <- c("na", "nummer")

na_angabe <- data.frame(spaltennummer_mit_na[spaltennummer_mit_na$na == 1, ])
names(na_angabe) <- c("na", "zeile")


# die folgenden schritte sind mehrmals hintereinander auszuführen: solange
# bis data.all vollst.. dh. keine na mmehr Zeilen mit NA aendern
i <- (na_angabe$zeile[])

for (i in i) {
    data.all$origin.x[i] <- data.all$x[data.all$treeID == data.all$origin[i]]
}
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge

i <- c(na_angabe$zeile[])
for (i in i) {
    data.all$origin.y[i] <- data.all$y[data.all$treeID == data.all$origin[i]]
}
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
i <- (na_angabe$zeile[])

for (i in i) {
    data.all$origin.z[i] <- data.all$z[data.all$treeID == data.all$origin[i]]
}
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
## Warning: Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersetzungslänge
i <- (na_angabe$zeile[])


# wieder koordianten berechen

n <- c(1:129)
neue_kood <- data.frame(kood(data.all$origin.x[n], data.all$origin.y[n], data.all$origin.z[n], 
    data.all$distance[n], data.all$bearing[n], data.all$inclination[n]))
data.all$x <- neue_kood$x
data.all$y <- neue_kood$y
data.all$z <- neue_kood$z

Leave a Reply