OpenZGY/C++ Public API (ALPHA)
Access seismic data stored in ZGY format.
Classes | Namespaces | Functions | Variables
api.h File Reference

IZgyReader, IZgyWriter, and other user visible classes. More...

#include <cstdint>
#include <vector>
#include <array>
#include <ostream>
#include <iostream>
#include <functional>
#include <memory>
#include <string>
#include "declspec.h"

Go to the source code of this file.

Classes

class  OpenZGY::SampleStatistics
 Statistics of all sample values on the file. More...
 
class  OpenZGY::SampleHistogram
 Histogram of all sample values on the file. More...
 
class  OpenZGY::ZgyWriterArgs
 Argument package for creating a ZGY file. More...
 
class  OpenZGY::IZgyMeta
 Base class of IZgyReader and IZgyWriter. More...
 
class  OpenZGY::IZgyTools
 Base class of IZgyReader and IZgyWriter. More...
 
class  OpenZGY::IZgyReader
 Main API for reading ZGY files. More...
 
class  OpenZGY::IZgyWriter
 Main API for creating ZGY files. More...
 
class  OpenZGY::IZgyUtils
 Operations other than read and write. More...
 
class  OpenZGY::ProgressWithDots
 Simple progress bar. More...
 

Namespaces

 OpenZGY
 The entire public API is in this namespace.
 
 OpenZGY::Errors
 Exceptions that can be thrown by OpenZGY.
 
 OpenZGY::Impl
 Implementation of the abstract interfaces in OpenZGY.
 
 OpenZGY::Formatters
 operator<< for readable output of enums etc.
 

Functions

OPENZGY_API std::ostream & OpenZGY::Formatters::operator<< (std::ostream &os, SampleDataType value)
 Output the string representation of the input enum type.
 
OPENZGY_API std::ostream & OpenZGY::Formatters::operator<< (std::ostream &os, UnitDimension value)
 Output the string representation of the input enum type.
 
OPENZGY_API std::ostream & OpenZGY::Formatters::operator<< (std::ostream &os, DecimationType value)
 Output the string representation of the input enum type.
 

Variables

 unknown = 1000
 
 int8 = 1001
 
 int16 = 1002
 
 float32 = 1003
 
 time = 2001
 
 length = 2002
 
 arcangle = 2003
 
 LowPass = 100
 Lowpass Z / decimate XY.
 
 WeightedAverage
 Weighted averaging (depends on global stats).
 
 Average
 Simple averaging.
 
 Median
 Somewhat more expensive averaging.
 
 Minimum
 Minimum value.
 
 Maximum
 Maximum value.
 
 MinMax
 Checkerboard of minimum and maximum values.
 
 Decimate
 Simple decimation, use first sample.
 
 DecimateSkipNaN
 Use first sample that is not NaN.
 
 DecimateRandom
 Random decimation using a fixed seed.
 
 AllZero
 Just fill the LOD brick with zeroes.
 
 WhiteNoise
 Fill with white noise, hope nobody notices.
 
 MostFrequent
 The value that occurs most frequently.
 
 MostFrequentNon0
 The non-zero value that occurs most frequently.
 
 AverageNon0
 Average value, but treat 0 as NaN.
 

Detailed Description

IZgyReader, IZgyWriter, and other user visible classes.

This file contains the public OpenZGY API.

The API is modeled roughly after the API exposed by the Python wrapper around the existing C++ ZGY-Public API. This is probably just as good a starting point than anything else. And it makes testing simpler for those tests that compare the old and new behavior.

OpenZGY::IZgyMeta

OpenZGY::ZgyMetaAndTools extends IZgyMeta

OpenZGY::ZgyReader extends ZgyMetaAndTools with read, readconst, close OpenZGY::ZgyWriter extends ZgyMetaAndTools with write, writeconst, finalize, close

Note that enums and exceptions are problematic when it comes to encapsulation. Enums might be:

Exceptions have similar issues. It is possible to catch all exceptions raised in the impl layer and convert those to exceptions owned by the api layer. But re-throwing an exception makes debuggig harder.