las2witsml 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/las2witsml +8 -2
- data/lib/las2witsml.rb +2 -2
- data/lib/las_file.rb +1 -0
- data/lib/uom.json +1450 -0
- data/lib/uom.rb +32 -0
- data/lib/witsml_file.rb +4 -167
- metadata +18 -2
data/lib/uom.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class Uom
|
5
|
+
|
6
|
+
def initialize(path=nil)
|
7
|
+
if !path then
|
8
|
+
path = Uom::default_uom_file
|
9
|
+
end
|
10
|
+
@uom_map = load_uom_map path
|
11
|
+
end
|
12
|
+
|
13
|
+
def translate (in_uom)
|
14
|
+
@uom_map[in_uom.downcase]
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.default_uom_file
|
18
|
+
File.expand_path(File.dirname(__FILE__) + "/uom.json")
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def load_uom_map path
|
23
|
+
JSON.parse( File.open( path, 'r') { |f| f.read })
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_uom_map
|
27
|
+
if @@uom_map == Nil then
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
data/lib/witsml_file.rb
CHANGED
@@ -1,180 +1,19 @@
|
|
1
1
|
#require 'las_file'
|
2
2
|
require 'time'
|
3
3
|
require 'tempfile'
|
4
|
+
require 'uom'
|
4
5
|
|
5
6
|
class WitsmlFile
|
6
7
|
class UnrecognizedUnitException < Exception
|
7
8
|
end
|
8
9
|
|
9
|
-
|
10
|
-
'klbs'=>'klbf',
|
11
|
-
'PSI'=>'psi',
|
12
|
-
'SPM'=>'1Pmin',
|
13
|
-
'RPM'=>'revPmin',
|
14
|
-
'UNITS'=>'ftTlbf',
|
15
|
-
'ft/hr'=>'ftPh' ,
|
16
|
-
'percent'=>'%',
|
17
|
-
'bbl'=>'bbl' ,
|
18
|
-
'ton-miles'=>'tonfUSTmi',
|
19
|
-
'strokes'=>'unitless',
|
20
|
-
'GPM'=>'galUSPmin' ,
|
21
|
-
'hrs'=>'h' ,
|
22
|
-
'amps'=>'A' ,
|
23
|
-
'ppm'=>'ppm',
|
24
|
-
'barrels'=>'bbl',
|
25
|
-
'ft/min'=>'ftPmin',
|
26
|
-
'ksi'=>'kpsi',
|
27
|
-
'cm'=>'cm',
|
28
|
-
'ft per hour'=>'ftPh',
|
29
|
-
'min/ft'=>'minPft',
|
30
|
-
|
31
|
-
'KG' => 'kg',
|
32
|
-
'M' => 'm',
|
33
|
-
'F' => 'ft',
|
34
|
-
'FT' => 'ft',
|
35
|
-
'f' => 'ft',
|
36
|
-
'GAPI' => 'gAPI',
|
37
|
-
'GAPI' => 'gAPI',
|
38
|
-
'ohmm' => 'ohm.m',
|
39
|
-
'OHMM' => 'ohm.m',
|
40
|
-
'API' => 'gAPI',
|
41
|
-
'api' => 'gAPI',
|
42
|
-
'DEGC' => 'degC',
|
43
|
-
'M3' => 'm3',
|
44
|
-
'PERC' => '%',
|
45
|
-
'MV' => 'mV',
|
46
|
-
'US' => 'us',
|
47
|
-
'US/M' => 'us/m',
|
48
|
-
'us/f' => 'us/ft',
|
49
|
-
'US/F' => 'us/ft',
|
50
|
-
'S/F' => 's/ft',
|
51
|
-
'IN' => 'in',
|
52
|
-
'B/E' => 'b/elec',
|
53
|
-
'LBF' => 'lbf',
|
54
|
-
'G/C3' => 'g/cm3',
|
55
|
-
'G/CM3' => 'g/cm3',
|
56
|
-
'NAPI' => 'nAPI',
|
57
|
-
'F3' => 'ft3',
|
58
|
-
'BARN' => 'b',
|
59
|
-
'F/S' => 'ft/s',
|
60
|
-
'DEC' => 'Euc',
|
61
|
-
'LBS' => 'lbf',
|
62
|
-
'lbs' => 'lbf',
|
63
|
-
'None' => 'Euc',
|
64
|
-
'PU' => '%',
|
65
|
-
'MM' => 'mm',
|
66
|
-
'LB' => 'lbf',
|
67
|
-
'KGM3' => 'kg/m3',
|
68
|
-
'K/M3' => 'kg/m3',
|
69
|
-
'KG/M3' => 'kg/m3',
|
70
|
-
'MS/M' => 'ms/m',
|
71
|
-
'FT/SEC.' => 'ft/s',
|
72
|
-
'FT/SEC' => 'ft/s',
|
73
|
-
'V/V' => 'Euc',
|
74
|
-
'CFCF' => 'Euc',
|
75
|
-
'ohm-m' => 'ohm.m',
|
76
|
-
'ohm.' => 'ohm.m',
|
77
|
-
'OHMS' => 'ohm.m',
|
78
|
-
'OHM-' => 'ohm.m',
|
79
|
-
'Ohmm' => 'ohm.m',
|
80
|
-
'F/HR' => 'ft/h',
|
81
|
-
'g/cc' => 'g/cm3',
|
82
|
-
'G/CC' => 'g/cm3',
|
83
|
-
'MD' => 'mD.ft',
|
84
|
-
'MMHO' => 'mmho/m',
|
85
|
-
'usec/ft' => 'us/ft',
|
86
|
-
'B/CC' => 'b/cm3',
|
87
|
-
'F/MN' => 'ft3/min.ft2',
|
88
|
-
'PSI' => 'psi',
|
89
|
-
'MSEC' => 'ms',
|
90
|
-
'Ft/s' => 'ft/s',
|
91
|
-
'ft/hr' => 'ft/h',
|
92
|
-
'MM/M' => 'mmho/m',
|
93
|
-
'gm/cc' => 'g/cm3',
|
94
|
-
'INCH' => 'in',
|
95
|
-
'USEC/M' => 'us/m',
|
96
|
-
'Inches' => 'in',
|
97
|
-
'F/M' => 'ft/min',
|
98
|
-
'Api' => 'gAPI',
|
99
|
-
'APi' => 'gAPI',
|
100
|
-
'Deci' => 'Euc',
|
101
|
-
'DECP' => 'Euc',
|
102
|
-
'decp' => 'Euc',
|
103
|
-
'percent' => '%',
|
104
|
-
'PERCENT' => '%',
|
105
|
-
'hrs' => 'h',
|
106
|
-
'RPM' => 'rpm',
|
107
|
-
'GPM' => 'galUS/min',
|
108
|
-
'amps' => 'A',
|
109
|
-
'BN/E' => 'b/elec',
|
110
|
-
'barrels' => 'bbl',
|
111
|
-
'APSI' => 'psia',
|
112
|
-
'PA' => 'Pa',
|
113
|
-
'PPM' => 'ppm',
|
114
|
-
'USEC/FT' => 'us/ft',
|
115
|
-
'USEC' => 'us',
|
116
|
-
'msec' => 'ms',
|
117
|
-
'GPA' => 'GPa',
|
118
|
-
'Ft' => 'ft',
|
119
|
-
'fT' => 'ft',
|
120
|
-
'KGM/M3S' => 'kg/m2.s',
|
121
|
-
'FRAC' => '%',
|
122
|
-
'FRACTION' => '%',
|
123
|
-
'fraction' => '%',
|
124
|
-
'v/v' => 'Euc',
|
125
|
-
'uspf' => 'us/ft',
|
126
|
-
'USFT' => 'us/ft',
|
127
|
-
'US/FT' => 'us/ft',
|
128
|
-
'FT/HR' => 'ft/h',
|
129
|
-
'FT/H' => 'ft/h',
|
130
|
-
'fph' => 'ft/h',
|
131
|
-
'FPM' => 'ft/m',
|
132
|
-
'FT3/FT3' => 'ft3/ft3',
|
133
|
-
'sec' => 's',
|
134
|
-
'usec' => 'us',
|
135
|
-
'INCHES' => 'in',
|
136
|
-
'inch' => 'in',
|
137
|
-
'HR' => 'h',
|
138
|
-
'DEGF' => 'degF',
|
139
|
-
'HZ' => 'Hz',
|
140
|
-
'KHZ' => 'kHz',
|
141
|
-
'none' => 'Euc',
|
142
|
-
'NONE' => 'Euc',
|
143
|
-
'unitless' => 'Euc',
|
144
|
-
'unitle' => 'Euc',
|
145
|
-
'dec' => 'Euc',
|
146
|
-
'PPK' => 'ppk',
|
147
|
-
'1/FT' => '1/ft',
|
148
|
-
'ft/sec' => 'ft/s',
|
149
|
-
'F/S2' => 'ft/s2',
|
150
|
-
'M/S2' => 'm/s2',
|
151
|
-
'OER' => 'Oe',
|
152
|
-
'MS' => 'ms',
|
153
|
-
'MMHO/M' => 'mmho/m',
|
154
|
-
'mmo/m' => 'mmho/m',
|
155
|
-
'MO/M' => 'mho/m',
|
156
|
-
'FT3' => 'ft3',
|
157
|
-
'AAPI' => 'gAPI',
|
158
|
-
'aapi' => 'gAPI',
|
159
|
-
'db/ft' => 'dB/ft',
|
160
|
-
'Gm/cc' => 'g/cm3',
|
161
|
-
'UA' => 'uA',
|
162
|
-
'MA' => 'mA',
|
163
|
-
'mv' => 'mV',
|
164
|
-
'LB/LB' => 'wtpercent',
|
165
|
-
'lbf/lbf' => 'wtpercent',
|
166
|
-
'gft/cm3s' => 'g.ft/cm3.s',
|
167
|
-
'usec/m' => 'us/m'
|
168
|
-
|
169
|
-
}
|
170
|
-
|
171
|
-
def initialize(out, witsml_version = 1410)
|
10
|
+
def initialize(out, witsml_version = 1410, uom_file = nil)
|
172
11
|
@indent = 0
|
173
12
|
@out = out
|
174
13
|
@witsml_version = witsml_version
|
14
|
+
@uom = Uom.new uom_file
|
175
15
|
end
|
176
16
|
|
177
|
-
|
178
17
|
def digest_las(las_file)
|
179
18
|
#pre chew the las
|
180
19
|
|
@@ -447,8 +286,6 @@ class WitsmlFile
|
|
447
286
|
# see https://svn.wellstorm.com/projects/wsp/ticket/274#comment:3
|
448
287
|
|
449
288
|
return las_unit if !las_unit
|
450
|
-
|
451
|
-
map_las_to_witsml_units = UNITS
|
452
289
|
|
453
290
|
# just a few random ones from CWLS web site:
|
454
291
|
# RHOB .K/M3 45 350 02 00 : 2 BULK DENSITY
|
@@ -459,7 +296,7 @@ class WitsmlFile
|
|
459
296
|
#CALI .MM 45 280 01 00 : 10 CALIPER
|
460
297
|
#DRHO .K/M3 45 356 01 00 : 11 DENSITY CORRECTION
|
461
298
|
|
462
|
-
retval =
|
299
|
+
retval = @uom.translate las_unit
|
463
300
|
if !retval
|
464
301
|
raise UnrecognizedUnitException, las_unit
|
465
302
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: las2witsml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hugh Winkler
|
@@ -9,7 +9,21 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2013-10-01 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: A command line tool and a library for converting Log ASCII Standard (LAS)
|
14
28
|
files to WITSML <log> objects.
|
15
29
|
email: hugh.winkler@drillinginfo.com
|
@@ -23,6 +37,8 @@ files:
|
|
23
37
|
- lib/las2witsml.rb
|
24
38
|
- lib/las_file.rb
|
25
39
|
- lib/witsml_file.rb
|
40
|
+
- lib/uom.rb
|
41
|
+
- lib/uom.json
|
26
42
|
- bin/las2witsml
|
27
43
|
homepage: https://github.com/wellstorm/las2witsml/
|
28
44
|
licenses:
|