# Function read.lidar # An R function to read tiled LiDAR data for La Selva, Costa Rica in *.csv format. # See Kellner et al. 2009 for details # Description # Reads a file in comma-delimited format and creates a data frame from it, with cases corresponding to lines and variables to fields in the file. # Usage # read.lidar(tile.number) # Arguments # tile.number -- The number of the data tile to be read. This must be an integer between 1 and 511 inclusive. # Example # Read tile 152 and print the first five rows # tile152 <- read.lidar(152) # tile152[1:5,] read.lidar <- function(tile.number) { if (tile.number < 0) print("Tile number must be positive.") else if (tile.number < 10) {lidar <- read.table(paste("tile00", tile.number, ".csv", sep=""), sep=",", col.names=c("EASTING","NORTHING","ELEVATION","GROUND","CLASS","RETURN","NRETURN","INTENSITY","TIME","SCANANGLE"), skip=1, colClasses=c("numeric", "numeric", "numeric", "numeric", "integer", "integer", "integer", "integer", "numeric", "integer"))} else if (tile.number < 100) {lidar <- read.table(paste("tile0", tile.number, ".csv", sep=""), sep=",", col.names=c("EASTING","NORTHING","ELEVATION","GROUND","CLASS","RETURN","NRETURN","INTENSITY","TIME","SCANANGLE"), skip=1, colClasses=c("numeric", "numeric", "numeric", "numeric", "integer", "integer", "integer", "integer", "numeric", "integer"))} else if (tile.number < 512) {lidar <- read.table(paste("tile", tile.number, ".csv", sep=""), sep=",", col.names=c("EASTING","NORTHING","ELEVATION","GROUND","CLASS","RETURN","NRETURN","INTENSITY","TIME","SCANANGLE"), skip=1, colClasses=c("numeric", "numeric", "numeric", "numeric", "integer", "integer", "integer", "integer", "numeric", "integer"))} else print(paste("LiDAR tile number", tile.number, "does not exist.", sep=" ")) return(lidar) }