function elevationMap(
elevation_data,
image,
opts = {
xSpacing: 0.01568,
ySpacing: 0.01568,
zScaling: 0.06666
}
) {
const fullScreenRenderer = vtk.Rendering.Misc.vtkFullScreenRenderWindow.newInstance(
{
rootContainer: document.createElement("div"),
containerStyle: { width: `${width}px`, height: "600px" }
}
);
const vtkActor = vtk.Rendering.Core.vtkActor,
vtkElevationReader = vtk.IO.Misc.vtkElevationReader,
vtkMapper = vtk.Rendering.Core.vtkMapper,
vtkTexture = vtk.Rendering.Core.vtkTexture;
const renderer = fullScreenRenderer.getRenderer();
const renderWindow = fullScreenRenderer.getRenderWindow();
const reader = vtkElevationReader.newInstance(opts);
const mapper = vtkMapper.newInstance();
const actor = vtkActor.newInstance();
mapper.setInputConnection(reader.getOutputPort());
actor.setMapper(mapper);
renderer.addActor(actor);
renderer.resetCamera();
renderWindow.render();
if (image) {
const texture = vtkTexture.newInstance();
texture.setInterpolate(true);
texture.setImage(image);
actor.addTexture(texture);
renderWindow.render();
}
const elevation_url = "data:text/csv;" + d3.csvFormatRows(elevation_data);
reader.setUrl(elevation_url).then(() => {
renderer.resetCamera();
renderWindow.render();
});
return Object.assign(html`${fullScreenRenderer.getContainer()}`, {
value: fullScreenRenderer
});
}