This library provides functionality to parse geotechnical
investigation data in .snd
files generated by Trimbles GeoSuite.
Note: This parser is based on reverse-engineering, not a published standard. Some details in the format might have been missed, or might have changed in newer versions.
The datamodel is (mostly) compatible with libsgfdata, meaning that it is possible to (with some fields not being properly renamed/transformed) save the loaded data as an SGF file.
>>> data = libgeosuitesnd.parse("SOMEFILE.SND")
>>> data
[{'main': [{'method_code': 23,
'method_name': 'rps',
'day': 23,
'month': 5,
'year': 2011,
'date': '2011-5-23',
'stop_code': 91,
'stop_desc': 'abandoned_hit_hard_surface',
'depth_increment': 0.021,
'depth_bedrock': None,
'x_coordinate': 288557.381,
'y_coordinate': 6667259.708,
'z_coordinate': 139.01}],
'data': depth feed_force flushing extra_spin hammering pumping comments
0 0.021 102.0 0 0 0 0
1 0.042 1318.0 0 0 0 0
2 0.052 1038.0 0 0 0 0
3 0.072 1101.0 0 0 0 0
4 0.100 1728.0 0 0 0 0
... ... ... ... ... ... ... ...
1326 28.550 5301.0 0 1 0 0
1327 28.570 9423.0 0 1 0 0
1328 28.605 12217.0 0 1 0 0
1329 28.631 11564.0 0 1 0 0
1330 28.650 11942.0 0 1 0 0
[1331 rows x 7 columns]}]
>>> libsgfdata.dump(data, "somefile.sgf")
For each of the enumerated value types - method_code and stop_code, there is a pandas dataframe that translates between the numerical values used in the file, and the libsgfdata compatible names:
>>> libgeosuitesnd.methods
name columns flags comment
code
7 cpt depth,feed_trust_force,pore_pressure,friction,... NaN NaN
21 rotary NaN NaN NaN
22 simple NaN NaN NaN
23 rps depth,feed_trust_force extra_spin,flushing,pumping,ramming NaN
25 total depth,feed_trust_force,interval,pumping_rate extra_spin,flushing,pumping,ramming NaN
>>> libgeosuitesnd.stop_reasons
name
code
90 drilling_abandoned_prematurely
91 abandoned_hit_hard_surface
92 assumed_hit_boulder
93 assumed_bedrock
94 reached_bedrock
95 broken_drill
96 other_fault
97 drilling_abandoned
>>> libgeosuitesnd.flags
name value
code
R1 extra_spin 1
R2 extra_spin 0
y1 flushing 1
y2 flushing 0
S1 ramming 1