Eu dei uma imagem Geotiff e seus dados Lidar correspondentes (x, y, z) nas coordenadas UTM. Preciso mesclar os dados do Lidar com os valores RGB da imagem.
Isso significa que, no final, eu preciso plotar (3D) cada ponto da nuvem LiDAR codificada por cores com seu valor RGB correspondente da imagem Geotiff.
Eu converti os dados do Lidar em um shapefile usando o QGIS. O que eu devo fazer a seguir?
Em R, tentei a plot3D
função, mas não funcionou. Estou anexando o documento doc , shapefile e tif image
Editar:
Eu fiz o seguinte programa, como mostrado abaixo:
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)
}
}
Mas, ao tentar plotar o gráfico, ele mostra o seguinte erro:
Erro em
[.data.frame
(x @ dados, i, j, ..., drop = FALSE): argumento não utilizado (1)
Editar:
Eu consegui o modelo 3D sem o RGB, como mostrado abaixo: