A PyVista (and VTK) interface for the Open Mining Format package (omf
)
providing Python 3D visualization and useable mesh data structures for
processing datasets in the OMF specification.
Documentation is hosted at https://opengeovis.github.io/omfvista/
Check out the Example Notebook on NBViewer! Or launch the Notebook on MyBinder to run the code yourself!
Installation is simply:
pip install omfvista
All necessary dependencies will be installed alongside omfvista
. Please
note that this package heavily leverages the PyVista package.
For general questions about the project, its applications, or about software
usage, please create an issue in the pyvista/pyvista-support repository
where the PyVista community can collectively address your questions.
You are also welcome to join us on join @OpenGeoVis on our
Slack workspace under the #omfvista
channel or send one of the
developers an email. The project support team can be reached at
[email protected].
Be sure to check out the Example Notebook that demos omfvista
or our
Example Gallery in the documentation!
Here's an example using the sample data hosted in the OMF repository.
import pyvista as pv
import omfvista
project = omfvista.load_project('test_file.omf')
project
Once the data is loaded as a pyvista.MultiBlock
dataset from omfvista
, then
that object can be directly used for interactive 3D visualization from PyVista:
project.plot(multi_colors=True)
An interactive scene can be created and manipulated to create a compelling figure. First, grab the elements from the project:
# Grab a few elements of interest and plot em up!
vol = project['Block Model']
assay = project['wolfpass_WP_assay']
topo = project['Topography']
dacite = project['Dacite']
Then create a 3D scene with these spatial data and apply a filtering tool from PyVista to the volumetric data:
# Create a plotting window
p = pv.Plotter(notebook=False)
# Add our datasets
p.add_mesh(topo, cmap='gist_earth', opacity=0.5)
p.add_mesh(assay, color='blue', line_width=3)
p.add_mesh(dacite, color='yellow', opacity=0.6)
# Add the volumetric dataset with a thresholding tool
p.add_mesh_threshold(vol)
# Add the bounds axis
p.show_bounds()
# Redner the scene in a pop out window
p.show()