He dado una imagen de Geotiff y sus datos Lidar correspondientes (x, y, z) en coordenadas UTM. Necesito fusionar los datos Lidar con los valores RGB de la imagen.
Eso significa que, al final, necesito trazar (3D) cada punto del color de la nube LiDAR codificado con su valor RGB correspondiente de la imagen Geotiff.
Convertí los datos de Lidar en un shapefile usando QGIS. ¿Qué debería hacer después?
En R, probé la plot3D
función, pero no funcionó. Adjunto el documento de texto , el archivo de forma y la imagen tif
Editar:
Hice el siguiente programa como se muestra a continuación:
require(raster)
require(maptools) # to take shape files
#require(car) # for scatter3D
require(plot3Drgl)
##setwd("C:\\Users\\Bibin Wilson\\Documents\\R")
##source('Lidar.r')
data = read.csv("C:\\Users\\Bibin Wilson\\Desktop\\Lidar\\lidardata.csv")
#nr = nrow(data)
nc = ncol(data)
nr = 500
require(rgdal)
X = readGDAL("C:\\Users\\Bibin Wilson\\Desktop\\Lidar\\image.tif")
topx = 4.968622208855732e+05;
topy = 5.419739403811632e+06;
final = matrix(nrow = nr, ncol = nc+2)
for(i in 1:nr) {
x = data[i,1]
y = data[i,2]
rr = round((topy-y)/0.0833)
cc = abs(round((x-topx)/0.0833))
if(rr == 0) {
rr = 1
}
if(cc == 0) {
cc = 1
}
final[i,1] = x
final[i,2] = y
final[i,3] = data[i,3]
final[i,4] = rr
final[i,5] = cc
}
for(i in 1:nr) {
x = final[i,1]
y = final[i,2]
z = final[i,3]
rr = final[i,4]
cc = final[i,5]
if(rr <= 5086 && cc<=3265) {
r = X[rr,cc,1]/255
g = X[rr,cc,2]/255
b = X[rr,cc,3]/255
c = cbind(r,g,b)
scatter3D(x,y,z,2,c)
}
}
Pero al intentar trazar el gráfico, muestra el siguiente error:
Error en
[.data.frame
(x @ data, i, j, ..., drop = FALSE): argumento no utilizado (1)
Editar:
Obtuve el modelo 3D sin RGB como se muestra a continuación: