Downloads Australian NVCL datasets
Project description
nvcl_kit: A simple module used to read Australian NVCL borehole data
Brief Introduction: How to extract NVCL borehole data
NB: There is also a rough demonstration script: 'demo.py'
1. Instantiate class
from nvcl_kit.reader import NVCLReader from types import SimpleNamespace param = SimpleNamespace() # URL of the GeoSciML v4.1 BoreHoleView Web Feature Service param.WFS_URL = "http://blah.blah.blah/nvcl/geoserver/wfs" # URL of NVCL service param.NVCL_URL = "https://blah.blah.blah/nvcl/NVCLDataServices" # Optional bounding box to search for boreholes using WFS, default units are EPSG:4326 degrees param.BBOX = {"west": 132.76, "south": -28.44, "east": 134.39, "north": -26.87 } # Optional maximum number of boreholes to fetch, default is no limit param.MAX_BOREHOLES = 20 # Instantiate class and search for boreholes reader = NVCLReader(param)
2. Check if 'wfs' is not 'None' to see if this instance initialised properly
if not reader.wfs: print("ERROR!")
3. Call get_boreholes_list() to get list of WFS borehole data for NVCL boreholes
# Returns a list of python dictionaries # Each dict has fields from GeoSciML v4.1 BoreholeView bh_list = reader.get_boreholes_list()
4. Call get_nvcl_id_list() to get a list of NVCL borehole ids
nvcl_id_list = reader.get_nvcl_id_list()
5. Using an NVCL borehole id from previous step, call get_imagelog_data() to get the NVCL log ids
# Get list of NVCL log ids nvcl_id_list = reader.get_nvcl_id_list() # Get NVCL log id for first borehole in list nvcl_id = nvcl_id_list[0] # Get image log data for first borehole imagelog_data_list = reader.get_imagelog_data(nvcl_id) for ild in imagelog_data_list: print(ild.log_id, ild.log_name, ild.log_type, ild.algorithmout_id)
6. Using image log data, call get_borehole_data() to get borehole data
# Analysis class has 2 parts: # 1. Min1,2,3 = 1st, 2nd, 3rd most common mineral # OR Grp1,2,3 = 1st, 2nd, 3rd most common group of minerals # 2. uTSAV = visible light, uTSAS = shortwave IR, uTSAT = thermal IR # # These combine to give us a class name such as 'Grp1 uTSAS' # # Here we extract data for log type '1' and 'Grp1 uTSAS' HEIGHT_RESOLUTION = 20.0 ANALYSIS_CLASS = 'Grp1 uTSAS' LOG_TYPE = '1' for ild in imagelog_data_list: if ild.log_type == LOG_TYPE and ild.log_name == ANALYSIS_CLASS: bh_data = reader.get_borehole_data(ild.log_id, HEIGHT_RESOLUTION, ANALYSIS_CLASS) # Print out the colour, mineral and class name at each depth for depth in bh_data: print("At ", depth, "my class, mineral, colour is", bh_data[depth].className, bh_data[depth].classText, bh_data[depth].colour)
7. Using the NVCL ids from Step 5, you can also call get_spectrallog_data() and get_profilometer_data()
spectrallog_data_list = reader.get_spectrallog_data(nvcl_id) for sld in spectrallog_data_list: print(sld.log_id, sld.log_name, sld.wavelength_units, sld.sample_count, sld.script, sld.script_raw, sld.wavelengths) profilometer_data_list = reader.get_profilometer_data(nvcl_id) for pdl in profilometer_data_list: print(pdl.log_id, pdl.log_name, pdl.max_val, pdl.min_val, pdl.floats_per_sample, pdl.sample_count)
8. Option: get a list of dataset ids
datasetid_list = reader.get_datasetid_list(nvcl_id)
9. Option: Get a list of datasets
dataset_list = reader.get_dataset_list(nvcl_id) for ds in dataset_list: print(ds.dataset_id, ds.dataset_name, ds.borehole_uri, ds.tray_id, ds.section_id, ds.domain_id)
10. Using an element from 'datasetid_list' in Step 8 or 'ds.dataset_id' from Step 9, can retrieve log data
# Scalar log data log_list = reader.get_scalar_logs(ds.dataset_id) for log in log_list: print(log.log_id, log.log_name, log.is_public, log.log_type, log.algorithm_id)
# Different types of image log data ilog_list = reader.get_all_imglogs(ds.dataset_id) ilog_list = reader.get_mosaic_imglogs(ds.dataset_id) ilog_list = reader.get_tray_thumb_imglogs(ds.dataset_id) ilog_list = reader.get_tray_imglogs(ds.dataset_id) ilog_list = reader.get_imagery_imglogs(ds.dataset_id) for ilog in ilog_list: print(ilog.log_id, ilog.log_name, ilog.sample_count)
11. Using the scalar log ids, can get scalar data and plots of scalar data
# Scalar data in CSV format log_id_list = [l.log_id for l in log_list] data = reader.get_scalar_data(log_id_list) # Sampled scalar data in JSON (or CSV) format samples = reader.get_sampled_scalar_data(log.log_id, outputformat='json', startdepth=0, enddepth=2000, interval=100) # A data plot in PNG plot_data = reader.plot_scalar_png(log_id) # Data plots in HTML, only plots the first 6 log ids plot_data = reader.plot_scalars_html(log_id_list)
12. Using the image log ids can produce images of NVCL cores
ilog_list = reader.get_mosaic_imglogs(ds.dataset_id) for ilog in ilog_list: img = reader.get_mosaic_image(ilog.log_id) ilog_list = reader.get_tray_thumb_imglogs(ds.dataset_id) for ilog in ilog_list: # Either HTML or JPG img = reader.get_tray_thumb_html(ds.dataset_id, ilog.log_id) img = reader.get_tray_thumb_jpg(ilog.log_id) # Use either 'get_tray_thumb_imglogs()' or 'get_tray_imglogs()' ilog_list = reader.get_tray_thumb_imglogs(ds.dataset_id) ilog_list = reader.get_tray_imglogs(ds.dataset_id) for ilog in ilog_list: depth_list = reader.get_tray_depths(ilog.log_id) for depth in depth_list: print(depth.sample_no, depth.start_value, depth.end_value)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size nvcl_kit-0.1.22-py3-none-any.whl (17.5 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size nvcl_kit-0.1.22.tar.gz (21.4 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for nvcl_kit-0.1.22-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d47ddc0d2ab70a680d2256aea36404f3ed3f912423bffc4581cd310c35d94deb |
|
MD5 | 0e1939cdbcec77acc61e2c072d94db7a |
|
BLAKE2-256 | a57d9b97aa93ef7b7120b838517d2db73516656bb35f40c5536d8ba89201f743 |