ฉันได้ให้ภาพ Geotiff และข้อมูล Lidar ที่สอดคล้องกัน (x, y, z) ในพิกัด UTM ฉันต้องรวมข้อมูล Lidar เข้ากับค่า RGB จากภาพ
นั่นหมายความว่าในตอนท้ายฉันต้องพล็อต (3D) แต่ละจุดของสีคลาวด์ LiDAR ที่เข้ารหัสด้วยค่า RGB ที่สอดคล้องกันจากภาพ Geotiff
ฉันแปลงข้อมูล Lidar เป็น shapefile โดยใช้ QGIS ฉันควรทำอย่างไรต่อไป
ใน R ฉันลองใช้plot3D
ฟังก์ชั่น แต่มันไม่ทำงาน ฉันกำลังแนบdoc text , shapefile และอิมเมจ tif
แก้ไข:
ฉันได้ทำโปรแกรมต่อไปนี้ตามที่แสดงด้านล่าง:
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)
}
}
แต่ในขณะที่พยายามพล็อตกราฟมันจะแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาดใน
[.data.frame
(x @ data, i, j, ... , drop = FALSE): อาร์กิวเมนต์ที่ไม่ได้ใช้ (1)
แก้ไข:
ฉันได้รับโมเดล 3 มิติโดยไม่มี RGB ดังแสดงด้านล่าง: