J'ai donné une image Geotiff et ses données Lidar correspondantes (x, y, z) en coordonnées UTM. J'ai besoin de fusionner les données Lidar avec les valeurs RVB de l'image.
Cela signifie qu'à la fin, je dois tracer (3D) chaque point de la couleur du nuage LiDAR codé avec sa valeur RVB correspondante à partir de l'image Geotiff.
J'ai converti les données Lidar en un fichier de formes à l'aide de QGIS. Que devrais-je faire ensuite?
Dans R, j'ai essayé la plot3D
fonction, mais cela n'a pas fonctionné. J'attache le document texte , le fichier de formes et l' image tif
Éditer:
J'ai fait le programme suivant comme indiqué ci-dessous:
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)
}
}
Mais en essayant de tracer le graphique, il montre l'erreur suivante:
Erreur dans
[.data.frame
(x @ data, i, j, ..., drop = FALSE): argument inutilisé (1)
Éditer:
J'ai obtenu le modèle 3D sans RVB comme indiqué ci-dessous: