maptek.vulcan.isisdb
Functions for Vulcan Isis databases.
Functions
append()
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
append_buffer (isisdb self, std::string const & table_name, std::string const & buffer) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
close()
Closes a database after saving any modifications and removes the lock.
# Open and close a database.
from maptek import vulcan
db = vulcan.isisdb("originaldrilling.dhd.isis")
# Do something...
db.close()
delete_key (isisdb self, std::string const & key) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
delete_record (isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
field_index(field, table)
Returns the one-based index number of field.
Note: Python begins with zero (0, 1, 2, 3...) when counting items. This function will begin counting with 1.
# Returns the one-based index number of field.
# [1, 2, 3, ... ]
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
field = "DIP"
table = "SURVEY"
index = db.field_index(field, table)
print (f"{index}")
>>> 3
field_list(table)
Create a list of database fields.
# Create a list of fields found in each table of the database.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
table = "SURVEY"
fields = db.field_list(table)
print (f"{fields}")
>>> ['DEPTH', 'AZIMUTH', 'DIP']
field_list_numbers(table)
Outputs the numeric fields found in a database as a list.
# Create a list of numeric tables found in the database.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
table = "SURVEY"
fields = db.field_list_numbers(table)
print (f"{fields}")
>>> ['DEPTH', 'AZIMUTH', 'DIP']
field_list_strings(table)
Outputs the string fields found in a database as a list.
# Create a list of string tables found in the database.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
table = "COLLAR"
fields = db.field_list_strings(table)
print (f"{fields}")
>>> ['HOLEID']
field_size(field, table)
Returns the length (number of characters the field will contain) of a field.
# Returns the size of the AU field in the ASSAY table.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
field = "AU"
table = "ASSAY"
size = db.field_size(field, table)
print (f"{size}")
>>> 12
find_key(key)
Forces a move to a specific key. This function is similar to a boolean function, but a little different. If will return a zero if it finds the key, then position you at the beginning of that key (first table, first record).
# Print 'Key has been found.' if key is found, and 'Key does not exist.' if key is not found.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
key = "LK177"
with vulcan.isisdb(db_source, 'r', '') as db:
if db.find_key(key) == 0:
print("Key has been found.")
else:
print("Key does not exist.")
>>> Key has been found.
get (isisdb self, std::string const & name) → double
get (isisdb self, int field_index) → double
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_buffer (isisdb self) → std::string
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_coordinate(depth)
Returns the downhole survey record coordinates of the selected depth as a list.
# Prints the max depth of drillhole and generates a list of the coordinates at that depth.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
drillhole = "LK010"
total_depth_field = "TOT_DEPTH"
survey_table = "SURVEY"
depth_field = "DEPTH"
with vulcan.isisdb(db_source, 'r', '') as db:
if not db.has_dsr():
print ("No dsr data available")
exit()
db.find_key(drillhole) # Force a move to the specific drillhole
depth = 0.0
end = None
# find max hole depth
if db.is_field(total_depth_field):
end = db[total_depth_field]
else:
start = False
for row in db:
table = db.get_table_name()
if table == survey_table:
# Once survey has been hit, stop updating the end depth if the table changes
start = True
end = db[depth_field]
elif start:
break
print (f"Max hole depth:{end}")
stop = False
while True:
# Go to end by total depth
if end is not None and depth > end:
# Update the last to be the end of hole
# Note: This will keep providing depths based on the last segment.
depth = end
stop = True
coord = db.get_coordinate(depth)
depth += 50.0
if stop:
print (f"Coords:{coord}")
break
>>> Max hole depth:184.0
>>> Coords:[24.461534057741652, -52.01947522415403, -174.1941677292476]
get_default (isisdb self, int field_id, int table_id) → double
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_default_string (isisdb self, int field_id, int table_id) → std::string
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_field_index(field, table)
Returns a zero based field index. Python begins with zero (0, 1, 2, 3...) when counting items.
# Returns the index number of field.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
field = "DIP"
table = "SURVEY"
index = db.get_field_index(field, table)
print (f"{index}")
>>> 2
get_key()
Returns the first key found.
# Returns the first key found.
from maptek import vulcan
db_source = "blockmodel.cmp.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
key = db.get_key()
print(f"{key}")
>>> BLOCK
get_position (isisdb self) → double
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_string (isisdb self, std::string const & name) → std::string
get_string (isisdb self, int field_index) → std::string
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_subtype (isisdb self) → std::string
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
get_table_index(table)
Returns a zero based table index. Python begins with zero (0, 1, 2, 3...) when counting items.
# Returns the index number of table.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
table = "SURVEY"
index = db.get_table_index(table)
print (f"{index}")
>>> 1
get_table_name()
Returns the name of the first table found.
# Returns the name of the first table found.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
name = db.get_table_name()
print (f"{name}")
>>> COLLAR
goto_table(table)
This function will move to a specified table by moving to the beginning of the current key, then find the start of the table. If no table is found, it will raise NameError.
# Goes to a requested table name
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
if db.goto_table("SURVEY"):
print("TRUE")
>>> TRUE
has_dsr()
Checks to verify if downhole survey record exists. Returns '1' if true, '0' is false.
# Checks to verify if downhole survey record exists. Returns '1' if true, '0' is false.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
dsr = db.has_dsr()
print(f"{dsr}")
>>> 1
insert_after (isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
insert_before (isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
is_field(field, table)
This is a boolean function that checks if field exists in table.
# Returns True if DEPTH field exists in SURVEY table.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
field = "DEPTH"
table = "SURVEY"
field_exists = db.is_field(field, table)
print (f"{field_exists}")
>>> True
is_number(field, table)
Checks if field type is defined as numeric.
# Returns True if field is numeric.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
field = "DEPTH"
table = "SURVEY"
bool_results = db.is_number(field, table)
print (f"{bool_results}")
>>> True
is_string(field, table)
Checks if field type is defined as is string.
# Returns True if field is a string.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
field = "DEPTH"
table = "SURVEY"
bool_results = db.is_string(field, table)
print (f"{bool_results}")
>>> False
key(key) or key("")
This is a generator to loop through the records in the current or specified key. If no key is provided, it will loop over the current key records. If a key name is provided, it will move until that key is found and return the records of that key. If no key is found, it will raise a NameError.
("" = current key)
# Prints the contents of the depth field for the current key on the table SURVEY.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
for record in db.key("LK177"):
if db.get_table_name() == "SURVEY":
depth = record['DEPTH']
print(f"{depth}")
>>> 0.0
>>> 2.0
>>> 10.0
>>> 20.0
>>> 30.0
>>> ...
keys()
Generator to move through the records and return all the keys found in a database.
# Iterates through all the keys in a database and prints the key names.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
for key in db.keys:
print (db.get_key())
>>> LK010
>>> LK011
>>> LK012
>>> LK013
>>> ...
key_list()
Create a list of keys found in a database.
# Generates a list of all the keys in a database and prints the key names.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
db_key = db.key_list()
print(f"{db_key}")
>>> ['LK010', 'LK011', 'LK012', ...]
next(isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
next_key(isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
next_same_key(isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
put(isisdb self, std::string const & name, double v)
put(isisdb self, std::string const & name, std::string const & v)
put(isisdb self, int field_index, double v)
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
put_string(isisdb self, std::string const & name, std::string const & v)
put_string(isisdb self, std::string const & name, double v)
put_string(isisdb self, int field_index, std::string const & v)
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
put_table_name(isisdb self, std::string const & rec_type) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
rewind(isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
set_position(isisdb self, double pos) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
synonym(isisdb self, std::string const & db_type, std::string const & name) → std::string
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
table_list()
Creates a list of the tables found in a database.
# Prints a list of tables found in the database.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
tables = db.table_list()
print (f"{tables}")
>>> ['COLLAR', 'SURVEY', 'ASSAY', 'STRUCT']
this_key()
Generator to move through the records of the current key from the beginning of the key.
# Prints the contents of the depth field for the current key on the table SURVEY.
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
for record in db.this_key:
if db.get_table_name() == "SURVEY":
depth = record['DEPTH']
print(f"{depth}")
>>> 0.0
>>> 2.0
>>> 10.0
>>> 20.0
>>> 30.0
>>> ...
this_table(table)
This is a generator to loop in the current or specified table of the current key. If no table is provided, it will loop over the current table. If a table name is provided, it will move until that table is found and return the results of that table. If no table is found, it will return nothing.
# Prints the contents of the depth field for the survey table (on the current key).
from maptek import vulcan
db_source = "originaldrilling.dhd.isis"
with vulcan.isisdb(db_source, 'r', '') as db:
for record in db.this_table("SURVEY"):
depth = record['DEPTH']
print(f"{depth}")
>>> 0.0
>>> 2.0
>>> 10.0
>>> 20.0
>>> 30.0
>>> ...
write(isisdb self) → int
# Comment
from maptek import vulcan
db = vulcan.isisdb("editeddrilling.dhd.isis")
# Do something...
