visualization knowledge query language vkql workshop n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Visualization Knowledge Query Language (VKQL) Workshop PowerPoint Presentation
Download Presentation
Visualization Knowledge Query Language (VKQL) Workshop

Loading in 2 Seconds...

play fullscreen
1 / 25

Visualization Knowledge Query Language (VKQL) Workshop - PowerPoint PPT Presentation


  • 80 Views
  • Uploaded on

Visualization Knowledge Query Language (VKQL) Workshop. Nicholas Del Rio University of Texas at El Paso Computer Science. Workshop Objectives. U nderstand notion and purpose of visualization queries Understand why writing queries may be easier that writing visualization programs

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Visualization Knowledge Query Language (VKQL) Workshop' - klaus


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
visualization knowledge query language vkql workshop

Visualization Knowledge Query Language (VKQL) Workshop

Nicholas Del Rio

University of Texas at El Paso Computer Science

workshop objectives
Workshop Objectives
  • Understand notion and purpose of visualization queries
  • Understand why writing queries may be easier that writing visualization programs
  • Learn the VKQL syntax and practice posing queries
workshop summary
Workshop Summary
  • Generating Visualizations Imperatively
  • Visualization Query
  • VKQL Syntax and Examples
  • Activity 1: Manual Inspection of Query
  • Activity 2: Copy and Pasting Examples
  • Conclusion
velocity model visualization
Velocity Model Visualization
  • A set of isosurfaces
    • extracted from a seismic velocity model
    • Covers a region in southern New Mexico

3 km/s

Depth

8 km/s

visualizing the velocity model
Visualizing the Velocity Model
  • Generated by custom Java application
    • relied on Visualization Toolkit (VTK) for rendering
    • VTK was developed for rendering 3D visualizations
    • VTK is supported by Sandia, Los Alamos, ARL, and others
  • Writing a custom visualization application:
    • may rely on third party package to support rendering
    • may need to perform some transformations on input dataset before rendering
visualization toolkits
Visualization Toolkits
  • Visualization Toolkit (VTK) was used to render the velocity visualization
  • VTK is a toolkit that provides functions such as:
    • Filtering
    • Gridding/interpolating
    • Mapping (i.e., transform data into views like isosurfaces)
    • Rendering the views
  • Functions are referred to as operators
    • Generic mapping tools (GMT): 60 operators
    • VTK: hundreds of operators
visualization pipeline model
Visualization Pipeline Model
  • VTK requires that users write pipelines
    • the output of an operator feeds into the operator next in the pipeline sequence
    • first operator in pipeline is usually data reader
    • final operator in pipeline is usually renderer
  • Thus the Java program that visualizes the velocity model can be seen as a pipeline of VTK operators
  • It is up to the users to write these pipelines…
vtk java pipeline for velocity model
VTK Java Pipeline For Velocity Model

vtkImageReaderrdr= new vtkImageReader();

rdr.SetFileName(inputDatasetFilePath);

rdr.SetDataScalarTypeToUnsignedShort();

rdr.SetDataByteOrderToLittleEndian();

rdr.SetFileDimensionality(3);

rdr.SetDataOrigin(0,0,0);

rdr.SetDataSpacing(1,1,1);

rdr.SetDataExtent(0,230,0,25,0,68);

rdr.SetNumberOfScalarComponents(1);

rdr.FileLowerLeftOn();

rdr.Update();

vtkContourFiltercontours = new vtkContourFilter();

contours.SetInput(rdr.GetOutput());

contours.GenerateValues(35,0.0,9000.0);

vtkPolyDataMappercontMapper = new vtkPolyDataMapper();

contMapper.SetInput(contours.GetOutput());

contMapper.SetScalarRange(0.0,9000.0);

  • vtkActorcontActor = new vtkActor();
  • contActor.SetMapper(contMapper);
  • contActor.RotateX(105);
  • vtkRenderer ren1 = new vtkRenderer();
  • ren1.AddActor(contActor);
  • ren1.AddActor2D(outlineActor);
  • ren1.SetBackground(1,1,1);
  • vtkRenderWindowrenWin = new vtkRenderWindow();
  • renWin.SetOffScreenRendering(1);
  • renWin.AddRenderer(ren1);
  • renWin.SetSize(300,300);
  • renWin.Render();
  • vtkJPEGWriterimg= new vtkJPEGWriter();
  • img.SetInputConnection(renWin.GetOutputPort());
  • img.SetFileName(outputDatasetFilePath);
  • img.SetQuality(100);
pipeline of visualization operators
Pipeline of Visualization Operators

Op 5

vtkImageReaderrdr= new vtkImageReader();

rdr.SetFileName(inputDatasetFilePath);

rdr.SetDataScalarTypeToUnsignedShort();

rdr.SetDataByteOrderToLittleEndian();

rdr.SetFileDimensionality(3);

rdr.SetDataOrigin(0,0,0);

rdr.SetDataSpacing(1,1,1);

rdr.SetDataExtent(0,230,0,25,0,68);

rdr.SetNumberOfScalarComponents(1);

rdr.FileLowerLeftOn();

rdr.Update();

vtkContourFiltercontours = new vtkContourFilter();

contours.SetInput(rdr.GetOutput());

contours.GenerateValues(35,0.0,9000.0);

vtkPolyDataMappercontMapper = new vtkPolyDataMapper();

contMapper.SetInput(contours.GetOutput());

contMapper.SetScalarRange(0.0,9000.0);

  • vtkActorcontActor = new vtkActor();
  • contActor.SetMapper(contMapper);
  • contActor.RotateX(105);
  • vtkRenderer ren1 = new vtkRenderer();
  • ren1.AddActor(contActor);
  • ren1.AddActor2D(outlineActor);
  • ren1.SetBackground(1,1,1);
  • vtkRenderWindowrenWin = new vtkRenderWindow();
  • renWin.SetOffScreenRendering(1);
  • renWin.AddRenderer(ren1);
  • renWin.SetSize(300,300);
  • renWin.Render();
  • vtkJPEGWriterimg= new vtkJPEGWriter();
  • img.SetInputConnection(renWin.GetOutputPort());
  • img.SetFileName(outputDatasetFilePath);
  • img.SetQuality(100);

Op 1

Op 6

Op 2

Op 7

Op 3

Op 8

different types of operators
Different Types of Operators

Op 5

Transformer

vtkImageReaderrdr= new vtkImageReader();

rdr.SetFileName(inputDatasetFilePath);

rdr.SetDataScalarTypeToUnsignedShort();

rdr.SetDataByteOrderToLittleEndian();

rdr.SetFileDimensionality(3);

rdr.SetDataOrigin(0,0,0);

rdr.SetDataSpacing(1,1,1);

rdr.SetDataExtent(0,230,0,25,0,68);

rdr.SetNumberOfScalarComponents(1);

rdr.FileLowerLeftOn();

rdr.Update();

vtkContourFiltercontours = new vtkContourFilter();

contours.SetInput(rdr.GetOutput());

contours.GenerateValues(35,0.0,9000.0);

vtkPolyDataMappercontMapper = new vtkPolyDataMapper();

contMapper.SetInput(contours.GetOutput());

contMapper.SetScalarRange(0.0,9000.0);

  • vtkActorcontActor = new vtkActor();
  • contActor.SetMapper(contMapper);
  • contActor.RotateX(105);
  • vtkRenderer ren1 = new vtkRenderer();
  • ren1.AddActor(contActor);
  • ren1.AddActor2D(outlineActor);
  • ren1.SetBackground(1,1,1);
  • vtkRenderWindowrenWin = new vtkRenderWindow();
  • renWin.SetOffScreenRendering(1);
  • renWin.AddRenderer(ren1);
  • renWin.SetSize(300,300);
  • renWin.Render();
  • vtkJPEGWriterimg= new vtkJPEGWriter();
  • img.SetInputConnection(renWin.GetOutputPort());
  • img.SetFileName(outputDatasetFilePath);
  • img.SetQuality(100);

Op 1

Transformer

Op 6

Renderer

View Mapper

Op 2

Transformer

Op 7

Transformer

Op 3

Op 8

Transformer

operators are parameterized
Operators are Parameterized

Op 5

P1

vtkImageReaderrdr= new vtkImageReader();

rdr.SetFileName(inputDatasetFilePath);

rdr.SetDataScalarTypeToUnsignedShort();

rdr.SetDataByteOrderToLittleEndian();

rdr.SetFileDimensionality(3);

rdr.SetDataOrigin(0,0,0);

rdr.SetDataSpacing(1,1,1);

rdr.SetDataExtent(0,230,0,25,0,68);

rdr.SetNumberOfScalarComponents(1);

rdr.FileLowerLeftOn();

rdr.Update();

vtkContourFiltercontours = new vtkContourFilter();

contours.SetInput(rdr.GetOutput());

contours.GenerateValues(35,0.0,9000.0);

vtkPolyDataMappercontMapper = new vtkPolyDataMapper();

contMapper.SetInput(contours.GetOutput());

contMapper.SetScalarRange(0.0,9000.0);

  • vtkActorcontActor = new vtkActor();
  • contActor.SetMapper(contMapper);
  • contActor.RotateX(105);
  • vtkRenderer ren1 = new vtkRenderer();
  • ren1.AddActor(contActor);
  • ren1.AddActor2D(outlineActor);
  • ren1.SetBackground(1,1,1);
  • vtkRenderWindowrenWin = new vtkRenderWindow();
  • renWin.SetOffScreenRendering(1);
  • renWin.AddRenderer(ren1);
  • renWin.SetSize(300,300);
  • renWin.Render();
  • vtkJPEGWriterimg= new vtkJPEGWriter();
  • img.SetInputConnection(renWin.GetOutputPort());
  • img.SetFileName(outputDatasetFilePath);
  • img.SetQuality(100);

P7

Op 1

P2

Op 6

P3

P8

P4

Op 2

Op 7

P9

P5

Op 3

Op 8

P6

declarative requests
Declarative Requests
  • Many user skills needed to visualize data
  • Aside from cognitive aspects of visualization, a large part of the problem is engineering
  • Stems from fact that we generate visualizations imperatively (i.e., write code)

Can we provide a means for users to generate visualizations declaratively (i.e., generatewhat visualization they want without having to write code)?

workshop summary1
Workshop Summary
  • Generating Visualizations Imperatively
  • Visualization Query
  • VKQL Syntax and Examples
  • Activity 1: Manual Inspection of Query
  • Activity 2: Copy and Pasting Examples
  • Conclusion
visualization query
Visualization Query
  • The velocity model visualization was actually a result of a visualization query

Requested Visualization

Desired View

URL of Data to visualize

Format of dataset

Semantic Type of dataset

WDO types (UTEP)

Parameter

Argument

Viewer

visualization queries and sql
Visualization Queries and SQL
  • Visualization queries mirror SQL queries
    • query request is specified declaratively
    • request is then translated into a query plan
    • query plan computes the result requested by the query
  • Information specified in visualization queries is used to derive pipelines rather than query plans
  • The pipeline in turn generates the visualization requested in the query
information needed to write queries
Information Needed to Write Queries
  • At a minimum you need to know:
    • The type of your dataset (e.g., gravity, seismic)
    • The format it is stored in (e.g., netCDF)
    • The URL of your dataset
  • With only above info, all possible visualizations will be returned (wildcard)
  • For more control, you need to know:
    • What view you want (i.e., chart, isolines, volume)
    • The appropriate values for operator parameters
workshop summary2
Workshop Summary
  • Generating Visualizations Imperatively
  • Visualization Query
  • VKQL Syntax and Examples
  • Activity 1: Manual Inspection of Query
  • Activity 2: Copy and Pasting Examples
  • Conclusion
vkql syntax
VKQL Syntax
  • A conjunction of Prolog statements that contain:
    • hasView( -DATA, ?VIEW)
    • hasContent(-DATA, +URL),
    • hasType(-DATA, +TYPE),
    • hasFormat(-DATA, +FORMAT)
    • [hasValue(+PARAM, +VALUE)]
workshop summary3
Workshop Summary
  • Generating Visualizations Imperatively
  • Visualization Query
  • VKQL Syntax and Examples
  • Activity 1: Manual Inspection of Query
  • Activity 2: Copy and Pasting Examples
  • Conclusion
activity 1 manual inspection of query
Activity 1: Manual Inspection of Query
  • Navigate to: http://trust.utep.edu/visko/vkql-examples/
  • Refer to the first query specified on the page:
  • What viewer is the query requesting the system to target?
  • What view is the query requesting the system to generate?
  • What is the type and format of the dataset being visualized?
  • Are there any parameter bindings? If so what is the parameter bound to?
workshop summary4
Workshop Summary
  • Generating Visualizations Imperatively
  • Visualization Query
  • VKQL Syntax and Examples
  • Activity 1: Manual Inspection of Query
  • Activity 2: Copy and Pasting Examples
  • Conclusion
submitting vkql queries
Submitting VKQL Queries
  • VKQL queries can be entered and executed at: http://trust.utep.edu/visko/vkql/
  • You can build queries by selecting values from combo boxes
  • You can type queries manually in a text box without any guidance or copy and paste an existing query
activity 2 pasting examples
Activity 2: Pasting Examples
  • Navigate to: http://trust.utep.edu/visko/vkql-examples/
  • Copy query for: Gridded Time with Rotation
  • Paste and Submit Query in Query Submission Page
  • Try manually changing the values assigned to:
    • xRotation
    • yRotation
    • zRotation
  • Resubmit with new bindings
workshop summary5
Workshop Summary
  • Generating Visualizations Imperatively
  • Visualization Query
  • VKQL Syntax and Examples
  • Activity 1: Manual Inspection of Query
  • Activity 2: Copy and Pasting Examples
  • Conclusion
conclusion
Conclusion
  • Writing queries may be easier to request for visualization generation than writing imperative code
  • VKQL Queries can be constructed a few ways using the VKQL Query Submit interface
  • VKQL Queries can target more than a single toolkit for generation