from k3d.helpers import download
from pyunpack import Archive
filename = download('http://www.semantic3d.net/data/point-clouds/testing1/stgallencathedral_station1_intensity_rgb.7z')
Archive(filename).extractall('./')
import csv
import numpy as np
data = None
with open(filename.replace('.7z', '.txt'), mode='r') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=' ')
data = np.array(list(csv_reader), dtype=np.float32)
# compute color in hex format
data[:, 4] = np.sum(data[:, 4:7].astype(np.uint32) * np.array([1, 256, 256 ** 2]), axis=1)
data = data[:, 0:5]
import time
import json
import k3d
import ipywidgets as widgets
plot = k3d.plot()
plot.display()
debug_info = widgets.HTML()
display(debug_info)
obj = k3d.points(data[::2, 0:3], data[::2, 4].astype(np.uint32), point_size=0.05, shader="flat")
plot += obj
plot.camera = [5.251483149143791,
-7.92683507646606,
3.144285796928443,
-2.470283607444292,
3.6558150584160503,
2.3721091212696286,
0,
0,
1]
plot.mode = 'callback'
import json
g = None
def foo(params):
global g, debug_info
g = params
debug_info.value = '<pre>' + json.dumps(params, indent=4) + "</pre>"
obj.click_callback = foo
obj.hover_callback = foo