UTM koordinatlarında bir Geotiff görüntüsü ve karşılık gelen Lidar verilerini (x, y, z) verdim. Lidar verilerini görüntüdeki RGB değerleri ile birleştirmem gerekiyor.
Bu, sonunda, Geotiff görüntüsünden karşılık gelen RGB değeri ile kodlanmış LiDAR bulut renginin her noktasını (3D) çizmem gerektiği anlamına geliyor.
QGIS kullanarak Lidar verilerini bir şekil dosyasına dönüştürdüm. Sonra ne yapmalıyım?
R'de plot3D
işlevi denedim , ama işe yaramadı. Ben takılarak ediyorum metin doc , şekil dosyası ve tif görüntü
Düzenle:
Aşağıda gösterildiği gibi aşağıdaki programı yaptım:
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)
}
}
Ancak grafiği çizmeye çalışırken, aşağıdaki hatayı gösterir:
Hata
[.data.frame
(x @ veri, i, j, ..., bırak = YANLIŞ): kullanılmayan argüman (1)
Düzenle:
3D modeli RGB olmadan aşağıda gösterildiği gibi aldım: