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)))