Petroware Logo

JSON Well Log Format

JSON Well Log Format

The JSON Well Log Format is a modern well log format created to overcome many of the deficiencies of existing well log formats like DLIS, LIS, LAS, BIT, XTF and WITSML.

JSON Well Log Format has many advantages compared to existing formats:

  • Based on the JavaScript Object Notation (JSON) open standard (RFC 8259)
  • Text-based, lightweight and human readable
  • Full Unicode (UTF-8) support
  • Built-in no-value support
  • Date support through the ISO 8601 standard
  • Simple syntax consisting of collections of name/value pairs (objects) and ordered lists of values (arrays)
  • Fast: The simple syntax and streaming nature makes parsing extremely efficient
  • Simple well log semantics based on a limited set of well known keys to ensures consistency and efficient processing
  • Simple type system
  • Quantity and unit support based on the Unit of Measure Standard from Energistics
  • Supports depth and time based data
  • Supports single value and multi-dimensional (image) curves.
  • Parsers and generators are available for any system environment
  • Ideal for mass storage, massive transmission and cloud based analytics processing

Example

A JSON Well Log file consists of one or more log sets each containing logging meta data, curve definitions and the corresponding measurement data. The first curve listed is always the index curve.

This example contains a single log set with two one-dimensional curves:

   {
     "log": {
       "metadata": {
         "name": "EcoScope Data" ,
         "well": "35/12-6S",
         "field": "Fram",
         "date": "2019-06-14",
         "operator": "Wellesley Petroleum",
         "startIndex": 2907.79,
         "endIndex": 2938.09,
         "step": 0.01
       },
       "curves": [
         {
           "name": "MD",
           "description": "Measured depth",
           "quantity": "length",
           "unit": "m",
           "valueType": "float",
           "dimensions": 1
         },
         {
           "name": "A40H",
           "description": "Attenuation resistivity 40 inch",
           "quantity": "electrical resistivity",
           "unit": "ohm metre",
           "valueType": "float",
           "dimensions": 1
         }
       ]
       "data": [
         [2907.79, 29.955],
         [2907.80, 28.892],
         [2907.81, 27.868],
         [2907.82, 31.451],
         [2907.83, 28.080],
         :
         :
         [2938.09, 27.733]
       ]
     }
   }
      

The JSON syntax can be efficiently parsed in any programming environment available.

The well log semantics must still be parsed by the client code, but this is far simpler to do by navigating in-memory data structures in the programming environment at hand, instead of dealing with external disk resources of some obscure or proprietary format.

Logging metadata

The following metadata keys are defined as well known:
 Key 
 Description 
 name  Log name
 description  Log description
 well  Well name
 wellId  Unique well ID
 wellbore  Wellbore name
 field  Field name
 country  Country of operation
 date  Logging date as ISO 8601
 operator  Operator company name
 serviceCompany  Service company name
 runNumber  Run number
 startIndex  Value of the first index. Unit according to index curve.
 endIndex  Value of the last index. Unit according to index curve.
 step  Distance between indices if regularly sampled. Unit according to index curve. If log is time based, milliseconds assumed.
All metadata are optional.

In addition to the listed entries, clients may add any number of custom metadata in any form supported by the JSON syntax.

Curve definition

The following keys are used for curve definitions:

 Key 
 Description 
 name  Curve name or mnemonic. Mandatory. Non-null.
 description  Curve description. Optional.
 quantity  Curve quantity such as length, pressure, force etc. Optional.
 unit  Unit of measurement such as m, ft, bar, etc. Optional.
 valueType  Curve value type: float, integer, string, date time or boolean. Non-null. Optional. float assumed if not present.
 dimensions  Number of dimensions. [1,>. Non-null. Optional. 1 assumed if not present.

Data types

Data types for curve data:
 Type 
 Description 
 Examples 
 float  Floating point decimal numbers  10.2, 0.014, 3.1e-108, 2.13e12, 0.0, null
 integer  Integer decimal numbers  10, 42, 1000038233, -501, null
 string  Text strings as UTF-8  "error", "final depth", "message 402", null
 date time  Date/time specifications according to ISO 8601  "2019-12-19", "2010-02-18T16:23:48,3-06:00", null
 boolean  Logic states  true, false, null

Log I/O

Log I/O is a Petroware library for reading and writing well log data files of different formats.

Log I/O is a commercial product, but the JSON reader/writer is free and available on GitHub.

About Petroware

Petroware AS is a software company within the data management, data analytics, petrophysics, geology and reservoir engineering domains.

Petroware creates highly advanced software components and end-user products that acts as a research platform within software architecture and scalability, system design, parallelism and multi-threading, user experience (UX) and usability analysis as well as development methodologies and techniques.

Petroware AS
Stavanger - Norway
🌍 https://petroware.no
info@petroware.no