h5geo 0.4.0
C++17 and python API to work with geo-data (seismic, wells, maps, other in process) based on HDF5. Aimed at geoscientists and developers.
Loading...
Searching...
No Matches
h5seisimpl.h
1#ifndef H5SEISIMPL_H
2#define H5SEISIMPL_H
3
4#include "../h5seis.h"
5#include "h5baseobjectimpl.h"
6
7#include <h5gt/H5DataSet.hpp>
8
10
11class H5SeisImpl : public H5BaseObjectImpl<H5Seis>
12{
13protected:
14 explicit H5SeisImpl(const h5gt::Group &group);
15 virtual ~H5SeisImpl() = default;
16
17public:
18 // WRITERS
19 virtual bool readSEGYTextHeader(
20 const std::string& segy,
21 h5geo::TextEncoding encoding = static_cast<h5geo::TextEncoding>(0)) override;
22 virtual bool readSEGYBinHeader(
23 const std::string& segy,
24 h5geo::Endian endian = static_cast<h5geo::Endian>(0)) override;
25 virtual bool readSEGYTraces(
26 const std::vector<std::string>& segyFiles,
27 std::vector<h5geo::SegyFormat> formats = std::vector<h5geo::SegyFormat>(),
28 std::vector<h5geo::Endian> endians = std::vector<h5geo::Endian>(),
29 std::vector<std::vector<std::string>> trcHdrNamesArr = std::vector<std::vector<std::string>>(),
30 size_t trcBuffer = 10000,
31 std::function<void(double)> progressCallback = nullptr) override;
32 virtual bool readSEGYTracesMMap(
33 const std::vector<std::string>& segyFiles,
34 std::vector<h5geo::SegyFormat> formats = std::vector<h5geo::SegyFormat>(),
35 std::vector<h5geo::Endian> endians = std::vector<h5geo::Endian>(),
36 std::vector<std::vector<std::string>> trcHdrNamesArr = std::vector<std::vector<std::string>>(),
37 size_t trcBuffer = 10000,
38 int nThreads = -1,
39 std::function<void(double)> progressCallback = nullptr) override;
40
41 virtual bool writeTextHeader(const char (&txtHdr)[40][80]) override;
42 virtual bool writeTextHeader(const std::vector<std::string>& txtHdr) override;
43
44 virtual bool writeBinHeader(const double (&binHdr)[30]) override;
45 virtual bool writeBinHeader(const std::vector<double>& binHdrVec) override;
46 virtual bool writeBinHeader(
47 const Eigen::Ref<const Eigen::VectorXd>& binHdrVec) override;
48 virtual bool writeBinHeader(
49 const std::string& hdrName,
50 const double& value,
51 const std::string& unitsFrom = "",
52 const std::string& unitsTo = "") override;
53
54 virtual bool writeTrace(
55 Eigen::Ref<Eigen::MatrixXf> TRACE,
56 const size_t& fromTrc = 0,
57 const size_t& fromSampInd = 0,
58 const std::string& dataUnits = "") override;
59 virtual bool writeTrace(
60 Eigen::Ref<Eigen::MatrixXf> TRACE,
61 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
62 const size_t& fromSampInd = 0,
63 const std::string& dataUnits = "") override;
64 virtual bool writeTraceHeader(
65 const Eigen::Ref<const Eigen::MatrixXd>& HDR,
66 const size_t& fromTrc = 0,
67 const size_t& fromHdrInd = 0) override;
68 virtual bool writeTraceHeader(
69 const std::string& hdrName,
70 Eigen::Ref<Eigen::MatrixXd> hdr,
71 const size_t& fromTrc = 0,
72 const std::string& unitsFrom = "",
73 const std::string& unitsTo = "") override;
74 virtual bool writeTraceHeader(
75 const std::string& hdrName,
76 Eigen::Ref<Eigen::MatrixXd> hdr,
77 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
78 const std::string& unitsFrom = "",
79 const std::string& unitsTo = "") override;
80
81 virtual bool writeXYTraceHeaders(
82 const std::vector<std::string>& xyHdrNames,
83 Eigen::Ref<Eigen::MatrixX2d>& xy,
84 const size_t& fromTrc = 0,
85 const std::string& lengthUnits = "",
86 bool doCoordTransform = false) override;
87 virtual bool writeXYTraceHeaders(
88 const std::vector<std::string>& xyHdrNames,
89 Eigen::Ref<Eigen::MatrixX2d>& xy,
90 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
91 const std::string& lengthUnits = "",
92 bool doCoordTransform = false) override;
93
94 virtual bool setNTrc(size_t nTrc) override;
95 virtual bool setNSamp(size_t nSamp) override;
96
97 // GETTERS
98 virtual std::vector<std::string> getTextHeader() override;
99 virtual std::map<std::string, double> getBinHeader() override;
100 virtual double getBinHeader(
101 const std::string& hdrName,
102 const std::string& unitsFrom = "",
103 const std::string& unitsTo = "") override;
104
105 virtual Eigen::MatrixXf getTrace(
106 const size_t& fromTrc,
107 size_t nTrc = 1,
108 const size_t& fromSampInd = 0,
109 size_t nSamp = std::numeric_limits<size_t>::max(),
110 const std::string& dataUnits = "") override;
111
112 virtual Eigen::MatrixXf getTrace(
113 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
114 const size_t& fromSampInd = 0,
115 size_t nSamp = std::numeric_limits<size_t>::max(),
116 const std::string& dataUnits = "") override;
117
118 virtual Eigen::MatrixXd getTraceHeader(
119 const size_t& fromTrc,
120 size_t nTrc = 1,
121 const size_t& fromHdr = 0,
122 size_t nHdr = std::numeric_limits<size_t>::max(),
123 const std::vector<std::string>& unitsFrom = std::vector<std::string>(),
124 const std::vector<std::string>& unitsTo = std::vector<std::string>()) override;
125 virtual Eigen::VectorXd getTraceHeader(
126 const std::string& hdrName,
127 const size_t& fromTrc = 0,
128 size_t nTrc = 1,
129 const std::string& unitsFrom = "",
130 const std::string& unitsTo = "") override;
131 virtual Eigen::MatrixXd getTraceHeader(
132 const std::vector<size_t>& trcInd,
133 const std::vector<size_t>& trcHdrInd,
134 const std::vector<std::string>& unitsFrom = std::vector<std::string>(),
135 const std::vector<std::string>& unitsTo = std::vector<std::string>()) override;
136 virtual Eigen::MatrixXd getTraceHeader(
137 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
138 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcHdrInd,
139 const std::vector<std::string>& unitsFrom = std::vector<std::string>(),
140 const std::vector<std::string>& unitsTo = std::vector<std::string>()) override;
141 virtual Eigen::MatrixXd getTraceHeader(
142 const std::vector<std::string>& hdrNames,
143 const std::vector<size_t>& trcInd,
144 const std::vector<std::string>& unitsFrom = std::vector<std::string>(),
145 const std::vector<std::string>& unitsTo = std::vector<std::string>()) override;
146 virtual Eigen::MatrixXd getTraceHeader(
147 const std::vector<std::string>& hdrNames,
148 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
149 const std::vector<std::string>& unitsFrom = std::vector<std::string>(),
150 const std::vector<std::string>& unitsTo = std::vector<std::string>()) override;
151
152 virtual Eigen::MatrixXd getXYTraceHeaders(
153 const std::vector<std::string>& xyHdrNames,
154 const size_t& fromTrc = 0,
155 size_t nTrc = std::numeric_limits<size_t>::max(),
156 const std::string& lengthUnits = "",
157 bool doCoordTransform = false) override;
158 virtual Eigen::MatrixXd getXYTraceHeaders(
159 const std::vector<std::string>& xyHdrNames,
160 const Eigen::Ref<const Eigen::VectorX<size_t>>& trcInd,
161 const std::string& lengthUnits = "",
162 bool doCoordTransform = false) override;
163
164 virtual Eigen::VectorX<size_t> getSortedData(
165 Eigen::MatrixXf& TRACE,
166 Eigen::MatrixXd& HDR,
167 const std::vector<std::string>& keyList,
168 const std::vector<double>& minList,
169 const std::vector<double>& maxList,
170 size_t pStep = 1,
171 size_t fromSampInd = 0,
172 size_t nSamp = std::numeric_limits<size_t>::max(),
173 const std::string& dataUnits = "",
174 const std::string& lengthUnits = "",
175 bool doCoordTransform = false) override;
176
177 virtual ptrdiff_t getBinHeaderIndex(const std::string& hdrName) override;
178 virtual ptrdiff_t getTraceHeaderIndex(const std::string& hdrName) override;
179
180 virtual Eigen::VectorXd getSamples(
181 const size_t& trcInd,
182 const std::string& units = "") override;
183 virtual double getFirstSample(
184 const size_t& trcInd,
185 const std::string& units = "") override;
186 virtual double getLastSample(
187 const size_t& trcInd,
188 const std::string& units = "") override;
189 virtual double getSampRate(const std::string& units = "") override;
190 virtual size_t getNSamp() override;
191 virtual size_t getNTrc() override;
193 virtual size_t getNTrcHdr() override;
194 virtual size_t getNBinHdr() override;
195 virtual size_t getNTextHdrRows() override;
196 virtual Eigen::VectorX<size_t> getPKeyIndexes(
197 const std::string& pKey,
198 double pMin, double pMax,
199 size_t pStep = 1) override;
200 virtual Eigen::VectorXd getPKeyValues(
201 const std::string& pKey,
202 const std::string& unitsFrom = "",
203 const std::string& unitsTo = "") override;
204 virtual size_t getPKeySize(const std::string& pKey) override;
205 virtual size_t getPKeySize(
206 const std::string& pKey,
207 double pMin, double pMax,
208 size_t pStep = 1) override;
209 virtual size_t getPKeyTraceSize(
210 const std::string& pKey,
211 double pMin, double pMax,
212 size_t pStep = 1) override;
213 virtual std::vector<std::string> getPKeyNames() override;
214 virtual std::map<std::string, double> getTraceHeaderMin() override;
215 virtual std::map<std::string, double> getTraceHeaderMax() override;
216 virtual double getTraceHeaderMin(
217 const std::string& hdrName,
218 const std::string& unitsFrom = "",
219 const std::string& unitsTo = "") override;
220 virtual double getTraceHeaderMax(
221 const std::string& hdrName,
222 const std::string& unitsFrom = "",
223 const std::string& unitsTo = "") override;
224
225 virtual H5SeisParam getParam() override;
226
227 virtual bool checkTraceLimits(
228 const size_t& fromTrc, size_t& nTrc) override;
229
230 virtual bool checkTraceHeaderLimits(
231 const size_t& fromHdr, size_t& nHdr) override;
232 virtual bool checkSampleLimits(
233 const size_t& fromSampInd, size_t& nSamp) override;
234
237 virtual bool generatePRESTKGeometry(
238 double src_x0, double src_dx, size_t src_nx,
239 double src_y0, double src_dy, size_t src_ny,
240 double src_z,
241 double rec_x0, double rec_dx, size_t rec_nx,
242 double rec_y0, double rec_dy, size_t rec_ny,
243 double rec_z,
244 double orientation,
245 bool moveRec,
246 const std::string& lengthUnits = "",
247 bool doCoordTransform = false) override;
250 virtual bool generateSTKGeometry(
251 double x0, double dx, size_t nx,
252 double y0, double dy, size_t ny,
253 double z,
254 double orientation,
255 const std::string& lengthUnits = "",
256 bool doCoordTransform = false) override;
257
258 virtual bool setDomain(const h5geo::Domain& val) override;
259 virtual bool setDataType(const h5geo::SeisDataType& val) override;
260 virtual bool setSurveyType(const h5geo::SurveyType& val) override;
261 virtual bool setSRD(double val, const std::string& lengthUnits = "") override;
262 virtual bool setSampRate(double val, const std::string& units = "") override;
263 virtual bool setFirstSample(double val, const std::string& units = "") override;
264
265 virtual h5geo::Domain getDomain() override;
266 virtual h5geo::SeisDataType getDataType() override;
267 virtual h5geo::SurveyType getSurveyType() override;
268 virtual double getSRD(const std::string& lengthUnits = "") override;
269
270 virtual bool hasPKeySort(const std::string& pKeyName) override;
271 virtual bool removePKeySort(const std::string& pKeyName) override;
272 virtual bool addPKeySort(const std::string& pKeyName) override;
273
274 virtual bool updateTraceHeaderSampRate() override;
275 virtual bool updateTraceHeaderNSamp() override;
276
277 virtual H5SeisContainer* openSeisContainer() override;
278
279 virtual std::optional<h5gt::DataSet> getTextHeaderD() override;
280 virtual std::optional<h5gt::DataSet> getBinHeaderD() override;
281 virtual std::optional<h5gt::DataSet> getTraceHeaderD() override;
282 virtual std::optional<h5gt::DataSet> getTraceD() override;
283 virtual std::optional<h5gt::Group> getSortG() override;
284 virtual std::optional<h5gt::Group> getUValG() override;
285 virtual std::optional<h5gt::Group> getIndexesG() override;
286
287 virtual std::optional<h5gt::Group> getSEGYG() override;
288 virtual std::optional<h5gt::DataSet> getSEGYTextHeaderD() override;
289 virtual std::optional<h5gt::DataSet> getSEGYBinHeader2BytesD() override;
290 virtual std::optional<h5gt::DataSet> getSEGYBinHeader4BytesD() override;
291 virtual std::optional<h5gt::DataSet> getSEGYTraceHeader2BytesD() override;
292 virtual std::optional<h5gt::DataSet> getSEGYTraceHeader4BytesD() override;
293 virtual std::optional<h5gt::DataSet> getSEGYTraceFloatD() override;
294
295 virtual bool updateTraceHeaderLimits(size_t nTrcBuffer = 1e7) override;
296 virtual bool updatePKeySort(const std::string& pKeyName) override;
297
298 virtual Eigen::MatrixXd calcBoundary(
299 const std::string& lengthUnits = "",
300 bool doCoordTransform = false) override;
301
302 virtual bool exportToVol(H5Vol* vol,
303 const std::string& xHeader = "CDP_X",
304 const std::string& yHeader = "CDP_Y",
305 const std::string& ilHeader = "INLINE",
306 const std::string& xlHeader = "XLINE",
307 double ilMin = std::numeric_limits<double>::min(),
308 double ilMax = std::numeric_limits<double>::max(),
309 double xlMin = std::numeric_limits<double>::min(),
310 double xlMax = std::numeric_limits<double>::max(),
311 size_t fromSampInd = 0,
312 size_t nSamp = std::numeric_limits<size_t>::max(),
313 std::function<void(double)> progressCallback = nullptr) override;
314
315 virtual bool exportToSEGY(
316 const std::string& segyFile,
317 size_t trcBuffer = 10000,
318 h5geo::Endian endian = h5geo::Endian::Big,
319 std::function<void(double)> progressCallback = nullptr) override;
320
321protected:
322 virtual Eigen::MatrixXd calcBoundaryStk2D();
323 virtual Eigen::MatrixXd calcConvexHullBoundary();
324
325protected:
326 h5gt::DataSet traceD, traceHeaderD;
327
328
329 //----------- FRIEND CLASSES -----------
330 friend class H5SeisContainerImpl;
331 friend class H5BaseObjectImpl<H5Seis>;
332 friend H5Seis* h5geo::openSeis(h5gt::Group group);
333};
334
335#endif // H5SEISIMPL_H
Definition h5baseobjectimpl.h:12
A container built around HDF5 file and used for storing and manipulating H5Seis objects.
Definition h5seiscontainer.h:15
Definition h5seiscontainerimpl.h:8
Provides API to work with seismic.
Definition h5seis.h:33
Definition h5seisimpl.h:12
virtual bool setFirstSample(double val, const std::string &units="") override
Set first sample.
Definition h5seisimpl.cpp:1706
virtual bool writeXYTraceHeaders(const std::vector< std::string > &xyHdrNames, Eigen::Ref< Eigen::MatrixX2d > &xy, const size_t &fromTrc=0, const std::string &lengthUnits="", bool doCoordTransform=false) override
Write XY trace headers (two columns in Eigen column-major matrix)
Definition h5seisimpl.cpp:412
virtual bool setNTrc(size_t nTrc) override
Resize trace and trace header DataSets.
Definition h5seisimpl.cpp:515
virtual std::vector< std::string > getPKeyNames() override
Get names of prepared PKeys (names of prepared sortings PKeys)
Definition h5seisimpl.cpp:1358
virtual std::vector< std::string > getTextHeader() override
Get text header.
Definition h5seisimpl.cpp:548
virtual size_t getPKeyTraceSize(const std::string &pKey, double pMin, double pMax, size_t pStep=1) override
Get number of traces to be selected for a given PKey
Definition h5seisimpl.cpp:1312
virtual bool writeTrace(Eigen::Ref< Eigen::MatrixXf > TRACE, const size_t &fromTrc=0, const size_t &fromSampInd=0, const std::string &dataUnits="") override
Write block of traces starting from trace fromTrc and from sample fromSampInd
Definition h5seisimpl.cpp:285
virtual std::optional< h5gt::DataSet > getTextHeaderD() override
Get text header DataSet.
Definition h5seisimpl.cpp:1869
virtual bool setNSamp(size_t nSamp) override
Resize trace DataSet.
Definition h5seisimpl.cpp:533
virtual ptrdiff_t getBinHeaderIndex(const std::string &hdrName) override
Get index (position within 1D dataset) for a given binary header.
Definition h5seisimpl.cpp:1014
virtual H5SeisContainer * openSeisContainer() override
Open H5SeisContainer where current seismic resides.
Definition h5seisimpl.cpp:1862
virtual bool writeBinHeader(const double(&binHdr)[30]) override
Write binary header.
Definition h5seisimpl.cpp:217
virtual Eigen::VectorXd getPKeyValues(const std::string &pKey, const std::string &unitsFrom="", const std::string &unitsTo="") override
Get PKey unique values.
Definition h5seisimpl.cpp:1215
virtual Eigen::MatrixXd getTraceHeader(const size_t &fromTrc, size_t nTrc=1, const size_t &fromHdr=0, size_t nHdr=std::numeric_limits< size_t >::max(), const std::vector< std::string > &unitsFrom=std::vector< std::string >(), const std::vector< std::string > &unitsTo=std::vector< std::string >()) override
Get block of trace headers.
Definition h5seisimpl.cpp:691
virtual std::optional< h5gt::DataSet > getBinHeaderD() override
Get binary header DataSet.
Definition h5seisimpl.cpp:1876
virtual bool exportToVol(H5Vol *vol, const std::string &xHeader="CDP_X", const std::string &yHeader="CDP_Y", const std::string &ilHeader="INLINE", const std::string &xlHeader="XLINE", double ilMin=std::numeric_limits< double >::min(), double ilMax=std::numeric_limits< double >::max(), double xlMin=std::numeric_limits< double >::min(), double xlMax=std::numeric_limits< double >::max(), size_t fromSampInd=0, size_t nSamp=std::numeric_limits< size_t >::max(), std::function< void(double)> progressCallback=nullptr) override
Export seismic to H5Vol.
Definition h5seisimpl.cpp:2099
virtual bool generateSTKGeometry(double x0, double dx, size_t nx, double y0, double dy, size_t ny, double z, double orientation, const std::string &lengthUnits="", bool doCoordTransform=false) override
Definition h5seisimpl.cpp:1608
virtual size_t getNTrcHdr() override
Definition h5seisimpl.cpp:1141
virtual bool updateTraceHeaderLimits(size_t nTrcBuffer=1e7) override
Calculate and write min/max trace headers.
Definition h5seisimpl.cpp:2016
virtual bool setSampRate(double val, const std::string &units="") override
Set sampling rate.
Definition h5seisimpl.cpp:1696
virtual bool addPKeySort(const std::string &pKeyName) override
Prepare sorting.
Definition h5seisimpl.cpp:1795
virtual Eigen::MatrixXf getTrace(const size_t &fromTrc, size_t nTrc=1, const size_t &fromSampInd=0, size_t nSamp=std::numeric_limits< size_t >::max(), const std::string &dataUnits="") override
Get block of traces.
Definition h5seisimpl.cpp:621
virtual size_t getNTextHdrRows() override
Get number of text header rows.
Definition h5seisimpl.cpp:1154
virtual bool checkTraceHeaderLimits(const size_t &fromHdr, size_t &nHdr) override
Check fromHdr and nHdr (passed by reference) and diminish nHdr to fit in data limits (if fromTrc is i...
Definition h5seisimpl.cpp:1519
virtual bool setSRD(double val, const std::string &lengthUnits="") override
Set Seismic Reference Datum.
Definition h5seisimpl.cpp:1689
virtual bool checkTraceLimits(const size_t &fromTrc, size_t &nTrc) override
Check fromTrc, nTrc (passed by reference) and diminish nTrc to fit in data limits (if fromTrc is insi...
Definition h5seisimpl.cpp:1505
virtual std::optional< h5gt::DataSet > getSEGYTraceHeader4BytesD() override
Get SEGY 4-bytes trace header DataSet (for mapped H5Seis only)
Definition h5seisimpl.cpp:1990
virtual bool setSurveyType(const h5geo::SurveyType &val) override
Set survey type for the seismic (TWO_D or THREE_D)
Definition h5seisimpl.cpp:1682
virtual std::optional< h5gt::Group > getSortG() override
Get sorting Group.
Definition h5seisimpl.cpp:1895
virtual bool updateTraceHeaderNSamp() override
Set trace header number of samples from binary header.
Definition h5seisimpl.cpp:1857
virtual bool checkSampleLimits(const size_t &fromSampInd, size_t &nSamp) override
Check fromSampInd and nSamp (passed by reference) and diminish nSamp to fit in data limits (if fromSa...
Definition h5seisimpl.cpp:1534
virtual std::optional< h5gt::Group > getUValG() override
Get sorting unique values Group.
Definition h5seisimpl.cpp:1902
virtual std::optional< h5gt::DataSet > getSEGYTextHeaderD() override
Get SEGY text header DataSet (for mapped H5Seis only)
Definition h5seisimpl.cpp:1938
virtual std::optional< h5gt::DataSet > getSEGYBinHeader2BytesD() override
Get SEGY 2-bytes binary header DataSet (for mapped H5Seis only)
Definition h5seisimpl.cpp:1951
virtual Eigen::VectorXd getSamples(const size_t &trcInd, const std::string &units="") override
Get vector of equally spaced samples in specified units.
Definition h5seisimpl.cpp:1038
virtual bool generatePRESTKGeometry(double src_x0, double src_dx, size_t src_nx, double src_y0, double src_dy, size_t src_ny, double src_z, double rec_x0, double rec_dx, size_t rec_nx, double rec_y0, double rec_dy, size_t rec_ny, double rec_z, double orientation, bool moveRec, const std::string &lengthUnits="", bool doCoordTransform=false) override
Definition h5seisimpl.cpp:1549
virtual size_t getNBinHdr() override
Get number of binary headers.
Definition h5seisimpl.cpp:1146
virtual bool readSEGYTracesMMap(const std::vector< std::string > &segyFiles, std::vector< h5geo::SegyFormat > formats=std::vector< h5geo::SegyFormat >(), std::vector< h5geo::Endian > endians=std::vector< h5geo::Endian >(), std::vector< std::vector< std::string > > trcHdrNamesArr=std::vector< std::vector< std::string > >(), size_t trcBuffer=10000, int nThreads=-1, std::function< void(double)> progressCallback=nullptr) override
Read trace headers and trace data from SEGY file using Memory Mapping.
Definition h5seisimpl.cpp:113
virtual bool updateTraceHeaderSampRate() override
Set trace header samp rate from binary header.
Definition h5seisimpl.cpp:1838
virtual std::optional< h5gt::Group > getIndexesG() override
Get sorting indexes Group.
Definition h5seisimpl.cpp:1916
virtual bool setDataType(const h5geo::SeisDataType &val) override
Set datatype for the seismic (STACK or PRESTACK)
Definition h5seisimpl.cpp:1675
virtual Eigen::MatrixXd getXYTraceHeaders(const std::vector< std::string > &xyHdrNames, const size_t &fromTrc=0, size_t nTrc=std::numeric_limits< size_t >::max(), const std::string &lengthUnits="", bool doCoordTransform=false) override
Get XY trace headers (two columns in Eigen column-major matrix)
Definition h5seisimpl.cpp:847
virtual std::map< std::string, double > getTraceHeaderMin() override
Get trace header minimal values.
Definition h5seisimpl.cpp:1366
virtual std::optional< h5gt::DataSet > getSEGYBinHeader4BytesD() override
Get SEGY 4-bytes binary header DataSet (for mapped H5Seis only)
Definition h5seisimpl.cpp:1964
virtual Eigen::MatrixXd calcBoundary(const std::string &lengthUnits="", bool doCoordTransform=false) override
Calculate XY boundary around the survey.
Definition h5seisimpl.cpp:2062
virtual bool readSEGYTextHeader(const std::string &segy, h5geo::TextEncoding encoding=static_cast< h5geo::TextEncoding >(0)) override
Read text header from SEGY file.
Definition h5seisimpl.cpp:26
virtual Eigen::VectorX< size_t > getPKeyIndexes(const std::string &pKey, double pMin, double pMax, size_t pStep=1) override
Get trace indexes for given PKey
Definition h5seisimpl.cpp:1162
virtual h5geo::Domain getDomain() override
Get domain (TVD, TVDSS, TWT, OWT)
Definition h5seisimpl.cpp:1730
virtual double getFirstSample(const size_t &trcInd, const std::string &units="") override
Get first sample.
Definition h5seisimpl.cpp:1079
virtual bool updatePKeySort(const std::string &pKeyName) override
Update sorting for prepared PKey
Definition h5seisimpl.cpp:2056
virtual Eigen::VectorX< size_t > getSortedData(Eigen::MatrixXf &TRACE, Eigen::MatrixXd &HDR, const std::vector< std::string > &keyList, const std::vector< double > &minList, const std::vector< double > &maxList, size_t pStep=1, size_t fromSampInd=0, size_t nSamp=std::numeric_limits< size_t >::max(), const std::string &dataUnits="", const std::string &lengthUnits="", bool doCoordTransform=false) override
Get sorted data based on precalculated primary sort keys.
Definition h5seisimpl.cpp:930
virtual double getSRD(const std::string &lengthUnits="") override
Get Seismic Reference Datum.
Definition h5seisimpl.cpp:1748
virtual std::optional< h5gt::DataSet > getTraceD() override
Get trace DataSet.
Definition h5seisimpl.cpp:1889
virtual size_t getNSamp() override
Get number of samples.
Definition h5seisimpl.cpp:1131
virtual H5SeisParam getParam() override
Get parameters that were used to create current seis.
Definition h5seisimpl.cpp:1473
virtual bool writeTraceHeader(const Eigen::Ref< const Eigen::MatrixXd > &HDR, const size_t &fromTrc=0, const size_t &fromHdrInd=0) override
Write block of trace headers starting from trace fromTrc and from header index fromHdrInd
Definition h5seisimpl.cpp:345
virtual bool hasPKeySort(const std::string &pKeyName) override
Check if PKey sort is prepared.
Definition h5seisimpl.cpp:1755
virtual h5geo::SurveyType getSurveyType() override
Set survey type for the seismic (TWO_D or THREE_D)
Definition h5seisimpl.cpp:1742
virtual bool readSEGYTraces(const std::vector< std::string > &segyFiles, std::vector< h5geo::SegyFormat > formats=std::vector< h5geo::SegyFormat >(), std::vector< h5geo::Endian > endians=std::vector< h5geo::Endian >(), std::vector< std::vector< std::string > > trcHdrNamesArr=std::vector< std::vector< std::string > >(), size_t trcBuffer=10000, std::function< void(double)> progressCallback=nullptr) override
Read trace headers and trace data from SEGY file.
Definition h5seisimpl.cpp:48
virtual bool writeTextHeader(const char(&txtHdr)[40][80]) override
Write text header.
Definition h5seisimpl.cpp:180
virtual bool removePKeySort(const std::string &pKeyName) override
Remove PKey sorting.
Definition h5seisimpl.cpp:1777
virtual bool setDomain(const h5geo::Domain &val) override
Set domain for the seismic (TVD, TVDSS, TWT, OWT)
Definition h5seisimpl.cpp:1668
virtual std::map< std::string, double > getTraceHeaderMax() override
Get trace header maximal values.
Definition h5seisimpl.cpp:1388
virtual ptrdiff_t getTraceHeaderIndex(const std::string &hdrName) override
Get index (row/col within 2D dataset) for a given trace header.
Definition h5seisimpl.cpp:1028
virtual std::map< std::string, double > getBinHeader() override
Get binary header.
Definition h5seisimpl.cpp:569
virtual size_t getNTrc() override
Get number of traces.
Definition h5seisimpl.cpp:1136
virtual std::optional< h5gt::DataSet > getSEGYTraceHeader2BytesD() override
Get SEGY 2-bytes trace header DataSet (for mapped H5Seis only)
Definition h5seisimpl.cpp:1977
virtual std::optional< h5gt::Group > getSEGYG() override
Get SEGY Group (for mapped H5Seis only)
Definition h5seisimpl.cpp:1929
virtual bool readSEGYBinHeader(const std::string &segy, h5geo::Endian endian=static_cast< h5geo::Endian >(0)) override
Read binary header from SEGY file.
Definition h5seisimpl.cpp:37
virtual double getSampRate(const std::string &units="") override
Get sampling rate.
Definition h5seisimpl.cpp:1111
virtual h5geo::SeisDataType getDataType() override
Get datatype for the seismic (STACK or PRESTACK)
Definition h5seisimpl.cpp:1736
virtual double getLastSample(const size_t &trcInd, const std::string &units="") override
Get last sample.
Definition h5seisimpl.cpp:1106
virtual std::optional< h5gt::DataSet > getTraceHeaderD() override
Get trace header DataSet.
Definition h5seisimpl.cpp:1883
virtual std::optional< h5gt::DataSet > getSEGYTraceFloatD() override
Get SEGY float trace DataSet (for mapped H5Seis only)
Definition h5seisimpl.cpp:2003
virtual size_t getPKeySize(const std::string &pKey) override
Get number of unique values for a given PKey
Definition h5seisimpl.cpp:1246
Provides API to work with volumes.
Definition h5vol.h:15
H5GEO_EXPORT H5Seis * openSeis(h5gt::Group group)
Factory function for opening H5Seis.
Definition h5baseimpl.cpp:2053
Class for creating H5Seis.
Definition h5base.h:165