9#include "private/h5core_sr_settings.h"
12#include "h5geo_export.h"
13#include "private/h5enum.h"
14#include "private/h5point.h"
21typedef unsigned long long hsize_t ;
31enum class DevDataType: unsigned;
190 virtual void Delete() = 0;
194class OGRCoordinateTransformation;
209 void operator()(
H5Base * ptr)
const;
213struct H5GEO_EXPORT OGRCoordinateTransformationDeleter
215 void operator()(OGRCoordinateTransformation * ptr)
const;
218struct H5GEO_EXPORT GDALDatasetDeleter
220 void operator()(GDALDataset * ptr)
const;
282 const std::string& fileName);
289 const std::string& fileName);
296 const std::string& fileName);
303 const std::string& fileName);
310 const std::string& fileName);
317 const std::string& fileName);
325 const h5geo::ContainerType& cntType);
346 const std::string& fileName,
const std::string& objName);
353 const std::string& fileName,
const std::string& objName);
360 const std::string& fileName,
const std::string& objName);
367 const std::string& fileName,
const std::string& objName);
374 const std::string& fileName,
const std::string& objName);
381 const std::string& fileName,
const std::string& objName);
388 const std::string& fileName,
const std::string& objName);
395 const std::string& fileName,
const std::string& objName);
402 const std::string& fileName,
const std::string& objName);
409 const std::string& fileName,
const std::string& objName);
416 const std::string& fileName,
const std::string& objName);
423 const std::string& fileName,
const std::string& objName);
430 const std::string& fileName,
const std::string& objName);
437 const std::string& fileName,
const std::string& objName);
444 const std::string& fileName,
const std::string& objName);
448 const h5gt::Group& group);
451 const h5gt::Group& group,
452 const h5geo::ObjectType& objType);
455H5GEO_EXPORT
bool isHorizon(
const h5gt::Group &group);
457H5GEO_EXPORT
bool isPoints1(
const h5gt::Group &group);
459H5GEO_EXPORT
bool isPoints2(
const h5gt::Group &group);
461H5GEO_EXPORT
bool isPoints3(
const h5gt::Group &group);
463H5GEO_EXPORT
bool isPoints4(
const h5gt::Group &group);
465H5GEO_EXPORT
bool isWellTops(
const h5gt::Group &group);
467H5GEO_EXPORT
bool isPoints(
const h5gt::Group &group);
469H5GEO_EXPORT
bool isMap(
const h5gt::Group &group);
471H5GEO_EXPORT
bool isWell(
const h5gt::Group &group);
473H5GEO_EXPORT
bool isLogCurve(
const h5gt::Group &group);
475H5GEO_EXPORT
bool isDevCurve(
const h5gt::Group &group);
477H5GEO_EXPORT
bool isSeis(
const h5gt::Group &group);
479H5GEO_EXPORT
bool isVol(
const h5gt::Group &group);
483 const h5gt::Group& group);
489using H5Base_ptr = std::unique_ptr<H5Base, h5geo::ObjectDeleter>;
492using OGRCT_ptr = std::unique_ptr<OGRCoordinateTransformation, h5geo::OGRCoordinateTransformationDeleter>;
493using GDALDS_ptr = std::unique_ptr<GDALDataset, h5geo::GDALDatasetDeleter>;
Base class for geo-containers.
Definition h5basecontainer.h:9
Base class for all geo-containers and geo-objects.
Definition h5base.h:182
virtual H5Base * clone()=0
Base class for geo-objects.
Definition h5baseobject.h:13
Base class for Points.
Definition h5basepoints.h:16
Provides API to work with well deviations (trajectories)
Definition h5devcurve.h:21
Provides API to work with horizons.
Definition h5horizon.h:17
Provides API to work with well logs.
Definition h5logcurve.h:18
A container built around HDF5 file and used for storing and manipulating H5Map objects.
Definition h5mapcontainer.h:15
Provides API to work with maps.
Definition h5map.h:19
Provides API to work with 1D points.
Definition h5points1.h:12
Provides API to work with 2D points.
Definition h5points2.h:12
Provides API to work with 3D points.
Definition h5points3.h:12
Provides API to work with 4D points.
Definition h5points4.h:12
A container built around HDF5 file and used for storing and manipulating H5Seis objects.
Definition h5seiscontainer.h:15
Provides API to work with seismic.
Definition h5seis.h:33
A container built around HDF5 file and used for storing and manipulating H5Vol objects.
Definition h5volcontainer.h:15
Provides API to work with volumes.
Definition h5vol.h:15
A container built around HDF5 file and used for storing and manipulating H5Well objects.
Definition h5wellcontainer.h:15
Provides API to work with wells.
Definition h5well.h:22
Provides API to work with welltops.
Definition h5welltops.h:12
Basic namespace.
Definition h5base.h:29
H5GEO_EXPORT H5Map * openMap(h5gt::Group group)
Factory function for opening H5Map.
Definition h5baseimpl.cpp:2026
H5GEO_EXPORT H5BaseContainer * openContainerByName(const std::string &fileName)
Factory function for opening geo-container.
Definition h5baseimpl.cpp:1743
H5GEO_EXPORT H5Seis * openSeisByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Seis.
Definition h5baseimpl.cpp:2060
H5GEO_EXPORT H5LogCurve * openLogCurveByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5LogCurve.
Definition h5baseimpl.cpp:2168
H5GEO_EXPORT bool isMap(const h5gt::Group &group)
Check if HDF5 object is H5Map.
Definition h5baseimpl.cpp:1560
H5GEO_EXPORT bool isGeoContainerByType(h5gt::File file, const h5geo::ContainerType &cntType)
Check if the container belongs to any geo-type.
Definition h5baseimpl.cpp:1342
H5GEO_EXPORT H5BasePoints * openPointsByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5BasePoints derived points.
Definition h5baseimpl.cpp:2202
H5GEO_EXPORT H5BaseContainer * createContainer(h5gt::File h5File, h5geo::ContainerType cntType, h5geo::CreationType createFlag)
Factory function for creating geo-container.
Definition h5baseimpl.cpp:1661
H5GEO_EXPORT H5SeisContainer * createSeisContainer(h5gt::File h5File, h5geo::CreationType createFlag)
Factory function for creating H5SeisContainer.
Definition h5baseimpl.cpp:1811
H5GEO_EXPORT H5VolContainer * createVolContainer(h5gt::File h5File, h5geo::CreationType createFlag)
Factory function for creating H5VolContainer.
Definition h5baseimpl.cpp:1856
H5GEO_EXPORT H5VolContainer * openVolContainer(h5gt::File h5File)
Factory function for opening H5VolContainer.
Definition h5baseimpl.cpp:1879
H5GEO_EXPORT H5BaseObject * openBaseObjectByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5BaseObject.
Definition h5baseimpl.cpp:2006
H5GEO_EXPORT bool isGeoContainer(h5gt::File file)
Check if the container belongs to any geo-type.
Definition h5baseimpl.cpp:1333
H5GEO_EXPORT H5WellContainer * createWellContainerByName(std::string &fileName, h5geo::CreationType createFlag)
Factory function for creating H5WellContainer.
Definition h5baseimpl.cpp:1913
H5GEO_EXPORT H5Points3 * openPoints3ByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Points3.
Definition h5baseimpl.cpp:2284
H5GEO_EXPORT H5DevCurve * openDevCurve(h5gt::Group group)
Factory function for opening H5DevCurve.
Definition h5baseimpl.cpp:2134
H5GEO_EXPORT h5geo::ContainerType getGeoContainerType(h5gt::File file)
Get container geo-type.
Definition h5baseimpl.cpp:1361
H5GEO_EXPORT H5SeisContainer * openSeisContainerByName(const std::string &fileName)
Factory function for opening H5SeisContainer.
Definition h5baseimpl.cpp:1839
H5GEO_EXPORT H5Points4 * openPoints4ByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Points4.
Definition h5baseimpl.cpp:2311
H5GEO_EXPORT bool isHorizon(const h5gt::Group &group)
Check if HDF5 object is H5Horizon.
Definition h5baseimpl.cpp:1545
H5GEO_EXPORT H5WellContainer * createWellContainer(h5gt::File h5File, h5geo::CreationType createFlag)
Factory function for creating H5WellContainer.
Definition h5baseimpl.cpp:1901
H5GEO_EXPORT H5WellContainer * openWellContainerByName(const std::string &fileName)
Factory function for opening H5WellContainer.
Definition h5baseimpl.cpp:1930
H5GEO_EXPORT bool isDevCurve(const h5gt::Group &group)
Check if HDF5 object is H5DevCurve.
Definition h5baseimpl.cpp:1600
H5GEO_EXPORT h5geo::ObjectType getGeoObjectType(const h5gt::Group &group)
Get HDF5 object's geo-type.
Definition h5baseimpl.cpp:1409
H5GEO_EXPORT bool isGeoObject(const h5gt::Group &group)
Check if HDF5 object belongs to any geo-type.
Definition h5baseimpl.cpp:1367
H5GEO_EXPORT H5BaseObject * openObject(h5gt::Group group)
Factory function for opening geo-object.
Definition h5baseimpl.cpp:1944
H5GEO_EXPORT H5Well * openWellByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Well.
Definition h5baseimpl.cpp:2114
H5GEO_EXPORT H5MapContainer * openMapContainerByName(const std::string &fileName)
Factory function for opening H5MapContainer.
Definition h5baseimpl.cpp:1794
H5GEO_EXPORT H5Points2 * openPoints2(h5gt::Group group)
Factory function for opening H5Points2.
Definition h5baseimpl.cpp:2250
H5GEO_EXPORT H5BaseObject * openObjectByName(const std::string &fileName, const std::string &objName)
Factory function for opening geo-object.
Definition h5baseimpl.cpp:1979
H5GEO_EXPORT H5Well * openWell(h5gt::Group group)
Factory function for opening H5Well.
Definition h5baseimpl.cpp:2107
H5GEO_EXPORT H5Points2 * openPoints2ByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Points2.
Definition h5baseimpl.cpp:2257
H5GEO_EXPORT H5Vol * openVolByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Vol.
Definition h5baseimpl.cpp:2087
H5GEO_EXPORT bool isLogCurve(const h5gt::Group &group)
Check if HDF5 object is H5LogCurve.
Definition h5baseimpl.cpp:1590
H5GEO_EXPORT H5BaseContainer * createContainerByName(std::string &fileName, h5geo::ContainerType cntType, h5geo::CreationType createFlag)
Factory function for creating geo-container.
Definition h5baseimpl.cpp:1681
H5GEO_EXPORT bool isGeoObjectByType(const h5gt::Group &group, const h5geo::ObjectType &objType)
Check if HDF5 object belongs to specified geo-type.
Definition h5baseimpl.cpp:1376
H5GEO_EXPORT H5Points4 * openPoints4(h5gt::Group group)
Factory function for opening H5Points4.
Definition h5baseimpl.cpp:2304
H5GEO_EXPORT H5WellContainer * openWellContainer(h5gt::File h5File)
Factory function for opening H5WellContainer.
Definition h5baseimpl.cpp:1925
H5GEO_EXPORT H5VolContainer * openVolContainerByName(const std::string &fileName)
Factory function for opening H5VolContainer.
Definition h5baseimpl.cpp:1884
H5GEO_EXPORT H5MapContainer * createMapContainer(h5gt::File h5File, h5geo::CreationType createFlag)
Factory function for creating H5MapContainer.
Definition h5baseimpl.cpp:1764
H5GEO_EXPORT H5BasePoints * openPoints(h5gt::Group group)
Factory function for opening H5BasePoints derived points.
Definition h5baseimpl.cpp:2188
H5GEO_EXPORT bool isPoints3(const h5gt::Group &group)
Check if HDF5 object is H5Points3.
Definition h5baseimpl.cpp:1498
H5GEO_EXPORT H5Seis * openSeis(h5gt::Group group)
Factory function for opening H5Seis.
Definition h5baseimpl.cpp:2053
H5GEO_EXPORT H5Horizon * openHorizonByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Horizon.
Definition h5baseimpl.cpp:2367
H5GEO_EXPORT bool isPoints1(const h5gt::Group &group)
Check if HDF5 object is H5Points1.
Definition h5baseimpl.cpp:1456
H5GEO_EXPORT H5BaseContainer * openBaseContainerByName(const std::string &fileName)
Factory function for opening H5BaseContainer.
Definition h5baseimpl.cpp:1707
H5GEO_EXPORT H5Map * openMapByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Map.
Definition h5baseimpl.cpp:2033
H5GEO_EXPORT bool isWellTops(const h5gt::Group &group)
Check if HDF5 object is H5WellTops.
Definition h5baseimpl.cpp:1540
H5GEO_EXPORT bool isSeis(const h5gt::Group &group)
Check if HDF5 object is H5Seis.
Definition h5baseimpl.cpp:1610
H5GEO_EXPORT H5WellTops * openWellTops(h5gt::Group group)
Factory function for opening H5WellTops.
Definition h5baseimpl.cpp:2331
H5GEO_EXPORT H5SeisContainer * createSeisContainerByName(std::string &fileName, h5geo::CreationType createFlag)
Factory function for creating H5SeisContainer.
Definition h5baseimpl.cpp:1823
H5GEO_EXPORT H5MapContainer * createMapContainerByName(std::string &fileName, h5geo::CreationType createFlag)
Factory function for creating H5MapContainer.
Definition h5baseimpl.cpp:1776
H5GEO_EXPORT H5Vol * openVol(h5gt::Group group)
Factory function for opening H5Vol.
Definition h5baseimpl.cpp:2080
H5GEO_EXPORT H5BaseContainer * openContainer(h5gt::File h5File)
Factory function for opening geo-container.
Definition h5baseimpl.cpp:1723
H5GEO_EXPORT H5BaseObject * openBaseObject(h5gt::Group group)
Factory function for opening H5BaseObject.
Definition h5baseimpl.cpp:2000
H5GEO_EXPORT H5Points1 * openPoints1(h5gt::Group group)
Factory function for opening H5Points1.
Definition h5baseimpl.cpp:2223
H5GEO_EXPORT H5WellTops * openWellTopsByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5WellTops.
Definition h5baseimpl.cpp:2338
H5GEO_EXPORT H5MapContainer * openMapContainer(h5gt::File h5File)
Factory function for opening H5MapContainer.
Definition h5baseimpl.cpp:1788
H5GEO_EXPORT bool isPoints4(const h5gt::Group &group)
Check if HDF5 object is H5Points4.
Definition h5baseimpl.cpp:1519
H5GEO_EXPORT H5Points1 * openPoints1ByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5Points1.
Definition h5baseimpl.cpp:2230
H5GEO_EXPORT H5LogCurve * openLogCurve(h5gt::Group group)
Factory function for opening H5LogCurve.
Definition h5baseimpl.cpp:2161
H5GEO_EXPORT H5Horizon * openHorizon(h5gt::Group group)
Factory function for opening H5Horizon.
Definition h5baseimpl.cpp:2358
H5GEO_EXPORT bool isPoints(const h5gt::Group &group)
Check if HDF5 object belongs to any H5BasePoints derived type.
Definition h5baseimpl.cpp:1441
CreationType
Definition h5enum.h:468
H5GEO_EXPORT H5SeisContainer * openSeisContainer(h5gt::File h5File)
Factory function for opening H5SeisContainer.
Definition h5baseimpl.cpp:1834
H5GEO_EXPORT H5BaseContainer * openBaseContainer(h5gt::File h5File)
Factory function for opening H5BaseContainer.
Definition h5baseimpl.cpp:1701
H5GEO_EXPORT bool isVol(const h5gt::Group &group)
Check if HDF5 object is H5Vol.
Definition h5baseimpl.cpp:1644
H5GEO_EXPORT H5DevCurve * openDevCurveByName(const std::string &fileName, const std::string &objName)
Factory function for opening H5DevCurve.
Definition h5baseimpl.cpp:2141
H5GEO_EXPORT bool isPoints2(const h5gt::Group &group)
Check if HDF5 object is H5Points2.
Definition h5baseimpl.cpp:1477
H5GEO_EXPORT H5VolContainer * createVolContainerByName(std::string &fileName, h5geo::CreationType createFlag)
Factory function for creating H5VolContainer.
Definition h5baseimpl.cpp:1868
H5GEO_EXPORT bool isWell(const h5gt::Group &group)
Check if HDF5 object is H5Well.
Definition h5baseimpl.cpp:1575
H5GEO_EXPORT H5Points3 * openPoints3(h5gt::Group group)
Factory function for opening H5Points3.
Definition h5baseimpl.cpp:2277
Base class for object parameters.
Definition h5base.h:58
std::string temporalUnits
all geo-object's temporalUnits data must follow it (if any)
Definition h5base.h:61
double nullValue
usually used for missed values
Definition h5base.h:64
std::string dataUnits
all geo-object's dataUnits data must follow it (if any)
Definition h5base.h:63
std::string spatialReference
usually in the form authName:code given by 'proj.db' (probably using name will also work)
Definition h5base.h:59
std::string lengthUnits
all geo-object's lengthUnits data must follow it (if any)
Definition h5base.h:60
std::string angularUnits
all geo-object's angularUnits data must follow it (if any)
Definition h5base.h:62
Class for creating H5DevCurve.
Definition h5base.h:149
hsize_t chunkSize
see HDF5 chunking
Definition h5base.h:150
Class for creating H5Horizon.
Definition h5base.h:87
h5geo::Domain domain
time or depth (TWT, TVD etc)
Definition h5base.h:88
hsize_t pointsChunkSize
see HDF5 chunking
Definition h5base.h:91
std::map< std::string, size_t > components
component name and corresponding HDF5 row number
Definition h5base.h:90
size_t nPoints
number of points (columns within HDF5 DataSet)
Definition h5base.h:89
Class for creating H5LogCurve.
Definition h5base.h:157
hsize_t chunkSize
see HDF5 chunking
Definition h5base.h:158
Class for creating H5Map.
Definition h5base.h:98
double Y0
Y-coordinate of origin (upper-left corner of column-major Eigen matrix)
Definition h5base.h:100
hsize_t yChunkSize
see HDF5 chunking
Definition h5base.h:109
size_t nX
number of columns in column-major Eigen matrix
Definition h5base.h:105
double X2
X-coordinate of second point (lower-left corner of column-major Eigen matrix)
Definition h5base.h:103
h5geo::Domain domain
time or depth (TWT, TVD etc)
Definition h5base.h:107
double Y2
Y-coordinate of second point (lower-left corner of column-major Eigen matrix)
Definition h5base.h:104
double X1
X-coordinate of first point (upper-right corner of column-major Eigen matrix)
Definition h5base.h:101
size_t nY
number of rows in column-major Eigen matrix
Definition h5base.h:106
double X0
X-coordinate of origin (upper-left corner of column-major Eigen matrix)
Definition h5base.h:99
hsize_t xChunkSize
see HDF5 chunking
Definition h5base.h:108
double Y1
Y-coordinate of first point (upper-right corner of column-major Eigen matrix)
Definition h5base.h:102
Common class for creating H5Points1, H5Points2, H5Points3, H5Points4.
Definition h5base.h:71
size_t nPoints
number of points
Definition h5base.h:73
h5geo::Domain domain
time or depth (TWT, TVD etc)
Definition h5base.h:72
hsize_t chunkSize
see HDF5 chunking
Definition h5base.h:74
Class for creating H5Seis.
Definition h5base.h:165
hsize_t trcChunk
number of traces per chunk (see HDF5 chunking)
Definition h5base.h:172
std::vector< std::string > segyFiles
used to map SEGY files (use in pair with mapSEGY)
Definition h5base.h:175
h5geo::Domain domain
time or depth (TWT, TVD etc)
Definition h5base.h:166
hsize_t stdChunk
used secondary for creating datasets within Seis geo-object (see HDF5 chunking)
Definition h5base.h:173
h5geo::SurveyType surveyType
TWO_D or THREE_D.
Definition h5base.h:168
bool mapSEGY
SEGY mapping used at Seis creation time (use in pair with segyFiles)
Definition h5base.h:174
h5geo::SeisDataType dataType
STACK or PRESTACK.
Definition h5base.h:167
size_t nTrc
number of traces
Definition h5base.h:169
size_t nSamp
number of samples
Definition h5base.h:170
double srd
Seismic Reference Datum.
Definition h5base.h:171
Class for creating H5Vol.
Definition h5base.h:116
hsize_t zChunkSize
see HDF5 chunking
Definition h5base.h:130
size_t nZ
number of Z-values
Definition h5base.h:125
double dX
unrotated X-spacing
Definition h5base.h:120
double X0
X-coordinate of origin.
Definition h5base.h:117
hsize_t yChunkSize
see HDF5 chunking
Definition h5base.h:129
h5geo::Domain domain
time or depth (TWT, TVD etc)
Definition h5base.h:127
double Z0
Z-coordinate of origin.
Definition h5base.h:119
size_t nX
number of X-values
Definition h5base.h:123
double Y0
Y-coordinate of origin.
Definition h5base.h:118
double dY
unrotated Y-spacing
Definition h5base.h:121
double dZ
unrotated Z-zpacing
Definition h5base.h:122
double orientation
XY plane orientation (in angularUnits)
Definition h5base.h:126
size_t nY
number of Y-values
Definition h5base.h:124
hsize_t xChunkSize
see HDF5 chunking
Definition h5base.h:128
unsigned compression_level
see HDF5 chunking and deflate
Definition h5base.h:131
Class for creating H5Well.
Definition h5base.h:138
double headY
well head Y-coordinate
Definition h5base.h:140
double kb
kelly bushing
Definition h5base.h:141
double headX
well head X-coordinate
Definition h5base.h:139
Class for creating H5WellTops.
Definition h5base.h:81
Deleter for all H5Base inherited objects.
Definition h5base.h:208