Vulcan triangulations
Vulcan triangulations (.00t, .sft, .srt) can be manipulated without Vulcan being opened. The following examples illustrate how to do this.
Topics:
Modules to import
Import the following libraries:
import pandas as pd import numpy as np import matplotlib.pyplot as plt from maptek.vulcan import vulcan
Open an existing triangulation
tri = vulcan.triangulation('test.00t')
Get information about triangulation
from maptek import vulcan
tri = vulcan.triangulation('test.00t')
nfaces = tri.n_faces()
nnodes = tri.n_nodes()
colour = tri.get_colour()
print("Number of faces: {}".format(nfaces))
print("Number of nodes: {}".format(nnodes))
print("Colour: {}".format(colour))
Get node co-ordinates and face information
Retrieve each nodes co-ordinates as well as the face connection.
from maptek import vulcan
tri = vulcan.triangulation('test.00t')
print("Nodes in Face: {}".format(tri.get_face(0)))
print("Node 1 co-ords {}".format(tri.get_node(0)))
print("Node 2 co-ords {}".format(tri.get_node(1)))
print("Node 3 co-ords {}".format(tri.get_node(2)))
Get elevation at a co-ordinate
from maptek import vulcan
tri = vulcan.triangulation('test.00t')
print('Elevation at 76506,4504 = {}'.format(tri.get_elevation(76506,4504)))
Create a new triangulation
tri2 = vulcan.triangulation('upper.00t', 'w')
tri2.add_node(76005.0,3003.0,660.0)
tri2.add_node(76005.0,3013.0,660.0)
tri2.add_node(76025.0,3003.0,660.0)
tri2.add_face(0,1,2)
tri2.save()
Add Triangulation attributes
from maptek import vulcan
tri = vulcan.tri_attributes('gradeblock.00t')
# Check triangulation is open and ready to add attributes
tri.is_ok()
# Add attributes
tri.put('grade','10.33','Double')
tri.put('oxd','waste','String')
tri.put('int','23','Integer')
tri.put('flagged','1','Boolean')
import time
## convert time to dd/mm/yyyy format
tri.put('date',time.strftime("%d/%m/%Y"),'String')
data = tri.get_hash() # Get all attribute data as a python dictionary
print(data) # Print out the data
print(data['grade']) # Extract the grade data
print(data['oxd']) # Extract the oxide data
# return the list of keys in the triangulation
tri.get_keys()
# save the attribute data
tri.save()
Clear all triangulation attributes
from maptek import vulcan
tri = vulcan.tri_attributes('gradeblock.00t')
tri.clear()
tri.save()
Calculate the volume of a triangulation solid
from maptek import vulcan
with vulcan.triangulation('gradeblock.00t', 'r') as tri:
print ('Volume of gradeblock.00t : {:.3f}'.format(vulcan.triangulation.volume(tri)))