#  Copyright (c) 2024 Bentley Systems, Incorporated. All rights reserved.
### extends 'class_empty.py'
### block ClassImports
# NOTICE: Do not edit anything here, it is generated code
import warnings
from . import gxapi_cy
from geosoft.gxapi import GXContext, float_ref, int_ref, str_ref
### endblock ClassImports
### block Header
# NOTICE: The code generator will not replace the code in this block
### endblock Header
### block ClassImplementation
# NOTICE: Do not edit anything here, it is generated code
[docs]
class GXDU(gxapi_cy.WrapDU):
    """
    GXDU class.
    `GXDU <geosoft.gxapi.GXDU>` functions provide a variety of common utilities that can be applied
    efficiently to the contents of a database. Most `GXDU <geosoft.gxapi.GXDU>` library functions take
    as their first argument a `GXDB <geosoft.gxapi.GXDB>` object, and apply standard processes to data
    stored in an OASIS database, including import and export functions.
    **Note:**
    The following defines are used by GX functions but are not required
    for any methods:
    :ref:`DU_LINES`
    """
[docs]
    def __init__(self, handle=0):
        super(GXDU, self).__init__(GXContext._get_tls_geo(), handle) 
[docs]
    @classmethod
    def null(cls):
        """
        A null (undefined) instance of `GXDU <geosoft.gxapi.GXDU>`
        
        :returns: A null `GXDU <geosoft.gxapi.GXDU>`
        :rtype:   GXDU
        """
        return GXDU() 
[docs]
    def is_null(self):
        """
        Check if this is a null (undefined) instance
        
        :returns: True if this is a null (undefined) instance, False otherwise.
        :rtype:   bool
        """
        return self._internal_handle() == 0 
# Miscellaneous
[docs]
    @classmethod
    def table_look1(cls, db, line, i_ch, o_ch, ref_field, l_field, mode, close, tb):
        """
        
        Create a new channel using a single reference table
        
        :param db:         Database
        :param line:       Line Handle
        :param i_ch:       Lookup reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:       Output Channel Token     [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param ref_field:  Reference field name in table
        :param l_field:    Lookup output name in table
        :param mode:       :ref:`DU_LOOKUP`
        :param close:      CLOSE lookup distance. If 0.0, distance is calculated from lookup reference channel.
        :param tb:         `GXTB <geosoft.gxapi.GXTB>` table Object
        :type  db:         GXDB
        :type  line:       int
        :type  i_ch:       int
        :type  o_ch:       int
        :type  ref_field:  str
        :type  l_field:    str
        :type  mode:       int
        :type  close:      float
        :type  tb:         GXTB
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Fails if table does not contain requested fields.
        The nominal data sample spacing for the CLOSE options is
        calculated by finding the fiducial increment the
        - primary index channel for Lookup1C_DU;
        - secondary index channel for Lookup2C_DU, LookupIValC_DU
        and LookupRValC_DU
        """
        
        gxapi_cy.WrapDU._table_look1(GXContext._get_tls_geo(), db, line, i_ch, o_ch, ref_field.encode(), l_field.encode(), mode, close, tb) 
        
[docs]
    @classmethod
    def table_look2(cls, db, line, r1_ch, r2_ch, o_ch, r1_field, r2_field, l_field, mode, close, tb):
        """
        
        Create a new channel using a double reference  table.
        
        :param db:        Database
        :param line:      Line Handle
        :param r1_ch:     Primary reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param r2_ch:     Secondary reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:      Output channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param r1_field:  Primary reference field name in table
        :param r2_field:  Secondary reference field name in table
        :param l_field:   Lookup result field name in table
        :param mode:      :ref:`DU_LOOKUP`
        :param close:     CLOSE lookup distance.  If 0.0, distance is calculated from secondary reference channel.
        :param tb:        Table Object
        :type  db:        GXDB
        :type  line:      int
        :type  r1_ch:     int
        :type  r2_ch:     int
        :type  o_ch:      int
        :type  r1_field:  str
        :type  r2_field:  str
        :type  l_field:   str
        :type  mode:      int
        :type  close:     float
        :type  tb:        GXTB
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Fails if table does not contain requested fields.
        The nominal data sample spacing for the CLOSE options is
        calculated by finding the fiducial increment the
        - primary index channel for Lookup1C_DU;
        - secondary index channel for Lookup2C_DU, LookupIValC_DU
        and LookupRValC_DU
        """
        
        gxapi_cy.WrapDU._table_look2(GXContext._get_tls_geo(), db, line, r1_ch, r2_ch, o_ch, r1_field.encode(), r2_field.encode(), l_field.encode(), mode, close, tb) 
        
[docs]
    @classmethod
    def table_look_i2(cls, db, line, val, i_ch, o_ch, r1, r2, field, mode, dist, tb):
        """
        
        Create a new channel using constant integer primary
        reference and a secondary reference table.
        
        :param db:     Database
        :param line:   Line Handle
        :param val:    Lookup primary reference value
        :param i_ch:   Lookup secondary reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Output Channel Token [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param r1:     Primary reference field name in table
        :param r2:     Secondary reference field name in table
        :param field:  Lookup result field name in table
        :param mode:   :ref:`DU_LOOKUP`
        :param dist:   CLOSE lookup distance.  If 0.0, distance calculated from secondary reference channel.
        :param tb:     Table Object
        :type  db:     GXDB
        :type  line:   int
        :type  val:    int
        :type  i_ch:   int
        :type  o_ch:   int
        :type  r1:     str
        :type  r2:     str
        :type  field:  str
        :type  mode:   int
        :type  dist:   float
        :type  tb:     GXTB
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Fails if table does not contain requested fields.
        The nominal data sample spacing for the CLOSE options is
        calculated by finding the fiducial increment the
        - primary index channel for Lookup1C_DU;
        - secondary index channel for Lookup2C_DU, LookupIValC_DU
        and LookupRValC_DU
        """
        
        gxapi_cy.WrapDU._table_look_i2(GXContext._get_tls_geo(), db, line, val, i_ch, o_ch, r1.encode(), r2.encode(), field.encode(), mode, dist, tb) 
        
[docs]
    @classmethod
    def table_look_r2(cls, db, line, val, i_ch, o_ch, r1, r2, field, mode, dist, tb):
        """
        
        Create a new channel using a constant real primary
        reference and a secondary reference table.
        
        :param db:     Database
        :param line:   Line Handle
        :param val:    Primary reference value
        :param i_ch:   Secondary reference value [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Output Channel Token [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param r1:     Primary reference field name in table
        :param r2:     Secondary reference field name in table
        :param field:  Lookup result field name in table
        :param mode:   :ref:`DU_LOOKUP`
        :param dist:   CLOSE lookup distance.  If 0.0, distance calculated from secondary reference channel.
        :param tb:     Table Object
        :type  db:     GXDB
        :type  line:   int
        :type  val:    float
        :type  i_ch:   int
        :type  o_ch:   int
        :type  r1:     str
        :type  r2:     str
        :type  field:  str
        :type  mode:   int
        :type  dist:   float
        :type  tb:     GXTB
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Fails if table does not contain requested fields.
        The nominal data sample spacing for the CLOSE options is
        calculated by finding the fiducial increment the
        - primary index channel for Lookup1C_DU;
        - secondary index channel for Lookup2C_DU, LookupIValC_DU
        and LookupRValC_DU
        """
        
        gxapi_cy.WrapDU._table_look_r2(GXContext._get_tls_geo(), db, line, val, i_ch, o_ch, r1.encode(), r2.encode(), field.encode(), mode, dist, tb) 
        
[docs]
    @classmethod
    def ado_table_names(cls, connect, vv):
        """
        
        Scans a ADO-compliant database and returns the table names in a `GXVV <geosoft.gxapi.GXVV>`
        
        :param connect:  Database connection string
        :param vv:       `GXVV <geosoft.gxapi.GXVV>` to return names in
        :type  connect:  str
        :type  vv:       GXVV
        .. versionadded:: 5.0.8
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The `GXVV <geosoft.gxapi.GXVV>` must be created to hold strings of length
        `STR_DB_SYMBOL <geosoft.gxapi.STR_DB_SYMBOL>`; i.e. use
        Creat_VV(-`STR_DB_SYMBOL <geosoft.gxapi.STR_DB_SYMBOL>`, 0), or it will assert.
        """
        
        gxapi_cy.WrapDU._ado_table_names(GXContext._get_tls_geo(), connect.encode(), vv) 
        
[docs]
    @classmethod
    def an_sig(cls, db, line, i_ch, o_ch):
        """
        
        Calculate the Analytic Signal of a channel.
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Input channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Output Analytic Signal channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._an_sig(GXContext._get_tls_geo(), db, line, i_ch, o_ch) 
        
[docs]
    @classmethod
    def append(cls, d_bi, d_bo, ignore):
        """
        
        Append a source database onto a destination database.
        
        :param d_bi:    Source Database
        :param d_bo:    Destination Database
        :param ignore:  Ignore write protection on channels? (TRUE or FALSE)
        :type  d_bi:    GXDB
        :type  d_bo:    GXDB
        :type  ignore:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** If the source database and destination database have channels
        with the same name, then data is appended onto the end
        of the channel in lines which have the same number.
        If a channel in the destination database is not also in the source
        database, it is ignored.
        """
        
        gxapi_cy.WrapDU._append(GXContext._get_tls_geo(), d_bi, d_bo, ignore) 
        
[docs]
    @classmethod
    def avg_azimuth(cls, db, precision, azimuth):
        """
        
        Returns average azimuth of selected lines.
        
        :param db:         Database Object
        :param precision:  Precision in degrees (1 to 45)
        :param azimuth:    Azimuth value returned
        :type  db:         GXDB
        :type  precision:  float
        :type  azimuth:    float_ref
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Direction in degrees azimuth (clockwise relative
        the +Y direction). The result is in the range
        -90 < azimuth <= 90. The method handles lines going
        in opposite directions (they do not average to 0!)
        The method takes a precision, which is used to generate
        a series of "test" angles.
        The dot product of the line directions is taken
        with each of the test angles, and the absolute values summed.
        The maximum value occurs at the angle which most closely
        approximates the trend direction of the lines.
        """
        
        azimuth.value = gxapi_cy.WrapDU._avg_azimuth(GXContext._get_tls_geo(), db, precision, azimuth.value) 
        
[docs]
    @classmethod
    def avg_azimuth2(cls, db, xCh, yCh, precision, azimuth):
        """
        
        Returns average azimuth of selected lines.
        
        :param db:         Database Object
        :param xCh:        X channel name
        :param yCh:        Y channel name
        :param precision:  Precision in degrees (1 to 45)
        :param azimuth:    Azimuth value returned
        :type  db:         GXDB
        :type  xCh:        str
        :type  yCh:        str
        :type  precision:  float
        :type  azimuth:    float_ref
        .. versionadded:: 2023.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Same as AvgAzimuth, but input the X and Y channels to use.
        """
        
        azimuth.value = gxapi_cy.WrapDU._avg_azimuth2(GXContext._get_tls_geo(), db, xCh.encode(), yCh.encode(), precision, azimuth.value) 
        
[docs]
    @classmethod
    def average_spacing(cls, db, line, xCh, yCh):
        """
        
        Returns the average spacing along a line.
        This is a simple average of the individual point separations after dummies are removed.
        Returns DUMMY if there are fewer than two valid locations.
        
        :param db:    Database
        :param line:  Line handle
        :param xCh:   X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param yCh:   Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :type  db:    GXDB
        :type  line:  int
        :type  xCh:   int
        :type  yCh:   int
        :rtype:       float
        .. versionadded:: 2022.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        ret_val = gxapi_cy.WrapDU._average_spacing(GXContext._get_tls_geo(), db, line, xCh, yCh)
        return ret_val 
[docs]
    @classmethod
    def base_data(cls, db, line, in_ch, time_ch, out_ch, tb):
        """
        
        This method corrects an entire database line using a
        time-based correction table. It is given 2 input channel
        tokens and 1 output channel token as well as the table
        object to use.
        
        :param db:       Database
        :param line:     Line Handle to apply correction to
        :param in_ch:    Input Channel Token  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param time_ch:  Time Channel Token   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param out_ch:   Output Channel Token [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param tb:       Table Object (a Date/Time/Correction Table)
        :type  db:       GXDB
        :type  line:     int
        :type  in_ch:    int
        :type  time_ch:  int
        :type  out_ch:   int
        :type  tb:       GXTB
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._base_data(GXContext._get_tls_geo(), db, line, in_ch, time_ch, out_ch, tb) 
        
[docs]
    @classmethod
    def base_data_ex(cls, db, line, in_ch, time_ch, out_ch, tb, flag):
        """
        
        This method corrects an entire database line using a
        time-based correction table. It is given 2 input channel
        tokens and 1 output channel token as well as the table
        object to use (table sort flag=1 for sort, =0 for no sort).
        
        :param db:       Database
        :param line:     Line Handle to apply correction to
        :param in_ch:    Input Channel Token  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param time_ch:  Time Channel Token   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param out_ch:   Output Channel Token [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param tb:       Table Object (a Date/Time/Correction Table)
        :param flag:     Table sort flag: 0 - do not sort, 1 - do sort.
        :type  db:       GXDB
        :type  line:     int
        :type  in_ch:    int
        :type  time_ch:  int
        :type  out_ch:   int
        :type  tb:       GXTB
        :type  flag:     int
        .. versionadded:: 5.1.8
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._base_data_ex(GXContext._get_tls_geo(), db, line, in_ch, time_ch, out_ch, tb, flag) 
        
[docs]
    @classmethod
    def bound_line(cls, db, line, x_chan, y_chan, pply):
        """
        
        Set map boundary clip limits.
        
        :param db:      Database
        :param line:    Line Handle [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param x_chan:  X Channel   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_chan:  Y Channel   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param pply:    Polygon Object to use
        :type  db:      GXDB
        :type  line:    int
        :type  x_chan:  int
        :type  y_chan:  int
        :type  pply:    GXPLY
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._bound_line(GXContext._get_tls_geo(), db, line, x_chan, y_chan, pply) 
        
[docs]
    @classmethod
    def bp_filt(cls, db, line, i_ch, o_ch, sw, lw, filt_len):
        """
        
        This method applies a band-pass filter to the specified
        line/channel and places the output in the output channel.
        
        :param db:        Database
        :param line:      Line handle
        :param i_ch:      Input channel to filter [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:      Output filtered channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param sw:        Short wavelength cutoff, 0 for highpass
        :param lw:        Long wavelength cutoff, 0 for lowpass
        :param filt_len:  Filter Length, 0 for default length
        :type  db:        GXDB
        :type  line:      int
        :type  i_ch:      int
        :type  o_ch:      int
        :type  sw:        float
        :type  lw:        float
        :type  filt_len:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** If the short and long wavelengths are <= 0, the input channel
        is simply copied to the output channel without filtering.
        """
        
        gxapi_cy.WrapDU._bp_filt(GXContext._get_tls_geo(), db, line, i_ch, o_ch, sw, lw, filt_len) 
        
[docs]
    @classmethod
    def break_line(cls, db, line, chan):
        """
        
        Break up a line based on line numbers in a channel.
        
        :param db:    Database
        :param line:  Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param chan:  Channel containing line numbers [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :type  db:    GXDB
        :type  line:  int
        :type  chan:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._break_line(GXContext._get_tls_geo(), db, line, chan) 
        
[docs]
    @classmethod
    def break_line2(cls, db, line, chan, reset_fi_ds):
        """
        
        Break up a line based on line numbers in a channel.
        
        :param db:           Database
        :param line:         Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param chan:         Channel containing line numbers [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param reset_fi_ds:  Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:           GXDB
        :type  line:         int
        :type  chan:         int
        :type  reset_fi_ds:  int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The same as BreakLine, but with an option to reset each line's starting fiducial to zero.
        """
        
        gxapi_cy.WrapDU._break_line2(GXContext._get_tls_geo(), db, line, chan, reset_fi_ds) 
        
[docs]
    @classmethod
    def break_line_to_groups(cls, db, line, chan, cl):
        """
        
        Break up a line into group-lines based on a channel.
        
        :param db:    Database
        :param line:  Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param chan:  Channel containing line numbers [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param cl:    Class name for new group lines (can be "")
        :type  db:    GXDB
        :type  line:  int
        :type  chan:  int
        :type  cl:    str
        .. versionadded:: 5.1.8
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The original line will be deleted.
        This is similar to `break_line <geosoft.gxapi.GXDU.break_line>`, but the output lines
        are "group" lines, without the line type letters at the
        start. (See db.gxh for information of Group Lines).
        All channels are associated with each group line, and the
        input class name is assigned to each group.
        Class names for
        groups ensure that (for instance) if you add a new channel to
        one group of a given class, it will get added to all other
        groups in the same class. If the class name is left empty, then
        this will NOT be true. (Groups without class names are treated
        as isolated entities for the purposes of channel loading).
        """
        
        gxapi_cy.WrapDU._break_line_to_groups(GXContext._get_tls_geo(), db, line, chan, cl.encode()) 
        
[docs]
    @classmethod
    def break_line_to_groups2(cls, db, line, chan, cl, reset_fi_ds):
        """
        
        Break up a line into group-lines based on a channel.
        
        :param db:           Database
        :param line:         Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param chan:         Channel containing line numbers [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param cl:           Class name for new group lines (can be "")
        :param reset_fi_ds:  Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:           GXDB
        :type  line:         int
        :type  chan:         int
        :type  cl:           str
        :type  reset_fi_ds:  int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The same as BreakLineToGroups, but with an option to reset each line's starting fiducial to zero.
        """
        
        gxapi_cy.WrapDU._break_line_to_groups2(GXContext._get_tls_geo(), db, line, chan, cl.encode(), reset_fi_ds) 
        
[docs]
    @classmethod
    def b_spline(cls, db, line, i_ch, o_ch, sd, rou, tau):
        """
        
        B-spline Interpolate a Channel.
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Channel to interpolate [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Output interpolated channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param sd:    Data error (Std Dev > 0.0)
        :param rou:   Roughness (Rou > 0.0)
        :param tau:   Tension (0.<= Tension <=1.)
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        :type  sd:    float
        :type  rou:   float
        :type  tau:   float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        .. seealso::
            `trend <geosoft.gxapi.GXDU.trend>`
        """
        
        gxapi_cy.WrapDU._b_spline(GXContext._get_tls_geo(), db, line, i_ch, o_ch, sd, rou, tau) 
        
[docs]
    @classmethod
    def closest_point(cls, db, x, y, xp, yp, line, fid):
        """
        
        Return closest data point to input location.
        
        :param x:     X location
        :param y:     Y location
        :param xp:    Located X location
        :param yp:    Located Y location
        :param line:  Line for located point
        :param fid:   Fiducial of located point
        :type  db:    GXDB
        :type  x:     float
        :type  y:     float
        :type  xp:    float_ref
        :type  yp:    float_ref
        :type  line:  int_ref
        :type  fid:   float_ref
        .. versionadded:: 6.2
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Selected lines are scanned for the (X, Y) location
        which is closest to the input location.
        The line and fiducial of the point are returned.
        Will register an error if no valid (X, Y) locations
        are found.
        """
        
        xp.value, yp.value, line.value, fid.value = gxapi_cy.WrapDU._closest_point(GXContext._get_tls_geo(), db, x, y, xp.value, yp.value, line.value, fid.value) 
        
[docs]
    @classmethod
    def copy_line(cls, db, i_line, o_line):
        """
        
        Copy a line.
        
        :param db:      Database
        :param i_line:  Input Line  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_line:  Output Line [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:      GXDB
        :type  i_line:  int
        :type  o_line:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Existing channels in the output line will be replaced
        by copied channels.
        """
        
        gxapi_cy.WrapDU._copy_line(GXContext._get_tls_geo(), db, i_line, o_line) 
        
[docs]
    @classmethod
    def copy_line_across(cls, idb, i_line, odb, o_line):
        """
        
        Copy a line from one database to another.
        
        :param idb:     Input Database
        :param i_line:  Input Line  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param odb:     Output Database
        :param o_line:  Output Line [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  idb:     GXDB
        :type  i_line:  int
        :type  odb:     GXDB
        :type  o_line:  int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Existing channels in the output line will be replaced
        by copied channels.
        .. seealso::
            `copy_line_chan_across <geosoft.gxapi.GXDU.copy_line_chan_across>` function
        """
        
        gxapi_cy.WrapDU._copy_line_across(GXContext._get_tls_geo(), idb, i_line, odb, o_line) 
        
[docs]
    @classmethod
    def copy_line_chan_across(cls, idb, i_line, vv_chan, odb, o_line):
        """
        
        Copy a list of channels in a line from one database to another.
        
        :param idb:      Input Database
        :param i_line:   Input Line   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param vv_chan:  `GXVV <geosoft.gxapi.GXVV>` containing a list of channel symbols, must be of INT
        :param odb:      Output Database
        :param o_line:   Output Line  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  idb:      GXDB
        :type  i_line:   int
        :type  vv_chan:  GXVV
        :type  odb:      GXDB
        :type  o_line:   int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Existing channels in the output line will be replaced
        by copied channels.
        .. seealso::
            `copy_line_across <geosoft.gxapi.GXDU.copy_line_across>` function
        """
        
        gxapi_cy.WrapDU._copy_line_chan_across(GXContext._get_tls_geo(), idb, i_line, vv_chan, odb, o_line) 
        
[docs]
    @classmethod
    def copy_line_masked(cls, db, i_line, mask, prune, o_line):
        """
        
        Copy a line, prune items based on a mask channel
        
        :param db:      Database Object
        :param i_line:  Input  Line Symbol [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param mask:    Mask Channel Symbol [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param prune:   :ref:`VVU_PRUNE`
        :param o_line:  Output Line Symbol [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:      GXDB
        :type  i_line:  int
        :type  mask:    int
        :type  prune:   int
        :type  o_line:  int
        .. versionadded:: 5.0.8
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** The input line's channel data is ReFidded to the mask
        channel, and then pruned from the output line data,
        based on the value of the VVU_PRUNE_XXX variable.
        For `VVU_PRUNE_DUMMY <geosoft.gxapi.VVU_PRUNE_DUMMY>`, only those items where the mask channel
        value is not a dummy are retained, while the complement
        is retained for VV_PRUNE_VALID.
        """
        
        gxapi_cy.WrapDU._copy_line_masked(GXContext._get_tls_geo(), db, i_line, mask, prune, o_line) 
        
[docs]
    @classmethod
    def dao_table_names(cls, file, type, vv):
        """
        
        Scans a DAO-compliant database and returns the table names in a `GXVV <geosoft.gxapi.GXVV>`
        
        :param file:  Database file name
        :param type:  Database Type
        :param vv:    `GXVV <geosoft.gxapi.GXVV>` to return names in
        :type  file:  str
        :type  type:  str
        :type  vv:    GXVV
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The `GXVV <geosoft.gxapi.GXVV>` must be created to hold strings of length
        `STR_DB_SYMBOL <geosoft.gxapi.STR_DB_SYMBOL>`; i.e. use
        Creat_VV(-`STR_DB_SYMBOL <geosoft.gxapi.STR_DB_SYMBOL>`, 0), or it will assert.
        """
        
        gxapi_cy.WrapDU._dao_table_names(GXContext._get_tls_geo(), file.encode(), type.encode(), vv) 
        
[docs]
    @classmethod
    def decimate(cls, db, line, i_ch, o_ch, n):
        """
        
        Copy and decimate a channel
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Origin Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Destination Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param n:     Decimation factor
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        :type  n:     int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._decimate(GXContext._get_tls_geo(), db, line, i_ch, o_ch, n) 
        
[docs]
    @classmethod
    def diff(cls, db, line, i_ch, o_ch, n):
        """
        
        Calculate differences within a channel.
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Origin Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Destination Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param n:     Number of differences
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        :type  n:     int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Differences with dummies result in dummies.
        An even number of differences locates data accurately.
        An odd number of differences locates result 1/2 element lower
        in the `GXVV <geosoft.gxapi.GXVV>`.
        """
        
        gxapi_cy.WrapDU._diff(GXContext._get_tls_geo(), db, line, i_ch, o_ch, n) 
        
[docs]
    @classmethod
    def distance(cls, db, line, x_ch, y_ch, o_ch):
        """
        
        Create a distance channel from X and Y.
        
        :param db:    Database
        :param line:  Line symbol
        :param x_ch:  X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:  Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Output Distance channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  x_ch:  int
        :type  y_ch:  int
        :type  o_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._distance(GXContext._get_tls_geo(), db, line, x_ch, y_ch, o_ch) 
        
[docs]
    @classmethod
    def distance_3d(cls, db, line, x_ch, y_ch, z_ch, type, o_ch):
        """
        
        Create a distance channel from XY or XYZ with direction options.
        
        :param db:    Database
        :param line:  Line symbol
        :param x_ch:  X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:  Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_ch:  Z channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`] (can be `NULLSYMB <geosoft.gxapi.NULLSYMB>`)
        :param type:  :ref:`DU_DISTANCE_CHANNEL_TYPE`
        :param o_ch:  Output Distance channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  x_ch:  int
        :type  y_ch:  int
        :type  z_ch:  int
        :type  type:  int
        :type  o_ch:  int
        .. versionadded:: 8.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._distance_3d(GXContext._get_tls_geo(), db, line, x_ch, y_ch, z_ch, type, o_ch) 
        
[docs]
    @classmethod
    def distline(cls, db, line, x_ch, y_ch, dist):
        """
        
        Calculate cummulative distance for a line.
        
        :param db:    Database
        :param line:  Line symbol
        :param x_ch:  X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:  Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param dist:  Cummulative distance (retruned)
        :type  db:    GXDB
        :type  line:  int
        :type  x_ch:  int
        :type  y_ch:  int
        :type  dist:  float_ref
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        dist.value = gxapi_cy.WrapDU._distline(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dist.value) 
        
[docs]
    @classmethod
    def dup_chan_locks(cls, d_bi, d_bo):
        """
        
        Duplicate all channels protect-info from input `GXDB <geosoft.gxapi.GXDB>`.
        
        :param d_bi:  Input Database handle
        :param d_bo:  Output Database handle.
        :type  d_bi:  GXDB
        :type  d_bo:  GXDB
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._dup_chan_locks(GXContext._get_tls_geo(), d_bi, d_bo) 
        
[docs]
    @classmethod
    def dup_chans(cls, d_bi, d_bo):
        """
        
        Duplicate all channels from input `GXDB <geosoft.gxapi.GXDB>`.
        
        :param d_bi:  Input Database handle
        :param d_bo:  Output Database handle.
        :type  d_bi:  GXDB
        :type  d_bo:  GXDB
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._dup_chans(GXContext._get_tls_geo(), d_bi, d_bo) 
        
[docs]
    @classmethod
    def edit_duplicates(cls, db, line, x_ch, y_ch, option, single, fid_num):
        """
        
        Edit duplicate readings at individual location
        
        :param db:       Database
        :param line:     Line
        :param x_ch:     Channel X, unlocked
        :param y_ch:     Channel Y, unlocked
        :param option:   :ref:`DB_DUP`
        :param single:   :ref:`DB_DUPEDIT`
        :param fid_num:  Fiducial number (required if `DB_DUPEDIT_SINGLE <geosoft.gxapi.DB_DUPEDIT_SINGLE>`)
        :type  db:       GXDB
        :type  line:     int
        :type  x_ch:     int
        :type  y_ch:     int
        :type  option:   int
        :type  single:   int
        :type  fid_num:  float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** All the channels must be of the same fid incr/start and length.
        Protected channels are modified automatically.
        """
        
        gxapi_cy.WrapDU._edit_duplicates(GXContext._get_tls_geo(), db, line, x_ch, y_ch, option, single, fid_num) 
        
[docs]
    @classmethod
    def export1(cls, db, format, cur_line, chan_vv, chan, data, dummies, header):
        """
        
        Export to a specific format.
        
        :param db:        Database
        :param format:    :ref:`DU_EXPORT`
        :param cur_line:  Current line
        :param chan_vv:   List of channels - channel symbols stored as INT
        :param chan:      :ref:`DU_CHANNELS`
        :param data:      Data file name
        :param dummies:   Write out dummies?
        :param header:    Include a header with channel names?
        :type  db:        GXDB
        :type  format:    int
        :type  cur_line:  str
        :type  chan_vv:   GXVV
        :type  chan:      int
        :type  data:      str
        :type  dummies:   int
        :type  header:    int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** For databases with both groups and lines:
        If both lines and groups are selected, save only the lines.
        If no lines are selected, (only groups), save the current line
        if it is (1) a group and (2) selected, else save the first selected
        group. ---
        Option to filter out data where one of the channels has a dummy in it.
        Option to allow a header with the channel names.
        The `DU_CHANNELS_DISPLAYED <geosoft.gxapi.DU_CHANNELS_DISPLAYED>` option can be used to export any selection of
        channels, listed by the symbols (DB_SYMB) values, cast to int values and
        stored in a `GXVV <geosoft.gxapi.GXVV>`.
        """
        
        gxapi_cy.WrapDU._export1(GXContext._get_tls_geo(), db, format, cur_line.encode(), chan_vv, chan, data.encode(), dummies, header) 
        
[docs]
    @classmethod
    def export2(cls, db, format, cur_line, chan_vv, chan, data, dummies, header, line_names):
        """
        
        Like `export1 <geosoft.gxapi.GXDU.export1>`, but include line names as data.
        
        :param db:          Database
        :param format:      :ref:`DU_EXPORT`
        :param cur_line:    Current line
        :param chan_vv:     List of channels - channel symbols stored as INT
        :param chan:        :ref:`DU_CHANNELS`
        :param data:        Data file name
        :param dummies:     Write out dummies?
        :param header:      Include a header with channel names?
        :param line_names:  Include line names as data?
        :type  db:          GXDB
        :type  format:      int
        :type  cur_line:    str
        :type  chan_vv:     GXVV
        :type  chan:        int
        :type  data:        str
        :type  dummies:     int
        :type  header:      int
        :type  line_names:  int
        .. versionadded:: 5.1.6
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** See `export1 <geosoft.gxapi.GXDU.export1>`.
        The line names are printed as the first column of data exported.
        """
        
        gxapi_cy.WrapDU._export2(GXContext._get_tls_geo(), db, format, cur_line.encode(), chan_vv, chan, data.encode(), dummies, header, line_names) 
        
[docs]
    @classmethod
    def export_amira(cls, db, wa, one_cols_ch, array_ch, time_ch, errors_ch, datatype, units, config, instrument, frequency):
        """
        
        Export to database an AMIRA data file.
        
        :param db:           Database
        :param wa:           AMIRA data file handle
        :param one_cols_ch:  Single column channel names, supporting comma (,) separated names of multiple channels, maximum 32 channels
        :param array_ch:     `GXVA <geosoft.gxapi.GXVA>` channel name, required
        :param time_ch:      Optional Time   channel name (must be `GXVA <geosoft.gxapi.GXVA>` channel and same array size as above `GXVA <geosoft.gxapi.GXVA>` channel)
        :param errors_ch:    Optional Errors channel name (must be `GXVA <geosoft.gxapi.GXVA>` channel and same array size as above `GXVA <geosoft.gxapi.GXVA>` channel)
        :param datatype:     Mandatory fields: DATATYPE
        :param units:        UNITS
        :param config:       CONFIG
        :param instrument:   INSTRUMENT
        :param frequency:    FREQUENCY
        :type  db:           GXDB
        :type  wa:           GXWA
        :type  one_cols_ch:  str
        :type  array_ch:     str
        :type  time_ch:      str
        :type  errors_ch:    str
        :type  datatype:     str
        :type  units:        str
        :type  config:       str
        :type  instrument:   str
        :type  frequency:    str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Other defined FIELDS stored in the database (see `import_amira <geosoft.gxapi.GXDU.import_amira>` function)
        will be automatically included in the export
        """
        
        gxapi_cy.WrapDU._export_amira(GXContext._get_tls_geo(), db, wa, one_cols_ch.encode(), array_ch.encode(), time_ch.encode(), errors_ch.encode(), datatype.encode(), units.encode(), config.encode(), instrument.encode(), frequency.encode()) 
        
[docs]
    @classmethod
    def export_aseg(cls, db, cur_line, chan_vv, chan, defn, data):
        """
        
        Export to ASEG-GDF format file(s).
        
        :param db:        Database
        :param cur_line:  Current line
        :param chan_vv:   Displayed channels
        :param chan:      :ref:`DU_CHANNELS`
        :param defn:      Header file name
        :param data:      Data file name
        :type  db:        GXDB
        :type  cur_line:  str
        :type  chan_vv:   GXVV
        :type  chan:      int
        :type  defn:      str
        :type  data:      str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** At least one of the header file
        or data file names must be set. (Unset names will get the
        same file name, but with the extensions .dfn (header) or
        .dat (data).
        For databases with both groups and lines:
        If both lines and groups are selected, save only the lines.
        If no lines are selected, (only groups), save the current line
        if it is (1) a group and (2) selected, else save the first selected
        group. ---
        """
        
        gxapi_cy.WrapDU._export_aseg(GXContext._get_tls_geo(), db, cur_line.encode(), chan_vv, chan, defn.encode(), data.encode()) 
        
[docs]
    @classmethod
    def export_aseg_proj(cls, db, cur_line, chan_vv, chan, defn, data, proj, ipj):
        """
        
        Export to ASEG-GDF format file(s) (supports projections).
        
        :param db:        Database
        :param cur_line:  Current line
        :param chan_vv:   Displayed channels
        :param chan:      :ref:`DU_CHANNELS`
        :param defn:      Export header file name
        :param data:      Export data file name
        :param proj:      Export projection file name
        :param ipj:       Projection handle
        :type  db:        GXDB
        :type  cur_line:  str
        :type  chan_vv:   GXVV
        :type  chan:      int
        :type  defn:      str
        :type  data:      str
        :type  proj:      str
        :type  ipj:       GXIPJ
        .. versionadded:: 5.0.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** At least one of the header file
        or data file names must be set. (Unset names will get the
        same file name, but with the extensions .dfn (header) or
        .dat (data).
        For databases with both groups and lines:
        If both lines and groups are selected, save only the lines.
        If no lines are selected, (only groups), save the current line
        if it is (1) a group and (2) selected, else save the first selected
        group. ---
        This version supports projections
        """
        
        gxapi_cy.WrapDU._export_aseg_proj(GXContext._get_tls_geo(), db, cur_line.encode(), chan_vv, chan, defn.encode(), data.encode(), proj.encode(), ipj) 
        
[docs]
    @classmethod
    def export_chan_crc(cls, db, symb, crc, file):
        """
        
        Export a channel as XML and compute a CRC value.
        
        :param db:    Database
        :param symb:  Channel
        :param crc:   CRC Value returned
        :param file:  File name to generate with XML
        :type  db:    GXDB
        :type  symb:  int
        :type  crc:   int_ref
        :type  file:  str
        .. versionadded:: 6.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The output file is an XML describing the channel. The
        CRC is of the channel data ONLY. To compute a CRC of the
        full channel (include metadata) do a CRC of the generated
        file.
        """
        
        crc.value = gxapi_cy.WrapDU._export_chan_crc(GXContext._get_tls_geo(), db, symb, crc.value, file.encode()) 
        
[docs]
    @classmethod
    def export_csv(cls, db, cur_line, chan_vv, chan, data, dummies, header):
        """
        
        Export to a CSV file.
        
        :param db:        Database
        :param cur_line:  Current line
        :param chan_vv:   Displayed channels
        :param chan:      :ref:`DU_CHANNELS`
        :param data:      Data file name
        :param dummies:   Write out dummies?
        :param header:    Include a header with channel names?
        :type  db:        GXDB
        :type  cur_line:  str
        :type  chan_vv:   GXVV
        :type  chan:      int
        :type  data:      str
        :type  dummies:   int
        :type  header:    int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** For databases with both groups and lines:
        If both lines and groups are selected, save only the lines.
        If no lines are selected, (only groups), save the current line
        if it is (1) a group and (2) selected, else save the first selected
        group. ---
        Option to filter out data where one of the channels has a dummy in it.
        Option to allow a header with the channel names.
        """
        
        gxapi_cy.WrapDU._export_csv(GXContext._get_tls_geo(), db, cur_line.encode(), chan_vv, chan, data.encode(), dummies, header) 
        
[docs]
    @classmethod
    def export_database_crc(cls, db, crc, file):
        """
        
        Export a channel as XML and compute a CRC value.
        
        :param db:    Database
        :param crc:   CRC Value returned
        :param file:  File name to generate with XML
        :type  db:    GXDB
        :type  crc:   int_ref
        :type  file:  str
        .. versionadded:: 6.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The output file is an XML describing the channel. The
        CRC is of the channel data ONLY. To compute a CRC of the
        full channel (include metadata) do a CRC of the generated
        file.
        """
        
        crc.value = gxapi_cy.WrapDU._export_database_crc(GXContext._get_tls_geo(), db, crc.value, file.encode()) 
        
[docs]
    @classmethod
    def export_gbn(cls, db, vv, data):
        """
        
        Export to a GBN data file.
        
        :param db:    Database
        :param vv:    List of channels to export
        :param data:  Export data file name
        :type  db:    GXDB
        :type  vv:    GXVV
        :type  data:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** The iDispChanList_DBE or `GXDB.symb_list <geosoft.gxapi.GXDB.symb_list>` methods can be
        used to obtain a list of channels.
        """
        
        gxapi_cy.WrapDU._export_gbn(GXContext._get_tls_geo(), db, vv, data.encode()) 
        
[docs]
    @classmethod
    def export_mdb(cls, db, cur_line, chan_vv, chan, single, data):
        """
        
        Export to a Microsoft Access Database (MDB) file.
        
        :param db:        Database
        :param cur_line:  Current line
        :param chan_vv:   Displayed channels
        :param chan:      :ref:`DU_CHANNELS`
        :param single:    :ref:`DU_LINEOUT`
        :param data:      Export data file name
        :type  db:        GXDB
        :type  cur_line:  str
        :type  chan_vv:   GXVV
        :type  chan:      int
        :type  single:    int
        :type  data:      str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Similar to `export_gbn <geosoft.gxapi.GXDU.export_gbn>`, with the addition that
        Groups go to individual tables, and lines go to
        a single table, or individual tables, based on the
        value of :ref:`DU_LINEOUT`
        """
        
        gxapi_cy.WrapDU._export_mdb(GXContext._get_tls_geo(), db, cur_line.encode(), chan_vv, chan, single, data.encode()) 
        
[docs]
    @classmethod
    def export_geodatabase(cls, db, feature_class_name, cur_line, chan_vv, chan, output, single, data):
        """
        
        Export to a ESRI Geodatabase file.
        
        :param db:                  Database
        :param feature_class_name:  Feature class name
        :param cur_line:            Current line
        :param chan_vv:             Displayed channels
        :param chan:                :ref:`DU_CHANNELS`
        :param output:              :ref:`DU_FEATURE_TYPE_OUTPUT`
        :param single:              :ref:`DU_LINEOUT`
        :param data:                Export data file name
        :type  db:                  GXDB
        :type  feature_class_name:  str
        :type  cur_line:            str
        :type  chan_vv:             GXVV
        :type  chan:                int
        :type  output:              int
        :type  single:              int
        :type  data:                str
        .. versionadded:: 8.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Similar to `export_gbn <geosoft.gxapi.GXDU.export_gbn>`, with the addition that
        Groups go to individual tables, and lines go to
        a single table, or individual tables, based on the
        value of :ref:`DU_LINEOUT`
        """
        
        gxapi_cy.WrapDU._export_geodatabase(GXContext._get_tls_geo(), db, feature_class_name.encode(), cur_line.encode(), chan_vv, chan, output, single, data.encode()) 
        
[docs]
    @classmethod
    def get_existing_feature_classes_in_geodatabase(cls, db, geodatabase, lst, vv):
        """
        
        Searches the geodatabases for an existing Feature class.
        
        :param db:           Database
        :param geodatabase:  File geodatabase
        :param lst:          Feature class names to verify
        :param vv:           Output list of existing feature class names
        :type  db:           GXDB
        :type  geodatabase:  str
        :type  lst:          GXLST
        :type  vv:           GXVV
        :returns:            0 - Feature class does not exist
                             1 - Feature class exists
        :rtype:              int
        .. versionadded:: 8.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Searches the geodatabases for an existing Feature class
        """
        
        ret_val = gxapi_cy.WrapDU._get_existing_feature_classes_in_geodatabase(GXContext._get_tls_geo(), db, geodatabase.encode(), lst, vv)
        return ret_val 
[docs]
    @classmethod
    def export_shp(cls, db, cur_line, chan_vv, chan, single, data, lst):
        """
        
        Export to a shape file or files.
        
        :param db:        Database
        :param cur_line:  Current line
        :param chan_vv:   Displayed channels
        :param chan:      :ref:`DU_CHANNELS`
        :param single:    :ref:`DU_LINEOUT`
        :param data:      Export shape file name or base filename (shp assumed if no extension given)
        :param lst:       `GXLST <geosoft.gxapi.GXLST>` object will be filled with shape files created
        :type  db:        GXDB
        :type  cur_line:  str
        :type  chan_vv:   GXVV
        :type  chan:      int
        :type  single:    int
        :type  data:      str
        :type  lst:       GXLST
        .. versionadded:: 6.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Similar to `export_mdb <geosoft.gxapi.GXDU.export_mdb>`, with the addition that groups go to indiviual files
        with group name suffixes, and lines go to a single file, or multiple files
        with line name suffixes, based on the value of :ref:`DU_LINEOUT`.
        """
        
        gxapi_cy.WrapDU._export_shp(GXContext._get_tls_geo(), db, cur_line.encode(), chan_vv, chan, single, data.encode(), lst) 
        
[docs]
    @classmethod
    def export_xyz(cls, db, data, templ):
        """
        
        Export XYZdata from a database to an XYZ file.
        
        :param db:     Database
        :param data:   Export data file name
        :param templ:  Export template name
        :type  db:     GXDB
        :type  data:   str
        :type  templ:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The export template can be in the local directory or the GEOSOFT
        directory.  The import data file must include the path if it is not
        in the local directory.
        2. Both the import template and data file must exist.
        3. Sample Template file
        [EXPORT XYZ]
        EXPORT     CHAN {,FORMAT} {,WIDTH} {,DECIMAL}
        WRITEDUMMY YES
        CLIPMAP    YES
        MAXPOINTS  1000
        INCREMENT  .5
        4. This can be used to export a group, but the group must be the
        currently displayed line, and only that group will be exported.
        """
        
        gxapi_cy.WrapDU._export_xyz(GXContext._get_tls_geo(), db, data.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def export_xyz2(cls, db, wa, ra):
        """
        
        Export XYZdata from a database to an XYZ file, using file handles.
        
        :param db:  Database
        :param wa:  Export data file `GXWA <geosoft.gxapi.GXWA>` handle
        :param ra:  Export template file `GXRA <geosoft.gxapi.GXRA>` handle
        :type  db:  GXDB
        :type  wa:  GXWA
        :type  ra:  GXRA
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        .. seealso::
            `export_xyz <geosoft.gxapi.GXDU.export_xyz>`
        """
        
        gxapi_cy.WrapDU._export_xyz2(GXContext._get_tls_geo(), db, wa, ra) 
        
[docs]
    @classmethod
    def fft(cls, db, line, s_ch, r_ch, i_ch):
        """
        
        Apply an `GXFFT <geosoft.gxapi.GXFFT>` to space data.
        
        :param db:    Database
        :param line:  Line handle
        :param s_ch:  Space Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param r_ch:  Real Channel  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param i_ch:  Imaginary Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  s_ch:  int
        :type  r_ch:  int
        :type  i_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._fft(GXContext._get_tls_geo(), db, line, s_ch, r_ch, i_ch) 
        
[docs]
    @classmethod
    def filter(cls, db, line, i_ch, o_ch, flt):
        """
        
        Apply a convolution filter to a channel.
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Input channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Output filtered channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param flt:   Filter handle (`GXFLT <geosoft.gxapi.GXFLT>`)
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        :type  flt:   int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._filter(GXContext._get_tls_geo(), db, line, i_ch, o_ch, flt) 
        
[docs]
    @classmethod
    def gen_lev(cls, db, in_file, out_file, max_dz, m0):
        """
        
        Generate a Level table from an Intersection Table.
        
        :param db:        Database
        :param in_file:   Input Table file Name
        :param out_file:  Output Table file Name
        :param max_dz:    Max. gradient
        :param m0:        :ref:`DU_LEVEL`
        :type  db:        GXDB
        :type  in_file:   str
        :type  out_file:  str
        :type  max_dz:    float
        :type  m0:        int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._gen_lev(GXContext._get_tls_geo(), db, in_file.encode(), out_file.encode(), max_dz, m0) 
        
[docs]
    @classmethod
    def gen_lev_db(cls, db, out_file, max_dz, m0):
        """
        
        Generate a Level table from an Intersection Database
        
        :param db:        Input intersection database object
        :param out_file:  Output Table File Name
        :param max_dz:    Max. gradient
        :param m0:        :ref:`DU_LEVEL`
        :type  db:        GXDB
        :type  out_file:  str
        :type  max_dz:    float
        :type  m0:        int
        .. versionadded:: 7.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Requires channels with the following names:
        ine, TFid, TZ, TDZ
        Line, LFid, LZ, LDZ
        Mask
        """
        
        gxapi_cy.WrapDU._gen_lev_db(GXContext._get_tls_geo(), db, out_file.encode(), max_dz, m0) 
        
[docs]
    @classmethod
    def gen_xyz_temp(cls, xyz, temp):
        """
        
        Generate default XYZ template for a XYZ file.
        
        :param xyz:   Xyz file name
        :param temp:  Template file name to create
        :type  xyz:   str
        :type  temp:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._gen_xyz_temp(GXContext._get_tls_geo(), xyz.encode(), temp.encode()) 
        
[docs]
    @classmethod
    def get_xyz_num_fields(cls, xyz, num_fields):
        """
        
        Get the number of fields in the XYZ file.
        
        :param xyz:         Xyz file name
        :param num_fields:  Returned number of fields
        :type  xyz:         str
        :type  num_fields:  int_ref
        .. versionadded:: 9.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        num_fields.value = gxapi_cy.WrapDU._get_xyz_num_fields(GXContext._get_tls_geo(), xyz.encode(), num_fields.value) 
        
[docs]
    @classmethod
    def get_chan_data_lst(cls, db, chan, mask, lst):
        """
        
        Populate a `GXLST <geosoft.gxapi.GXLST>` with unique items in a channel.
        
        :param db:    Database
        :param chan:  Data Channel
        :param mask:  Mask Channel  (can be `NULLSYMB <geosoft.gxapi.NULLSYMB>`)
        :param lst:   `GXLST <geosoft.gxapi.GXLST>` object to populate
        :type  db:    GXDB
        :type  chan:  int
        :type  mask:  int
        :type  lst:   GXLST
        .. versionadded:: 6.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Items from all selected lines are collected,
        sorted, and duplicates removed. The output
        `GXLST <geosoft.gxapi.GXLST>` name and value are set to the item values.
        Non-string channels are converted internally to
        string values using Copy_VV,
        so results may differ from what
        you may expect given the current channel's display
        width and number of decimals.
        If a mask channel is selected, then only those items
        where the mask channel is not a dummy are collected.
        """
        
        gxapi_cy.WrapDU._get_chan_data_lst(GXContext._get_tls_geo(), db, chan, mask, lst) 
        
[docs]
    @classmethod
    def get_chan_data_vv(cls, db, chan, mask, vv):
        """
        
        Populate a `GXVV <geosoft.gxapi.GXVV>` with unique items in a channel.
        
        :param db:    Database
        :param chan:  Channel
        :param mask:  Mask Channel  (can be `NULLSYMB <geosoft.gxapi.NULLSYMB>`)
        :param vv:    `GXVV <geosoft.gxapi.GXVV>` object to populate
        :type  db:    GXDB
        :type  chan:  int
        :type  mask:  int
        :type  vv:    GXVV
        .. versionadded:: 6.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Items from all selected lines are collected,
        sorted, and duplicates removed.
        The data is collected in the channel's data type,
        so normal `GXVV.sort <geosoft.gxapi.GXVV.sort>` rules apply.
        If the output `GXVV <geosoft.gxapi.GXVV>` and channel type are not the
        same, then the data is converted using the
        Copy_VV function, so see that for conversion rules.
        If a mask channel is selected, then only those items
        where the mask channel is not a dummy are collected.
        """
        
        gxapi_cy.WrapDU._get_chan_data_vv(GXContext._get_tls_geo(), db, chan, mask, vv) 
        
[docs]
    @classmethod
    def get_gridding_azimuth_to_minimize_padding(cls, db, xCh, yCh, mCh, x1, y1, x2, y2, x3, y3, x4, y4):
        """
        
        Return the gridding azimuth (degrees CW from north) that minimizes padding.
        
        :param db:   Database
        :param xCh:  X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param yCh:  Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param mCh:  Data or mask channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x1:   Returned Corner 1 - X
        :param y1:   Returned Corner 1 - Y
        :param x2:   Returned Corner 2 - X
        :param y2:   Returned Corner 2 - Y
        :param x3:   Returned Corner 3 - X
        :param y3:   Returned Corner 3 - Y
        :param x4:   Returned Corner 4 - X
        :param y4:   Returned Corner 4 - Y
        :type  db:   GXDB
        :type  xCh:  int
        :type  yCh:  int
        :type  mCh:  int
        :type  x1:   float_ref
        :type  y1:   float_ref
        :type  x2:   float_ref
        :type  y2:   float_ref
        :type  x3:   float_ref
        :type  y3:   float_ref
        :type  x4:   float_ref
        :type  y4:   float_ref
        :rtype:      float
        .. versionadded:: 2023.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Especially if the survey lines do not run N-S or E-W, gridding parallel to the XY axes
        results in up to half the gridding area being dummies (padding), which is not only
        inefficient, but affects processes like filtering. This algorithm determines the data
        rotation required such that the gridding extents rectangle fit around the data minimizes the
        amount of padding. The result is good to the nearest degree.
        The corner points are returned and include a buffer around the edge equal to 1% of the maximum height/width.
        The returned azimuth will be in the range 0 to 89.
        Operates on all selected lines.
        """
        
        ret_val, x1.value, y1.value, x2.value, y2.value, x3.value, y3.value, x4.value, y4.value = gxapi_cy.WrapDU._get_gridding_azimuth_to_minimize_padding(GXContext._get_tls_geo(), db, xCh, yCh, mCh, x1.value, y1.value, x2.value, y2.value, x3.value, y3.value, x4.value, y4.value)
        return ret_val 
[docs]
    @classmethod
    def get_angled_bounding_rectangle(cls, db, xCh, yCh, mCh, azimuth, x1, y1, x2, y2, x3, y3, x4, y4):
        """
        
        Return the angled bounding rectangle for data to be gridded on an angle.
        
        :param db:       Database
        :param xCh:      X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param yCh:      Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param mCh:      Data or mask channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param azimuth:  Input Azimuth Angle - degrees CW from North
        :param x1:       Returned Corner 1 - X
        :param y1:       Returned Corner 1 - Y
        :param x2:       Returned Corner 2 - X
        :param y2:       Returned Corner 2 - Y
        :param x3:       Returned Corner 3 - X
        :param y3:       Returned Corner 3 - Y
        :param x4:       Returned Corner 4 - X
        :param y4:       Returned Corner 4 - Y
        :type  db:       GXDB
        :type  xCh:      int
        :type  yCh:      int
        :type  mCh:      int
        :type  azimuth:  float
        :type  x1:       float_ref
        :type  y1:       float_ref
        :type  x2:       float_ref
        :type  y2:       float_ref
        :type  x3:       float_ref
        :type  y3:       float_ref
        :type  x4:       float_ref
        :type  y4:       float_ref
        .. versionadded:: 2023.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Especially if the survey lines do not run N-S or E-W, gridding parallel to the XY axes
        results in up to half the gridding area being dummies (padding), which is not only
        inefficient, but affects processes like filtering.
        This routine returns the rotated extents rectangle for a given gridding azimuth.
        The data is rotated CCW by the input azimuth. The N-S and E-W extents of the rotated
        data are determined and the bounding points rotated back by the input azimuth to locate
        the angled bounding rectangle around the input data. As with GetGriddingAzimuthToMinimizePadding_DU
        the extents are padded in each direction by 1% of the maximum height/width
        Operates on all selected lines.
        """
        
        x1.value, y1.value, x2.value, y2.value, x3.value, y3.value, x4.value, y4.value = gxapi_cy.WrapDU._get_angled_bounding_rectangle(GXContext._get_tls_geo(), db, xCh, yCh, mCh, azimuth, x1.value, y1.value, x2.value, y2.value, x3.value, y3.value, x4.value, y4.value) 
        
[docs]
    @classmethod
    def gradient(cls, dbi, dbo, ix_ch, iy_ch, iz_ch, ig_ch, ox_ch, oy_ch, oz_ch, angle, width):
        """
        
        This method takes 4 channels from input database and
        duplicats each line twice to output database)
        (input and Output can be the same channel).
        
        :param dbi:    Database InPut
        :param dbo:    DAtabase Output
        :param ix_ch:  X Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:  Y Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iz_ch:  Z Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ig_ch:  G Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ox_ch:  X Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oy_ch:  Y Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oz_ch:  Z Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param angle:  Angle
        :param width:  Width
        :type  dbi:    GXDB
        :type  dbo:    GXDB
        :type  ix_ch:  int
        :type  iy_ch:  int
        :type  iz_ch:  int
        :type  ig_ch:  int
        :type  ox_ch:  int
        :type  oy_ch:  int
        :type  oz_ch:  int
        :type  angle:  float
        :type  width:  float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._gradient(GXContext._get_tls_geo(), dbi, dbo, ix_ch, iy_ch, iz_ch, ig_ch, ox_ch, oy_ch, oz_ch, angle, width) 
        
[docs]
    @classmethod
    def grav_drift(cls, db, line, date, time, read, base, clos):
        """
        
        Calculate base loop closure and correct for drift.
        
        :param db:    Database
        :param line:  Line                    [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param date:  Date                    [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param time:  Local time (on date)    [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param read:  Reading                 [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param base:  Base                    [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param clos:  Closure error           [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  date:  int
        :type  time:  int
        :type  read:  int
        :type  base:  int
        :type  clos:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._grav_drift(GXContext._get_tls_geo(), db, line, date, time, read, base, clos) 
        
[docs]
    @classmethod
    def grav_drift2(cls, db, line, date, time, read, base, clos, corr):
        """
        
        Calculate base loop closure, calculate drift correction and correct for drift.
        
        :param db:    Database
        :param line:  Line                    [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param date:  Date                    [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param time:  Local time (on date)    [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param read:  Reading                 [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param base:  Base                    [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param clos:  Closure error           [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param corr:  Drift correction        [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  date:  int
        :type  time:  int
        :type  read:  int
        :type  base:  int
        :type  clos:  int
        :type  corr:  int
        .. versionadded:: 9.6
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._grav_drift2(GXContext._get_tls_geo(), db, line, date, time, read, base, clos, corr) 
        
[docs]
    @classmethod
    def grav_tide(cls, db, line, lat, lon, date, time, gmt, tide):
        """
        
        Calculate earth tide gravity correction.
        
        :param db:    Database
        :param line:  Line
        :param lat:   Lat  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param lon:   Long [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param date:  Date [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param time:  Local time (on date) [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param gmt:   GMT difference (added to time to give GMT)
        :param tide:  Calculated tide [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  lat:   int
        :type  lon:   int
        :type  date:  int
        :type  time:  int
        :type  gmt:   float
        :type  tide:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._grav_tide(GXContext._get_tls_geo(), db, line, lat, lon, date, time, gmt, tide) 
        
[docs]
    @classmethod
    def grid_load(cls, db, img, xdec, ydec, trim_dum, create_index):
        """
        
        Load grid data to a database.
        
        :param db:            Database
        :param img:           Grid img
        :param xdec:          X decimation factor
        :param ydec:          Y decimation factor
        :param trim_dum:      0 trim leading/trailing dummies (default), 1 trim all dummies, 2 leave all dummies
        :param create_index:  Flag for creating index channel: 0 no (default), 1 yes.
        :type  db:            GXDB
        :type  img:           GXIMG
        :type  xdec:          int
        :type  ydec:          int
        :type  trim_dum:      int
        :type  create_index:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._grid_load(GXContext._get_tls_geo(), db, img, xdec, ydec, trim_dum, create_index) 
        
[docs]
    @classmethod
    def grid_load_xyz(cls, db, img, ch_x, ch_y, ch_z, ch_data, xdec, ydec, trim_dum, index_ch):
        """
        
        Load grid data to a database using specified channels
        
        :param db:        Database
        :param img:       Grid img
        :param ch_x:      X Channel
        :param ch_y:      Y Channel
        :param ch_z:      Z Channel
        :param ch_data:   Data Channel
        :param xdec:      X decimation factor
        :param ydec:      Y decimation factor
        :param trim_dum:  0 trim leading/trailing dummies (default), 1 trim all dummies, 2 leave all dummies
        :param index_ch:  Flag for creating index channel: 0 no (default), 1 yes.
        :type  db:        GXDB
        :type  img:       GXIMG
        :type  ch_x:      int
        :type  ch_y:      int
        :type  ch_z:      int
        :type  ch_data:   int
        :type  xdec:      int
        :type  ydec:      int
        :type  trim_dum:  int
        :type  index_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._grid_load_xyz(GXContext._get_tls_geo(), db, img, ch_x, ch_y, ch_z, ch_data, xdec, ydec, trim_dum, index_ch) 
        
[docs]
    @classmethod
    def head(cls, db, line, i_ch, o_ch, tb, dir):
        """
        
        Applies a heading correction.
        
        :param db:    Database object
        :param line:  Line Symbol
        :param i_ch:  Channel to correct [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Corrected channel  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param tb:    Heading table
        :param dir:   Line direction
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        :type  tb:    GXTB
        :type  dir:   float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Updates channel with Direction in degrees azimuth (counter-clockwise
        relative the +Y direction).
        `GS_R8DM <geosoft.gxapi.GS_R8DM>` if the line has no data, or if there is a
        problem.
        """
        
        gxapi_cy.WrapDU._head(GXContext._get_tls_geo(), db, line, i_ch, o_ch, tb, dir) 
        
[docs]
    @classmethod
    def import_bin3(cls, db, data, templ, line, flight, date, wa):
        """
        
        Same as `import_bin2 <geosoft.gxapi.GXDU.import_bin2>`, but returns the name of the imported line.
        
        :param db:      Database
        :param data:    Import data file name
        :param templ:   Import template name
        :param line:    Optional Line name (on return, the actual line)
        :param flight:  Optional Flight number
        :param date:    Optional date
        :type  db:      GXDB
        :type  data:    str
        :type  templ:   str
        :type  line:    str_ref
        :type  flight:  int
        :type  date:    float
        :type  wa:      GXWA
        .. versionadded:: 6.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** See `import_bin2 <geosoft.gxapi.GXDU.import_bin2>`. Because the name of the created line is
        not necessarily the value passed in (and the value passed in
        can be blank), this version returns the name of the line
        to which the data is actually imported.
        .. seealso::
            `import_bin2 <geosoft.gxapi.GXDU.import_bin2>`
        """
        
        line.value = gxapi_cy.WrapDU._import_bin3(GXContext._get_tls_geo(), db, data.encode(), templ.encode(), line.value.encode(), flight, date, wa) 
        
[docs]
    @classmethod
    def imp_cb_ply(cls, db, pj, file, x_chan, y_chan):
        """
        
        Import concession boundary polygon file into a database
        
        :param db:      Database
        :param pj:      Projection Files Object
        :param file:    Import data file name
        :param x_chan:  X channel handle
        :param y_chan:  Y channel handle
        :type  db:      GXDB
        :type  pj:      GXPJ
        :type  file:    str
        :type  x_chan:  int
        :type  y_chan:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The polygon file is provided by Ana Christina in Brazil.
        """
        
        gxapi_cy.WrapDU._imp_cb_ply(GXContext._get_tls_geo(), db, pj, file.encode(), x_chan, y_chan) 
        
[docs]
    @classmethod
    def import_ado(cls, db, connect, table, templ, line):
        """
        
        Import an external database table into a group using ADO.
        
        :param db:       Database
        :param connect:  Import database connection string       (overrides template value)
        :param table:    Imported table in database file (overrides template value)
        :param templ:    Import template name
        :param line:     Oasis montaj line name to create (overrides template value)
        :type  db:       GXDB
        :type  connect:  str
        :type  table:    str
        :type  templ:    str
        :type  line:     str
        .. versionadded:: 5.0.8
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The import template can be in the local directory or the GEOSOFT
        directory.
        2. Only the import template must be specified. The database connection string,
        the database table and Oasis line name are normally taken from the template
        file itself, but if these values are provided, they will override those found in the template.
        3. If the line already exists, the data will overwrite the existing data.
        """
        
        gxapi_cy.WrapDU._import_ado(GXContext._get_tls_geo(), db, connect.encode(), table.encode(), templ.encode(), line.encode()) 
        
[docs]
    @classmethod
    def import_all_ado(cls, db, connect, storage):
        """
        
        Import an entire external database using ADO.
        
        :param db:       Database
        :param connect:  Import database connection string
        :param storage:  :ref:`DU_STORAGE`
        :type  db:       GXDB
        :type  connect:  str
        :type  storage:  int
        .. versionadded:: 5.0.8
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. For group storage, the table names are imported "as is". For line storage,
        if the table names are valid Geosoft line names, they are used as is.
        Otherwise, line names will be created with type LINE_NORMAL, starting at
        L0 and incrementing by 10 (L10, L20 etc.)
        2. If the line exists, the data will overwrite the existing data.
        3. All tables and fields will be imported.
        4. If connection string is of type "FILENAME=..." the connection will attempt to resolve
        it as a file database. (see also ODBCFileConnect_GUI)
        """
        
        gxapi_cy.WrapDU._import_all_ado(GXContext._get_tls_geo(), db, connect.encode(), storage) 
        
[docs]
    @classmethod
    def import_all_dao(cls, db, data, type, storage):
        """
        
        Import an entire external database using DAO.
        
        :param db:       Database
        :param data:     Import data file name
        :param type:     Database type
        :param storage:  :ref:`DU_STORAGE`
        :type  db:       GXDB
        :type  data:     str
        :type  type:     str
        :type  storage:  int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The file is assumed to be a DAO compliant database.
        2. The import data file must include the path if it is not
        in the local directory.
        3. For group storage, the table names are imported "as is". For line storage,
        if the table names are valid Geosoft line names, they are used as is.
        Otherwise, line names will be created with type LINE_NORMAL, starting at
        L0 and incrementing by 10 (L10, L20 etc.)
        4. If the line exists, the data will overwrite the existing data.
        5. All tables and fields will be imported.
        6. The following are valid type strings for DAO:
        MSJET       : Microsoft Access
        ODBC        : ODBC source
        dBASE III
        dBASE IV
        dBASE 5
        FoxPro 2.0
        FoxPro 2.5
        FoxPro 2.6
        Paradox 3.x
        Paradox 4.x
        Paradox 5.x
        """
        
        gxapi_cy.WrapDU._import_all_dao(GXContext._get_tls_geo(), db, data.encode(), type.encode(), storage) 
        
[docs]
    @classmethod
    def import_amira(cls, db, ra, wa):
        """
        
        Import an AMIRA data file.
        
        :param db:  Database
        :param ra:  AMIRA data file handle
        :param wa:  Log file handle
        :type  db:  GXDB
        :type  ra:  GXRA
        :type  wa:  GXWA
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** All the constant declarations are stored within the database
        under \\TEM\\CONSTANTS. The format is as follows:
            1. Lines stored in the file beginning with "/" are comments
            2. Each constant occupies a line in the file. It uses the format: CONSTANT=VALUE
        """
        
        gxapi_cy.WrapDU._import_amira(GXContext._get_tls_geo(), db, ra, wa) 
        
[docs]
    @classmethod
    def import_aseg(cls, db, templ, file, data, flc, chans):
        """
        
        Import an ASEG-GDF data file.
        
        :param db:     Database
        :param templ:  Template file name
        :param file:   Header file name
        :param data:   Data file name
        :param flc:    Flight Line Channel name
        :param chans:  Number of channels to import at one time
        :type  db:     GXDB
        :type  templ:  str
        :type  file:   str
        :type  data:   str
        :type  flc:    str
        :type  chans:  int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._import_aseg(GXContext._get_tls_geo(), db, templ.encode(), file.encode(), data.encode(), flc.encode(), chans) 
        
[docs]
    @classmethod
    def import_aseg_proj(cls, db, templ, file, data, flc, chans, proj, x_ch, y_ch, fiducial):
        """
        
        Import an ASEG-GDF data file (supports projections).
        
        :param db:        Database
        :param templ:     Template file name
        :param file:      Header file name
        :param data:      Data file name
        :param flc:       Flight Line Channel name
        :param chans:     Number of channels to import at one time
        :param proj:      Projection file name
        :param x_ch:      Channel pair to associate projection
        :param y_ch:      Channel pair to associate projection
        :param fiducial:  Fiducial selection
        :type  db:        GXDB
        :type  templ:     str
        :type  file:      str
        :type  data:      str
        :type  flc:       str
        :type  chans:     int
        :type  proj:      str
        :type  x_ch:      str
        :type  y_ch:      str
        :type  fiducial:  int
        .. versionadded:: 5.0.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** This version supports projections
        """
        
        gxapi_cy.WrapDU._import_aseg_proj(GXContext._get_tls_geo(), db, templ.encode(), file.encode(), data.encode(), flc.encode(), chans, proj.encode(), x_ch.encode(), y_ch.encode(), fiducial) 
        
[docs]
    @classmethod
    def import_bin(cls, db, data, templ, line, flight, date):
        """
        
        Import blocked binary or archive ASCII data
        
        :param db:      Database
        :param data:    Import data file name
        :param templ:   Import template name
        :param line:    Optional Line name (see note 3.)
        :param flight:  Optional Flight number
        :param date:    Optional date
        :type  db:      GXDB
        :type  data:    str
        :type  templ:   str
        :type  line:    str
        :type  flight:  int
        :type  date:    float
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. Binary import templates have extension .I2 by convention.  See
        BINARY.I2 for a description of the template format.
        Archive import templates have extension .I3 by convention. See
        ARCHIVE.I3 for a description of the template format.
        2. Both the import template and data file must exist.
        3. If a line already exists in the database, a new version is created
        unless a line name is passed in.  In this case, the specified name
        is used and the imported channels on the previous line will be
        destroyed.
        .. seealso::
            `lab_template <geosoft.gxapi.GXDU.lab_template>`
        """
        
        gxapi_cy.WrapDU._import_bin(GXContext._get_tls_geo(), db, data.encode(), templ.encode(), line.encode(), flight, date) 
        
[docs]
    @classmethod
    def import_bin2(cls, db, data, templ, line, flight, date, wa):
        """
        
        Import blocked binary or archive ASCII data with data error display
        
        :param db:      Database
        :param data:    Import data file name
        :param templ:   Import template name
        :param line:    Optional Line name (see note 3.)
        :param flight:  Optional Flight number
        :param date:    Optional date
        :type  db:      GXDB
        :type  data:    str
        :type  templ:   str
        :type  line:    str
        :type  flight:  int
        :type  date:    float
        :type  wa:      GXWA
        .. versionadded:: 5.1.6
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. Binary import templates have extension .I2 by convention.  See
        BINARY.I2 for a description of the template format.
        Archive import templates have extension .I3 by convention. See
        ARCHIVE.I3 for a description of the template format.
        2. Both the import template and data file must exist.
        3. If a line already exists in the database, a new version is created
        unless a line name is passed in.  In this case, the specified name
        is used and the imported channels on the previous line will be
        destroyed.
        .. seealso::
            `lab_template <geosoft.gxapi.GXDU.lab_template>`
        """
        
        gxapi_cy.WrapDU._import_bin2(GXContext._get_tls_geo(), db, data.encode(), templ.encode(), line.encode(), flight, date, wa) 
        
[docs]
    @classmethod
    def import_bin4(cls, db, mode, data, templ, line, flight, date, wa):
        """
        
        Same as `import_bin2 <geosoft.gxapi.GXDU.import_bin2>` but with an import mode
        
        :param db:      Database
        :param mode:    :ref:`DU_IMPORT`
        :param data:    Import data file name
        :param templ:   Import template name
        :param line:    Optional Line name (see note 3.)
        :param flight:  Optional Flight number
        :param date:    Optional date
        :type  db:      GXDB
        :type  mode:    int
        :type  data:    str
        :type  templ:   str
        :type  line:    str
        :type  flight:  int
        :type  date:    float
        :type  wa:      GXWA
        .. versionadded:: 9.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Same as `import_bin2 <geosoft.gxapi.GXDU.import_bin2>` but with an import mode
        .. seealso::
            `import_bin2 <geosoft.gxapi.GXDU.import_bin2>`
        """
        
        gxapi_cy.WrapDU._import_bin4(GXContext._get_tls_geo(), db, mode, data.encode(), templ.encode(), line.encode(), flight, date, wa) 
        
[docs]
    @classmethod
    def import_daarc500_serial(cls, db, line, file, channel, type):
        """
        
        Import Serial data from the RMS Instruments DAARC500.
        
        :param db:       Database object
        :param line:     Output line (`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`)
        :param file:     Name of file to import
        :param channel:  Channel to import, 1-8
        :param type:     :ref:`GU_DAARC500_DATATYPE`
        :type  db:       GXDB
        :type  line:     int
        :type  file:     str
        :type  channel:  int
        :type  type:     int
        .. versionadded:: 7.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Imports data stored in a serial channel recorded
        by the RMS Instruments DAARC500 instrument, and outputs the data to
        a line in the database. The channels created depend on the input data type
        """
        
        gxapi_cy.WrapDU._import_daarc500_serial(GXContext._get_tls_geo(), db, line, file.encode(), channel, type) 
        
[docs]
    @classmethod
    def import_daarc500_serial_gps(cls, db, line, file, channel):
        """
        
        Import Serial GPS data from the RMS Instruments DAARC500.
        
        :param db:       Database object
        :param line:     Output line (`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`)
        :param file:     Name of file to import
        :param channel:  Channel to import, 1-8
        :type  db:       GXDB
        :type  line:     int
        :type  file:     str
        :type  channel:  int
        .. versionadded:: 7.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Imports GPS data stored in a serial channel recorded
        by the RMS Instruments DAARC500 instrument, and outputs the data to
        a line in the database. Makes the following channels:
        Fid, UTC_Time, Latitude, Longitude, Altitude, GPS_Quality,
        NumSat (Number of satellites), GPS_HDOP (Horizontal Dilution of Position),
        Undulation, GPS_DiffAge (Age of differential channel).
        """
        
        gxapi_cy.WrapDU._import_daarc500_serial_gps(GXContext._get_tls_geo(), db, line, file.encode(), channel) 
        
[docs]
    @classmethod
    def import_dao(cls, db, data, type, table, templ, line):
        """
        
        Import an external database table into a group using DAO.
        
        :param db:     Database
        :param data:   Import database file name   (overrides template value)
        :param type:   Import data file type       (overrides template value)
        :param table:  Imported table in database file (overrides template value)
        :param templ:  Import template name
        :param line:   Oasis Montaj line name to create (overrides template value)
        :type  db:     GXDB
        :type  data:   str
        :type  type:   str
        :type  table:  str
        :type  templ:  str
        :type  line:   str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The import template can be in the local directory or the GEOSOFT
        directory.  The import data file must include the path if it is not
        in the local directory.
        2. Only the import template must be specified. The database file name,
        file type, the database table and Oasis line name are normally
        taken from the template file itself, but if these values are provided,
        they will override those found in the template.
        3. If the line already exists, the data will overwrite the existing data.
        """
        
        gxapi_cy.WrapDU._import_dao(GXContext._get_tls_geo(), db, data.encode(), type.encode(), table.encode(), templ.encode(), line.encode()) 
        
[docs]
    @classmethod
    def import_esri(cls, db, connect, templ, line):
        """
        
        Import an ArcGIS Geodatabase table or feature class into a GDB group
        
        :param db:       Database
        :param connect:  Import database connection string (e.g. "d:\\Personal\\test.mdb|Table" or "d:\\File\\test.gdb|FeatureClass, overrides template value)
        :param templ:    Import template name
        :param line:     Oasis montaj line name to create (overrides template value)
        :type  db:       GXDB
        :type  connect:  str
        :type  templ:    str
        :type  line:     str
        .. versionadded:: 7.1
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The import template can be in the local directory or the GEOSOFT
        directory.
        2. Only the import template must be specified. The Geodatabase connection string
        and Oasis line name are normally taken from the template file itself,
        but if these values are provided, they will override those found in the template.
        3. If the line already exists, the data will overwrite the existing data.
        """
        
        gxapi_cy.WrapDU._import_esri(GXContext._get_tls_geo(), db, connect.encode(), templ.encode(), line.encode()) 
        
[docs]
    @classmethod
    def import_gbn(cls, db, file):
        """
        
        Import GBN data file.
        
        :param db:    Database
        :param file:  File name of the GBN file to import
        :type  db:    GXDB
        :type  file:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._import_gbn(GXContext._get_tls_geo(), db, file.encode()) 
        
[docs]
    @classmethod
    def import_oddf(cls, db, file):
        """
        
        Import ODDF data file.
        
        :param db:    Database
        :param file:  File name of the ODDF file to import
        :type  db:    GXDB
        :type  file:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._import_oddf(GXContext._get_tls_geo(), db, file.encode()) 
        
[docs]
    @classmethod
    def import_pico(cls, db, templ, data, chans):
        """
        
        Import a Picodas data file.
        
        :param db:     Database
        :param templ:  Template file name
        :param data:   Data file name
        :param chans:  Number of channels to import at one time
        :type  db:     GXDB
        :type  templ:  str
        :type  data:   str
        :type  chans:  int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._import_pico(GXContext._get_tls_geo(), db, templ.encode(), data.encode(), chans) 
        
[docs]
    @classmethod
    def import_ubc_mod_msh(cls, db, mesh, mods, dir, dummy):
        """
        
        Import UBC Mod and Msh files.
        
        :param db:     Database Object
        :param mesh:   Mesh file
        :param mods:   1-5 Mod files, delimited with "|"
        :param dir:    Import slice direction (0-2 for X,Y and Z)
        :param dummy:  Value to interpret as dummy
        :type  db:     GXDB
        :type  mesh:   str
        :type  mods:   str
        :type  dir:    int
        :type  dummy:  float
        .. versionadded:: 6.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Each slice in X,Y or Z is imported to its own line in the database
        beginning with L0.
        """
        
        gxapi_cy.WrapDU._import_ubc_mod_msh(GXContext._get_tls_geo(), db, mesh.encode(), mods.encode(), dir, dummy) 
        
[docs]
    @classmethod
    def import_usgs_post(cls, db, file):
        """
        
        Import USGS Post data file.
        
        :param db:    Database
        :param file:  File name of the USGS post file to import
        :type  db:    GXDB
        :type  file:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._import_usgs_post(GXContext._get_tls_geo(), db, file.encode()) 
        
[docs]
    @classmethod
    def import_xyz(cls, db, mode, data, templ):
        """
        
        Import XYZ data into the database.
        
        :param db:     Database
        :param mode:   :ref:`DU_IMPORT`
        :param data:   Import data file name
        :param templ:  Import template name
        :type  db:     GXDB
        :type  mode:   int
        :type  data:   str
        :type  templ:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The import template can be in the local directory or the GEOSOFT
        directory.  The import data file must include the path if it is not
        in the local directory.
        2. Both the import template and data file must exist.
        """
        
        gxapi_cy.WrapDU._import_xyz(GXContext._get_tls_geo(), db, mode, data.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def import_xyz2(cls, db, mode, data, templ, wa):
        """
        
        Import XYZ data into the database.
        
        :param db:     Database
        :param mode:   :ref:`DU_IMPORT`
        :param data:   Import data file name
        :param templ:  Import template name
        :type  db:     GXDB
        :type  mode:   int
        :type  data:   str
        :type  templ:  str
        :type  wa:     GXWA
        .. versionadded:: 5.1.6
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. The import template can be in the local directory or the GEOSOFT
        directory.  The import data file must include the path if it is not
        in the local directory.
        2. Both the import template and data file must exist.
        """
        
        gxapi_cy.WrapDU._import_xyz2(GXContext._get_tls_geo(), db, mode, data.encode(), templ.encode(), wa) 
        
[docs]
    @classmethod
    def import_io_gas(cls, db, data_csv, templ):
        """
        
        Import data columns from an ioGAS data file.
        
        :param db:        Database
        :param data_csv:  Input data.csv file name
        :param templ:     Input template file name
        :type  db:        GXDB
        :type  data_csv:  str
        :type  templ:     str
        .. versionadded:: 8.5
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** 1. All columns in the speficied ioGAS data file will be imported.
        2. If a line already exists, the data will overwrite the existing data.
        """
        
        gxapi_cy.WrapDU._import_io_gas(GXContext._get_tls_geo(), db, data_csv.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def index_order(cls, db, line, in_ch, ch):
        """
        
        Change the order of a channel using an index channel.
        
        :param db:     Database
        :param line:   Line symbol
        :param in_ch:  Ordered index channel (should be int) [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ch:     Channel to reorder [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:     GXDB
        :type  line:   int
        :type  in_ch:  int
        :type  ch:     int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._index_order(GXContext._get_tls_geo(), db, line, in_ch, ch) 
        
[docs]
    @classmethod
    def interp(cls, db, line, i_ch, o_ch, inside, outside):
        """
        
        Replace all dummies by interpolating from valid data.
        
        :param db:       Database
        :param line:     Line handle
        :param i_ch:     Channel to interpolate [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:     Output interpolated channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param inside:   :ref:`DU_INTERP`
        :param outside:  :ref:`DU_INTERP_EDGE`
        :type  db:       GXDB
        :type  line:     int
        :type  i_ch:     int
        :type  o_ch:     int
        :type  inside:   int
        :type  outside:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._interp(GXContext._get_tls_geo(), db, line, i_ch, o_ch, inside, outside) 
        
[docs]
    @classmethod
    def interp_gap(cls, db, line, i_ch, o_ch, inside, outside, gap, extend):
        """
        
        Replace all dummies by interpolating from valid data.
        
        :param db:       Database
        :param line:     Line handle
        :param i_ch:     Channel to interpolate [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:     Output interpolated channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param inside:   :ref:`DU_INTERP`
        :param outside:  :ref:`DU_INTERP_EDGE`
        :param gap:      Maximum gap to interpolate (fiducials)
        :param extend:   Maximum items to extend at ends.
        :type  db:       GXDB
        :type  line:     int
        :type  i_ch:     int
        :type  o_ch:     int
        :type  inside:   int
        :type  outside:  int
        :type  gap:      int
        :type  extend:   int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._interp_gap(GXContext._get_tls_geo(), db, line, i_ch, o_ch, inside, outside, gap, extend) 
        
[docs]
    @classmethod
    def interp_gap_and_fill(cls, db, line, i_ch, o_ch, inside, outside, gap, extend, fill):
        """
        
        Replace all dummies by interpolating from valid data.
        
        :param db:       Database
        :param line:     Line handle
        :param i_ch:     Channel to interpolate [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:     Output interpolated channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param inside:   :ref:`DU_INTERP`
        :param outside:  :ref:`DU_INTERP_EDGE`
        :param gap:      Maximum gap to interpolate (fiducials)
        :param extend:   Maximum items to extend at ends.
        :param fill:     Value used to fill dummy channels.
        :type  db:       GXDB
        :type  line:     int
        :type  i_ch:     int
        :type  o_ch:     int
        :type  inside:   int
        :type  outside:  int
        :type  gap:      int
        :type  extend:   int
        :type  fill:     float
        .. versionadded:: 2022.2
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._interp_gap_and_fill(GXContext._get_tls_geo(), db, line, i_ch, o_ch, inside, outside, gap, extend, fill) 
        
[docs]
    @classmethod
    def intersect(cls, db, x_chan, y_chan, z_chan, tol, file):
        """
        
        Create Tie Line & Normal Line intersect table.
        
        :param db:      Database
        :param x_chan:  X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_chan:  Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_chan:  Z Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param tol:     Intersection tolerance
        :param file:    Output Table file Name
        :type  db:      GXDB
        :type  x_chan:  int
        :type  y_chan:  int
        :type  z_chan:  int
        :type  tol:     float
        :type  file:    str
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._intersect(GXContext._get_tls_geo(), db, x_chan, y_chan, z_chan, tol, file.encode()) 
        
[docs]
    @classmethod
    def intersect_all(cls, db, x_chan, y_chan, z_chan, tol, file):
        """
        
        Create line intersect table from all lines.
        
        :param db:      Database
        :param x_chan:  X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_chan:  Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_chan:  Z Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param tol:     Intersection tolerance
        :param file:    Output Table file Name
        :type  db:      GXDB
        :type  x_chan:  int
        :type  y_chan:  int
        :type  z_chan:  int
        :type  tol:     float
        :type  file:    str
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._intersect_all(GXContext._get_tls_geo(), db, x_chan, y_chan, z_chan, tol, file.encode()) 
        
[docs]
    @classmethod
    def intersect_gd_bto_tbl(cls, db, tbl):
        """
        
        Create a new intersection table from an intersection database.
        
        :param db:   Input Intersection Database name
        :param tbl:  Output intersection TBL
        :type  db:   str
        :type  tbl:  str
        .. versionadded:: 7.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** If the TBL exists, it is overwritten.
        """
        
        gxapi_cy.WrapDU._intersect_gd_bto_tbl(GXContext._get_tls_geo(), db.encode(), tbl.encode()) 
        
[docs]
    @classmethod
    def intersect_old(cls, db, x_chan, y_chan, z_chan, in_file, out_file):
        """
        
        Use existing intersection table and re-calculate miss-ties.
        
        :param db:        Database
        :param x_chan:    X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_chan:    Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_chan:    Z Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param in_file:   Input Table file name
        :param out_file:  Output Table file Name
        :type  db:        GXDB
        :type  x_chan:    int
        :type  y_chan:    int
        :type  z_chan:    int
        :type  in_file:   str
        :type  out_file:  str
        .. versionadded:: 5.1.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Reads intersection information from an existing intersect
        table and looks up the values at the intersections for the
        input Z channel. This makes it unnecessary to re-calculate
        the intersections every time if you want to determine
        miss-ties using different Z channels, or the same Z channel
        after processing levelling corrections. Existing intersections
        whose locations do not exist in the database are ignored.
        """
        
        gxapi_cy.WrapDU._intersect_old(GXContext._get_tls_geo(), db, x_chan, y_chan, z_chan, in_file.encode(), out_file.encode()) 
        
[docs]
    @classmethod
    def intersect_tb_lto_gdb(cls, tbl, db):
        """
        
        Create a new intersection database from an intersection table.
        
        :param tbl:  Input intersection TBL
        :param db:   Output Intersection Database name
        :type  tbl:  str
        :type  db:   str
        .. versionadded:: 7.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** If the GDB exists, it is deleted, so it should not
        be loaded.
        The database is split by Tie lines (or whatever lines are found in column 3
        of the TBL file.
        """
        
        gxapi_cy.WrapDU._intersect_tb_lto_gdb(GXContext._get_tls_geo(), tbl.encode(), db.encode()) 
        
[docs]
    @classmethod
    def lab_template(cls, data, templ, type, delimit, name_off, unit_off, data_off, sample_type, data_type):
        """
        
        Makes a default template from a lab assay file.
        
        :param data:         Data file name
        :param templ:        New template name
        :param type:         :ref:`DU_LAB_TYPE`
        :param delimit:      Delimiter string
        :param name_off:     Offset to column labels line (0 for first line)
        :param unit_off:     Offset to unit labels line, -1 if none
        :param data_off:     Offset to first line that contains data
        :param sample_type:  Sample channel element type, recommend -10 for 10-character ASCII, or `GS_LONG <geosoft.gxapi.GS_LONG>` for numbers.
        :param data_type:    Default channel element type, recommend `GS_FLOAT <geosoft.gxapi.GS_FLOAT>`
        :type  data:         str
        :type  templ:        str
        :type  type:         int
        :type  delimit:      str
        :type  name_off:     int
        :type  unit_off:     int
        :type  data_off:     int
        :type  sample_type:  int
        :type  data_type:    int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** The template can be used to import the file using
        sImportBIN_DU.
        The first column is assumed to be the sample number.
        If the unit label line is the same as the column label
        line, column labels are assummed to be followed by
        unit labels using the format "Au-ppm", "Au ppm" or
        "Au(ppm)".
        The number of channels is determined from the number of
        columns in the data channel.  If there are more column
        labels or unit labels, the last labels are assumed to
        be correct.  If there are fewer line labels, default
        labels "Col_n", where n is the column number, will be
        created and no unit labels will be defined.
        .. seealso::
            `import_bin <geosoft.gxapi.GXDU.import_bin>`
        """
        
        gxapi_cy.WrapDU._lab_template(GXContext._get_tls_geo(), data.encode(), templ.encode(), type, delimit.encode(), name_off, unit_off, data_off, sample_type, data_type) 
        
[docs]
    @classmethod
    def load_gravity(cls, db, reg, line, data):
        """
        
        Load a gravity survey file
        
        :param db:    Database
        :param reg:   `GXREG <geosoft.gxapi.GXREG>` to hold constant data
        :param line:  Line in which to load data
        :param data:  Gravity data file
        :type  db:    GXDB
        :type  reg:   GXREG
        :type  line:  int
        :type  data:  str
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** See GRAVITY.`GXDAT <geosoft.gxapi.GXDAT>` for a description of the file format.
        Existing data in the line will be replaced.
        The following `GXREG <geosoft.gxapi.GXREG>` parameters will be set if they appear
        in the data file:
        default
        OPERATOR             ""
        DATE                 none
        INSTRUMENT           ""
        INSTRUMENT_SCALE     "1.0"
        BASE_GRAVITY         "0.0"
        FORMULA              "1967"
        GMT_DIFF             "0.0"
        DISTANCE_UNITS       "m"
        DENSITY_EARTH        "2.67"
        DENSITY_WATER        "1.0"
        DENSITY_ICE          "0.95"
        MAP_PROJECTION       ""
        If the corresponding constant is not specified and the
        `GXREG <geosoft.gxapi.GXREG>` already has the constant defined, it is not changed.
        If the constant is not defined and it is not already in
        the `GXREG <geosoft.gxapi.GXREG>`, the indicated default will be set.
        """
        
        gxapi_cy.WrapDU._load_gravity(GXContext._get_tls_geo(), db, reg, line, data.encode()) 
        
[docs]
    @classmethod
    def load_gravity_cg6(cls, db, data):
        """
        
        Load a CG-6 gravity survey file.
        
        :param db:    Database
        :param data:  Gravity data file
        :type  db:    GXDB
        :type  data:  str
        .. versionadded:: 9.3.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Has its own format - space-delimited columns of data
        """
        
        gxapi_cy.WrapDU._load_gravity_cg6(GXContext._get_tls_geo(), db, data.encode()) 
        
[docs]
    @classmethod
    def load_gravity_cg6_to_line(cls, db, data, line):
        """
        
        Load a CG-6 gravity survey file. Specify the name of the output line
        
        :param db:    Database
        :param data:  Gravity data file
        :param line:  line name - can be empty in which case it will create a line name from the input file name
        :type  db:    GXDB
        :type  data:  str
        :type  line:  str
        .. versionadded:: 9.7
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Has its own format - space-delimited columns of data
        """
        
        gxapi_cy.WrapDU._load_gravity_cg6_to_line(GXContext._get_tls_geo(), db, data.encode(), line.encode()) 
        
[docs]
    @classmethod
    def load_gravity_cg6_ex(cls, db, data, line, date_format):
        """
        
        Load a CG-6 gravity survey file. Specify the name of the output line
        
        :param db:           Database
        :param data:         Gravity data file
        :param line:         line name - can be empty in which case it will create a line name from the input file name
        :param date_format:  :ref:`DATE_FORMAT`
        :type  db:           GXDB
        :type  data:         str
        :type  line:         str
        :type  date_format:  int
        .. versionadded:: 2022.2
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Has its own format - space-delimited columns of data
        """
        
        gxapi_cy.WrapDU._load_gravity_cg6_ex(GXContext._get_tls_geo(), db, data.encode(), line.encode(), date_format) 
        
[docs]
    @classmethod
    def load_ltb(cls, db, line, ltb, mode):
        """
        
        Load `GXLTB <geosoft.gxapi.GXLTB>` into a database line.
        
        :param db:    Database
        :param line:  Line
        :param ltb:   Table
        :param mode:  :ref:`DU_LOADLTB`
        :type  db:    GXDB
        :type  line:  int
        :type  ltb:   GXLTB
        :type  mode:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** A new channel will be created for all `GXLTB <geosoft.gxapi.GXLTB>` fields
        that do not already exist.
        The `GXLTB <geosoft.gxapi.GXLTB>` field type will be double if all entries can be
        converted to double, otherwise it will be a string type
        set to the larger of 16 characters or the longest string
        in the field.
        For _APPEND, the `GXLTB <geosoft.gxapi.GXLTB>` data is simply added the end of each
        channel.  `re_fid_all_ch <geosoft.gxapi.GXDU.re_fid_all_ch>` can be used to re-fid data to
        match a specifc channel and there-by case all channels to be
        the same length before appending data.
        """
        
        gxapi_cy.WrapDU._load_ltb(GXContext._get_tls_geo(), db, line, ltb, mode) 
        
[docs]
    @classmethod
    def make_fid(cls, db, line, i_ch, o_ch):
        """
        
        Make a fiducial channel based on an existing channel.
        
        :param db:    Database object
        :param line:  Line Symbol
        :param i_ch:  Base channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  New fiducial channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  o_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._make_fid(GXContext._get_tls_geo(), db, line, i_ch, o_ch) 
        
[docs]
    @classmethod
    def mask(cls, db, line, i_ch, m_ch):
        """
        
        Mask dummies in one channel against another.
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Channel to mask [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param m_ch:  Mask channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  m_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._mask(GXContext._get_tls_geo(), db, line, i_ch, m_ch) 
        
[docs]
    @classmethod
    def math(cls, db, line, exp):
        """
        
        Apply an expression to the database
        
        :param db:    Database
        :param line:  Line handle
        :param exp:   Math expression object (`GXEXP <geosoft.gxapi.GXEXP>`)
        :type  db:    GXDB
        :type  line:  int
        :type  exp:   GXEXP
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The MATH_DU method will READWRITE lock channels on the left
        side of expressions and READONLY lock channels on the right
        side of expressions.  Channels are unlocked before returning.
        Therefore, channels on the left side of an expression cannot
        be locked READONLY because the `math <geosoft.gxapi.GXDU.math>` attempt to lock the
        channel READWRITE will fail.  Similarly, channels on the right
        side of an expression cannot be locked READWRITE because
        `math <geosoft.gxapi.GXDU.math>`'s attempt to lock the channels READONLY will fail.
        If this is confusing, just make sure no channels used in the
        expression are locked before calling `math <geosoft.gxapi.GXDU.math>`.
        .. seealso::
            `GXEXP <geosoft.gxapi.GXEXP>`
        """
        
        gxapi_cy.WrapDU._math(GXContext._get_tls_geo(), db, line, exp) 
        
[docs]
    @classmethod
    def merge_line(cls, db, i_line, m_line, o_line, mode):
        """
        
        Merge a line a the fiducial and copies any data past
        that fiducial into the new line.
        
        :param db:      Database
        :param i_line:  Input Line1 [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param m_line:  Input Line2 [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_line:  Output Line [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param mode:    :ref:`DU_MERGE`
        :type  db:      GXDB
        :type  i_line:  int
        :type  m_line:  int
        :type  o_line:  int
        :type  mode:    int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._merge_line(GXContext._get_tls_geo(), db, i_line, m_line, o_line, mode) 
        
[docs]
    @classmethod
    def mod_fid_range(cls, db, ln, fid_start, incr, start_index, num, opt):
        """
        
        Insert/Append/Delete a range of fids.
        
        :param db:           Database
        :param ln:           Line
        :param fid_start:    Base fid start
        :param incr:         Base fid increment
        :param start_index:  Start index (can be negative)
        :param num:          Number of fids
        :param opt:          :ref:`DU_MODFID`
        :type  db:           GXDB
        :type  ln:           int
        :type  fid_start:    float
        :type  incr:         float
        :type  start_index:  int
        :type  num:          int
        :type  opt:          int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Channels that do not have the same fid start or fid
        increment are not processed.
        Protected channels are modified automatically.
        """
        
        gxapi_cy.WrapDU._mod_fid_range(GXContext._get_tls_geo(), db, ln, fid_start, incr, start_index, num, opt) 
        
[docs]
    @classmethod
    def move(cls, db, line, i_ch, c_ch, o_ch, mode):
        """
        
        Move/correct a channel to a control channel.
        
        :param db:    Database
        :param line:  Line Handle to Apply this to
        :param i_ch:  Input channel   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param c_ch:  Control channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:  Result channel  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param mode:  :ref:`DU_MOVE`
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  c_ch:  int
        :type  o_ch:  int
        :type  mode:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The input channel is moved to the absolute location
        of the control channel.
        """
        
        gxapi_cy.WrapDU._move(GXContext._get_tls_geo(), db, line, i_ch, c_ch, o_ch, mode) 
        
[docs]
    @classmethod
    def nl_filt(cls, db, line, i_ch, o_ch, width, tol):
        """
        
        This method applies a non-linear filter to the specified
        line/channel and places the output in the output channel.
        
        :param db:     Database
        :param line:   Line handle
        :param i_ch:   Channel to filter [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Output filtered channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param width:  Filter Width
        :param tol:    Filter Tolerance, 0 for 10% of Std. Dev.
        :type  db:     GXDB
        :type  line:   int
        :type  i_ch:   int
        :type  o_ch:   int
        :type  width:  int
        :type  tol:    float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._nl_filt(GXContext._get_tls_geo(), db, line, i_ch, o_ch, width, tol) 
        
[docs]
    @classmethod
    def normal(cls, db, ch, ignore):
        """
        
        Set fid of all channels to match a specified channel.
        
        :param db:      Database handle
        :param ch:      Base Channel for normalization.  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ignore:  Ignore write protection on channels?
        :type  db:      GXDB
        :type  ch:      int
        :type  ignore:  bool
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        .. seealso::
            `re_fid_all_ch <geosoft.gxapi.GXDU.re_fid_all_ch>`
        """
        
        gxapi_cy.WrapDU._normal(GXContext._get_tls_geo(), db, ch, ignore) 
        
[docs]
    @classmethod
    def poly_fill(cls, db, line, x_chan, y_chan, r_chan, pply, dummy):
        """
        
        Fill using a polygon with a value of 1.
        
        :param db:      Database
        :param line:    Line Handle
        :param x_chan:  X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_chan:  Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param r_chan:  Channel to fill [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param pply:    Polygon Object to use
        :param dummy:   :ref:`DU_FILL`
        :type  db:      GXDB
        :type  line:    int
        :type  x_chan:  int
        :type  y_chan:  int
        :type  r_chan:  int
        :type  pply:    GXPLY
        :type  dummy:   int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._poly_fill(GXContext._get_tls_geo(), db, line, x_chan, y_chan, r_chan, pply, dummy) 
        
[docs]
    @classmethod
    def poly_mask(cls, db, line, x_chan, y_chan, r_chan, pply, dummy):
        """
        
        Mask against a polygon.
        
        :param db:      Database
        :param line:    Line Handle
        :param x_chan:  X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_chan:  Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param r_chan:  Channel to mask [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param pply:    Polygon Object to use
        :param dummy:   :ref:`DU_MASK`
        :type  db:      GXDB
        :type  line:    int
        :type  x_chan:  int
        :type  y_chan:  int
        :type  r_chan:  int
        :type  pply:    GXPLY
        :type  dummy:   int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._poly_mask(GXContext._get_tls_geo(), db, line, x_chan, y_chan, r_chan, pply, dummy) 
        
[docs]
    @classmethod
    def project_data(cls, db, line, ix_ch, iy_ch, ox_ch, oy_ch, pj):
        """
        
        Project X,Y channels
        
        :param db:     Database
        :param line:   Line Handle to project
        :param ix_ch:  X Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:  Y Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ox_ch:  X Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oy_ch:  Y Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param pj:     Projection object to Apply
        :type  db:     GXDB
        :type  line:   int
        :type  ix_ch:  int
        :type  iy_ch:  int
        :type  ox_ch:  int
        :type  oy_ch:  int
        :type  pj:     GXPJ
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Output channels can be the same as input channels
        """
        
        gxapi_cy.WrapDU._project_data(GXContext._get_tls_geo(), db, line, ix_ch, iy_ch, ox_ch, oy_ch, pj) 
        
[docs]
    @classmethod
    def project_xyz(cls, db, line, ix_ch, iy_ch, iz_ch, ox_ch, oy_ch, oz_ch, pj):
        """
        
        Project X,Y,Z channels from one system to another.
        
        :param db:     Database
        :param line:   Line Handle to project
        :param ix_ch:  X Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:  Y Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iz_ch:  Z Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ox_ch:  X Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oy_ch:  Y Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oz_ch:  Z Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param pj:     Projection object to Apply
        :type  db:     GXDB
        :type  line:   int
        :type  ix_ch:  int
        :type  iy_ch:  int
        :type  iz_ch:  int
        :type  ox_ch:  int
        :type  oy_ch:  int
        :type  oz_ch:  int
        :type  pj:     GXPJ
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Output channels can be the same as input channels
        """
        
        gxapi_cy.WrapDU._project_xyz(GXContext._get_tls_geo(), db, line, ix_ch, iy_ch, iz_ch, ox_ch, oy_ch, oz_ch, pj) 
        
[docs]
    @classmethod
    def proj_points(cls, db, line, ix_ch, iy_ch, iz_ch, ox_ch, oy_ch, oz_ch, i_name_chan, i_datum_chan, i_method_chan, i_unit_chan, il_datum_chan, o_name_chan, o_datum_chan, o_method_chan, o_unit_chan, ol_datum_chan, error_chan, force_local_datum):
        """
        
        Project X,Y(Z) channels with different projections
        
        :param db:                 Database
        :param line:               Line Handle to project
        :param ix_ch:              X Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:              Y Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iz_ch:              Z Input Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`] (can be DB_NULL_SYMB)
        :param ox_ch:              X Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oy_ch:              Y Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param oz_ch:              Z Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`] (can be DB_NULL_SYMB)
        :param i_name_chan:        Input Name Channel   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param i_datum_chan:       Input Datum Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param i_method_chan:      Input Method Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param i_unit_chan:        Input Unit Channel   [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param il_datum_chan:      Input Local Datum Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_name_chan:        Output Name Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_datum_chan:       Output Datum Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_method_chan:      Output Method Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_unit_chan:        Output Unit Channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ol_datum_chan:      Output Local Datum Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param error_chan:         Error Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param force_local_datum:  Force Local Datum Shifts?
        :type  db:                 GXDB
        :type  line:               int
        :type  ix_ch:              int
        :type  iy_ch:              int
        :type  iz_ch:              int
        :type  ox_ch:              int
        :type  oy_ch:              int
        :type  oz_ch:              int
        :type  i_name_chan:        int
        :type  i_datum_chan:       int
        :type  i_method_chan:      int
        :type  i_unit_chan:        int
        :type  il_datum_chan:      int
        :type  o_name_chan:        int
        :type  o_datum_chan:       int
        :type  o_method_chan:      int
        :type  o_unit_chan:        int
        :type  ol_datum_chan:      int
        :type  error_chan:         int
        :type  force_local_datum:  int
        .. versionadded:: 6.3
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Output channels can be the same as input channels
        """
        
        gxapi_cy.WrapDU._proj_points(GXContext._get_tls_geo(), db, line, ix_ch, iy_ch, iz_ch, ox_ch, oy_ch, oz_ch, i_name_chan, i_datum_chan, i_method_chan, i_unit_chan, il_datum_chan, o_name_chan, o_datum_chan, o_method_chan, o_unit_chan, ol_datum_chan, error_chan, force_local_datum) 
        
[docs]
    @classmethod
    def qc_init_separation(cls, db, sep, dir):
        """
        
        Creates the nearest line channels for line separation QC.
        
        :param db:   Database
        :param sep:  Nominal Line separation
        :param dir:  Nominal Line direction
        :type  db:   GXDB
        :type  sep:  float
        :type  dir:  float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** This must be called before QCSeparation_DU. It uses a pager to
        establish the relative positions of the selected lines, then,
        for every point determines the closest point in another line to
        the left and to the right (as determined by looking in the
        direction of the line.) These distances are stored to two new
        channels in the database, "Closest_Left" and "Closest_Right"
        """
        
        gxapi_cy.WrapDU._qc_init_separation(GXContext._get_tls_geo(), db, sep, dir) 
        
[docs]
    @classmethod
    def qc_survey_plan(cls, db, wa, pply, sl_spa, sl_azi, slx, sly, sl_sta, sl_inc, tl_spa, tl_azi, tlx, tly, tl_sta, tl_inc, type, sample_spacing, extend_outside):
        """
        
        Create a database containing proposed survey plan in a `GXPLY <geosoft.gxapi.GXPLY>`
        
        :param db:              Database to save proposed survey plan
        :param wa:              `GXWA <geosoft.gxapi.GXWA>` to save survey plan summary
        :param pply:            Boundary `GXPLY <geosoft.gxapi.GXPLY>`
        :param sl_spa:          Survey line spacing
        :param sl_azi:          Survey line azimuth
        :param slx:             Survey line reference X coordinate
        :param sly:             Survey line reference Y coordinate
        :param sl_sta:          Survey line starting number of LINES
        :param sl_inc:          Line number increment for survey line
        :param tl_spa:          Tie line spacing
        :param tl_azi:          Tie line azimuth
        :param tlx:             Tie line reference X coordinate
        :param tly:             Tie line reference Y coordinate
        :param tl_sta:          Tie line starting number of LINES
        :param tl_inc:          Line number increment for Tie line
        :param type:            :ref:`QC_PLAN_TYPE`
        :param sample_spacing:  Sample spacing (spacing between points in lines)
        :param extend_outside:  Spacing to extend lines outside polygon
        :type  db:              GXDB
        :type  wa:              GXWA
        :type  pply:            GXPLY
        :type  sl_spa:          float
        :type  sl_azi:          float
        :type  slx:             float
        :type  sly:             float
        :type  sl_sta:          int
        :type  sl_inc:          int
        :type  tl_spa:          float
        :type  tl_azi:          float
        :type  tlx:             float
        :type  tly:             float
        :type  tl_sta:          int
        :type  tl_inc:          int
        :type  type:            int
        :type  sample_spacing:  float
        :type  extend_outside:  float
        :rtype:                 int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The LINE on which has the reference (X,Y) will have the starting Line number
        The lines on the right hand side of the reference line (while looking
        into azimuth of ref. line) have increasing line numbers. The lines
        on the left hand side have the decreasing line numbers from the starting
        number. Returns an error code or 0 (if successful)
        """
        
        ret_val = gxapi_cy.WrapDU._qc_survey_plan(GXContext._get_tls_geo(), db, wa, pply, sl_spa, sl_azi, slx, sly, sl_sta, sl_inc, tl_spa, tl_azi, tlx, tly, tl_sta, tl_inc, type, sample_spacing, extend_outside)
        return ret_val 
[docs]
    @classmethod
    def qc_survey_plan2(cls, db, wa, pply, sl_spa, sl_azi, slx, sly, sl_sta, sl_inc, tl_spa, tl_azi, tlx, tly, tl_sta, tl_inc, type, sample_spacing, extend_outside):
        """
        
        Same as QCSurveyPlan_DU, but lines split by the polygon increment version numbers and keep the line number the same.
        
        :param db:              Database to save proposed survey plan
        :param wa:              `GXWA <geosoft.gxapi.GXWA>` to save survey plan summary
        :param pply:            Boundary `GXPLY <geosoft.gxapi.GXPLY>`
        :param sl_spa:          Survey line spacing
        :param sl_azi:          Survey line azimuth
        :param slx:             Survey line reference X coordinate
        :param sly:             Survey line reference Y coordinate
        :param sl_sta:          Survey line starting number of LINES
        :param sl_inc:          Line number increment for survey line
        :param tl_spa:          Tie line spacing
        :param tl_azi:          Tie line azimuth
        :param tlx:             Tie line reference X coordinate
        :param tly:             Tie line reference Y coordinate
        :param tl_sta:          Tie line starting number of LINES
        :param tl_inc:          Line number increment for Tie line
        :param type:            :ref:`QC_PLAN_TYPE`
        :param sample_spacing:  Sample spacing (spacing between points in lines)
        :param extend_outside:  Spacing to extend lines outside polygon
        :type  db:              GXDB
        :type  wa:              GXWA
        :type  pply:            GXPLY
        :type  sl_spa:          float
        :type  sl_azi:          float
        :type  slx:             float
        :type  sly:             float
        :type  sl_sta:          int
        :type  sl_inc:          int
        :type  tl_spa:          float
        :type  tl_azi:          float
        :type  tlx:             float
        :type  tly:             float
        :type  tl_sta:          int
        :type  tl_inc:          int
        :type  type:            int
        :type  sample_spacing:  float
        :type  extend_outside:  float
        :rtype:                 int
        .. versionadded:: 9.6
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The LINE on which has the reference (X,Y) will have the starting Line number
        The lines on the right hand side of the reference line (while looking
        into azimuth of ref. line) have increasing line numbers. The lines
        on the left hand side have the decreasing line numbers from the starting
        number. Returns an error code or 0 (if successful)
        """
        
        ret_val = gxapi_cy.WrapDU._qc_survey_plan2(GXContext._get_tls_geo(), db, wa, pply, sl_spa, sl_azi, slx, sly, sl_sta, sl_inc, tl_spa, tl_azi, tlx, tly, tl_sta, tl_inc, type, sample_spacing, extend_outside)
        return ret_val 
[docs]
    @classmethod
    def direction(cls, db, line, x_ch, y_ch):
        """
        
        Returns the direction of a line.
        
        :param db:    Database Object
        :param line:  Line Symbol
        :param x_ch:  X reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:  Y reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :type  db:    GXDB
        :type  line:  int
        :type  x_ch:  int
        :type  y_ch:  int
        :returns:     direction in degrees azimuth (clockwise relative
                      the +Y direction).
                      `GS_R8DM <geosoft.gxapi.GS_R8DM>` if the line has no data, or if there is a
                      problem.  Problems will register errors.
        :rtype:       float
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** The direction is calculated from the first and last
        non-dummy locations in the X and Y reference channels.
        """
        
        ret_val = gxapi_cy.WrapDU._direction(GXContext._get_tls_geo(), db, line, x_ch, y_ch)
        return ret_val 
[docs]
    @classmethod
    def re_fid(cls, db, line, in_ch, ref_ch, out_ch, mode, start, incr, gap):
        """
        
        Re-fid a channel based on a reference channel
        
        :param db:      Database Object
        :param line:    Line Symbol
        :param in_ch:   Original Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]  "Y" values
        :param ref_ch:  Reference Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`] "X" locations
        :param out_ch:  Output Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param mode:    :ref:`DU_REFID`
        :param start:   Start Fid, if `GS_R8DM <geosoft.gxapi.GS_R8DM>`, use ref channel minimum
        :param incr:    Fid increment, if `GS_R8DM <geosoft.gxapi.GS_R8DM>` use nominal spacing of the reference channel.
        :param gap:     Maximum gap to interpolate across
        :type  db:      GXDB
        :type  line:    int
        :type  in_ch:   int
        :type  ref_ch:  int
        :type  out_ch:  int
        :type  mode:    int
        :type  start:   float
        :type  incr:    float
        :type  gap:     float
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** The original channel can be an array channel, in which case
        the columns (up to the number of columns available in the output)
        are individually interpolated. If the number of
        columns in the output channel is more than the input channel,
        the remaining columns are dummied.
        This function is fundamentally different in behaviour from `re_fid_ch <geosoft.gxapi.GXDU.re_fid_ch>`.
        The values in the Reference channel in `re_fid <geosoft.gxapi.GXDU.re_fid>` are the "X" locations
        corresponding to the "Y" locations in the "Original Channel". Output
        Channel values are calculated at the new "X" locations specified by
        the Start Fid and the Fid Increment.
        """
        
        gxapi_cy.WrapDU._re_fid(GXContext._get_tls_geo(), db, line, in_ch, ref_ch, out_ch, mode, start, incr, gap) 
        
[docs]
    @classmethod
    def re_fid_all_ch(cls, db, line, ref_ch):
        """
        
        Simple re-fid of all channels based on a reference channel
        
        :param db:      Database Object
        :param line:    Line Symbol
        :param ref_ch:  Reference Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :type  db:      GXDB
        :type  line:    int
        :type  ref_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Channels can be array channels, in which case
        the columns are individually re-fidded.
        .. seealso::
            `normal <geosoft.gxapi.GXDU.normal>`
        """
        
        gxapi_cy.WrapDU._re_fid_all_ch(GXContext._get_tls_geo(), db, line, ref_ch) 
        
[docs]
    @classmethod
    def re_fid_ch(cls, db, line, ref_ch, ch):
        """
        
        Simple re-fid of a channel based on a reference channel
        
        :param db:      Database Object
        :param line:    Line Symbol
        :param ref_ch:  Reference Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param ch:      Channel to refid  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:      GXDB
        :type  line:    int
        :type  ref_ch:  int
        :type  ch:      int
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** The original channel can be an array channel, in which case
        the columns are individually re-fidded.
        `re_fid_ch <geosoft.gxapi.GXDU.re_fid_ch>` resamples the "Channel to refid" to the "Reference Channel" Fid
        range and increment.
        """
        
        gxapi_cy.WrapDU._re_fid_ch(GXContext._get_tls_geo(), db, line, ref_ch, ch) 
        
[docs]
    @classmethod
    def rotate(cls, db, line, in_x_ch, in_y_ch, out_x_ch, out_y_ch, x0, y0, deg):
        """
        
        Rotate coordinates.
        
        :param db:        Database
        :param line:      Line symbol
        :param in_x_ch:   Input X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param in_y_ch:   Input Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param out_x_ch:  Output X channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param out_y_ch:  Output Y channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param x0:        X point about which to rotate
        :param y0:        Y of point about which to rotate
        :param deg:       Angle in degrees CCW
        :type  db:        GXDB
        :type  line:      int
        :type  in_x_ch:   int
        :type  in_y_ch:   int
        :type  out_x_ch:  int
        :type  out_y_ch:  int
        :type  x0:        float
        :type  y0:        float
        :type  deg:       float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._rotate(GXContext._get_tls_geo(), db, line, in_x_ch, in_y_ch, out_x_ch, out_y_ch, x0, y0, deg) 
        
[docs]
    @classmethod
    def sample_gd(cls, db, line, ix_ch, iy_ch, o_ch, img):
        """
        
        Sample a `GXGD <geosoft.gxapi.GXGD>` at a specified X and Y.
        
        :param db:     Database
        :param line:   Line Handle to sample
        :param ix_ch:  X Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:  Y Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Z Output Channel sampled from `GXGD <geosoft.gxapi.GXGD>` [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param img:    Grid handle
        :type  db:     GXDB
        :type  line:   int
        :type  ix_ch:  int
        :type  iy_ch:  int
        :type  o_ch:   int
        :type  img:    GXGD
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Values in result channel
        """
        
        gxapi_cy.WrapDU._sample_gd(GXContext._get_tls_geo(), db, line, ix_ch, iy_ch, o_ch, img) 
        
[docs]
    @classmethod
    def sample_img(cls, db, line, ix_ch, iy_ch, o_ch, img):
        """
        
        Sample a `GXIMG <geosoft.gxapi.GXIMG>` at a specified X and Y.
        
        :param db:     Database
        :param line:   Line Handle to sample
        :param ix_ch:  X Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:  Y Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Z Output Channel sampled from `GXIMG <geosoft.gxapi.GXIMG>` [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param img:    `GXIMG <geosoft.gxapi.GXIMG>` handle
        :type  db:     GXDB
        :type  line:   int
        :type  ix_ch:  int
        :type  iy_ch:  int
        :type  o_ch:   int
        :type  img:    GXIMG
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Values in result channel
        """
        
        gxapi_cy.WrapDU._sample_img(GXContext._get_tls_geo(), db, line, ix_ch, iy_ch, o_ch, img) 
        
[docs]
    @classmethod
    def sample_img_line_lst(cls, db, lst, ix_ch, iy_ch, o_ch, img):
        """
        
        Sample an `GXIMG <geosoft.gxapi.GXIMG>` at a specified X and Y, for a `GXLST <geosoft.gxapi.GXLST>` of lines.
        
        :param db:     Database
        :param lst:    `GXLST <geosoft.gxapi.GXLST>` of (Line Name, Line Handle) values to sample
        :param ix_ch:  X Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:  Y Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Z Output Channel sampled from `GXIMG <geosoft.gxapi.GXIMG>` [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param img:    `GXIMG <geosoft.gxapi.GXIMG>` handle
        :type  db:     GXDB
        :type  lst:    GXLST
        :type  ix_ch:  int
        :type  iy_ch:  int
        :type  o_ch:   int
        :type  img:    GXIMG
        .. versionadded:: 8.3
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Values in result channel. Interpolation based on the current IMG render option (linear or nearest)
        """
        
        gxapi_cy.WrapDU._sample_img_line_lst(GXContext._get_tls_geo(), db, lst, ix_ch, iy_ch, o_ch, img) 
        
[docs]
    @classmethod
    def sample_img_line_lst_ex(cls, db, lst, ix_ch, iy_ch, o_ch, img, interp_method):
        """
        
        Sample an `GXIMG <geosoft.gxapi.GXIMG>` at a specified X and Y, for a `GXLST <geosoft.gxapi.GXLST>` of lines.
        
        :param db:             Database
        :param lst:            `GXLST <geosoft.gxapi.GXLST>` of (Line Name, Line Handle) values to sample
        :param ix_ch:          X Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param iy_ch:          Y Input Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:           Z Output Channel sampled from `GXIMG <geosoft.gxapi.GXIMG>` [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param img:            `GXIMG <geosoft.gxapi.GXIMG>` handle
        :param interp_method:  0: INTERP (linear) or 1: NEAREST (pixel)
        :type  db:             GXDB
        :type  lst:            GXLST
        :type  ix_ch:          int
        :type  iy_ch:          int
        :type  o_ch:           int
        :type  img:            GXIMG
        :type  interp_method:  int
        .. versionadded:: 2024.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Values in result channel
        """
        
        gxapi_cy.WrapDU._sample_img_line_lst_ex(GXContext._get_tls_geo(), db, lst, ix_ch, iy_ch, o_ch, img, interp_method) 
        
[docs]
    @classmethod
    def scan_ado(cls, connect, table, templ):
        """
        
        Scans an external ADO database and generates a default template.
        
        :param connect:  Database connection string
        :param table:    Database Table Name
        :param templ:    Template file name to Create
        :type  connect:  str
        :type  table:    str
        :type  templ:    str
        .. versionadded:: 5.0.8
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** All the channels are listed
        """
        
        gxapi_cy.WrapDU._scan_ado(GXContext._get_tls_geo(), connect.encode(), table.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def scan_aseg(cls, file, data, flc, templ):
        """
        
        This method scans an ASEG-GDF file and generates a default
        template listing all the channels and all the ALIAS lines.
        
        :param file:   Header file name
        :param data:   Data file name
        :param flc:    Flight Line Channel name
        :param templ:  Template file name to Create
        :type  file:   str
        :type  data:   str
        :type  flc:    str
        :type  templ:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        """
        
        gxapi_cy.WrapDU._scan_aseg(GXContext._get_tls_geo(), file.encode(), data.encode(), flc.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def scan_dao(cls, file, type, table, templ):
        """
        
        Scans an external DAO database and generates a default template.
        
        :param file:   Database file name
        :param type:   Database Type
        :param table:  Database Table Name
        :param templ:  Template file name to Create
        :type  file:   str
        :type  type:   str
        :type  table:  str
        :type  templ:  str
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** All the channels are listed
        """
        
        gxapi_cy.WrapDU._scan_dao(GXContext._get_tls_geo(), file.encode(), type.encode(), table.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def scan_pico(cls, data, templ):
        """
        
        This method scans a picodas file and generates a default
        template listing all the channels and all the ALIAS lines.
        
        :param data:   Data file Name
        :param templ:  Template file name to Create
        :type  data:   str
        :type  templ:  str
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._scan_pico(GXContext._get_tls_geo(), data.encode(), templ.encode()) 
        
[docs]
    @classmethod
    def sort(cls, db, line, ch, sort):
        """
        
        Sort the contents of a channel.
        
        :param db:    Database
        :param line:  Line symbol
        :param ch:    Channel to sort [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param sort:  :ref:`DU_SORT`
        :type  db:    GXDB
        :type  line:  int
        :type  ch:    int
        :type  sort:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._sort(GXContext._get_tls_geo(), db, line, ch, sort) 
        
[docs]
    @classmethod
    def sort_index(cls, db, line, ch, in_ch, sort):
        """
        
        Create an ordered index of the contents of a channel. The order of rows where compared items are the same is preserved.
        
        :param db:     Database
        :param line:   Line symbol
        :param ch:     Channel to sort [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param in_ch:  Output index channel (should be int) [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param sort:   :ref:`DU_SORT`
        :type  db:     GXDB
        :type  line:   int
        :type  ch:     int
        :type  in_ch:  int
        :type  sort:   int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._sort_index(GXContext._get_tls_geo(), db, line, ch, in_ch, sort) 
        
[docs]
    @classmethod
    def sort_index2(cls, db, line, ch1, sort1, ch2, sort2, in_ch):
        """
        
        Create an ordered index from two channels.  The order of rows where compared items are the same is preserved.
        
        :param db:     Database
        :param line:   Line symbol
        :param ch1:    Sort by this channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param sort1:  :ref:`DU_SORT`
        :param ch2:    Then by this channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param sort2:  :ref:`DU_SORT`
        :param in_ch:  Output index channel (should be int) [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:     GXDB
        :type  line:   int
        :type  ch1:    int
        :type  sort1:  int
        :type  ch2:    int
        :type  sort2:  int
        :type  in_ch:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._sort_index2(GXContext._get_tls_geo(), db, line, ch1, sort1, ch2, sort2, in_ch) 
        
[docs]
    @classmethod
    def sort_index_n(cls, db, line, chVV, orderVV, in_ch):
        """
        
        Create an ordered index from any number of channels.  The order of rows where compared items are the same is preserved.
        
        :param db:       Database
        :param line:     Line symbol
        :param chVV:     VV of channel symbols (INT). Sort by these channels [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param orderVV:  VV of sort order values (INT, one for each channel) :ref:`DU_SORT`
        :param in_ch:    Output index channel (should be int) [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :type  db:       GXDB
        :type  line:     int
        :type  chVV:     GXVV
        :type  orderVV:  GXVV
        :type  in_ch:    int
        .. versionadded:: 9.10
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._sort_index_n(GXContext._get_tls_geo(), db, line, chVV, orderVV, in_ch) 
        
[docs]
    @classmethod
    def split_line(cls, db, i_line, o_line, fid):
        """
        
        Splits a line a the fiducial and copies any data past
        that fiducial into the new line.
        
        :param db:      Database
        :param i_line:  Input Line, will be reduced at fid  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param o_line:  Output Line, will take data above fid [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param fid:     Fid number of split
        :type  db:      GXDB
        :type  i_line:  int
        :type  o_line:  int
        :type  fid:     float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._split_line(GXContext._get_tls_geo(), db, i_line, o_line, fid) 
        
[docs]
    @classmethod
    def split_line2(cls, db, i_line, o_line, fid, reset_fi_ds):
        """
        
        Splits a line a the fiducial and copies any data past
        that fiducial into the new line.
        
        :param db:           Database
        :param i_line:       Input Line, will be reduced at fid  [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param o_line:       Output Line, will take data above fid [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param fid:          Fid number of split
        :param reset_fi_ds:  Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:           GXDB
        :type  i_line:       int
        :type  o_line:       int
        :type  fid:          float
        :type  reset_fi_ds:  int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The same as SplitLine, but with an option to reset each line's starting fiducial to zero.
        """
        
        gxapi_cy.WrapDU._split_line2(GXContext._get_tls_geo(), db, i_line, o_line, fid, reset_fi_ds) 
        
[docs]
    @classmethod
    def split_line_xy(cls, db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, method, first_line, line_inc):
        """
        
        Break up a line based on tolerance of lateral and horizontal distance, with
        options for the output line names.
        
        :param db:          Database
        :param line:        Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:        Channel X [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param y_ch:        Channel Y [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param dirctn:      Line direction, 0-any, 1-X, 2-Y.
        :param tolrnc:      Lateral tolerance, DUMMY for the default (10% of the separation between the first two points.
        :param down_tol:    Downline Tolerance, DUMMY for none
        :param method:      :ref:`DU_SPLITLINE`
        :param first_line:  First line in the sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`. On return, the next line in the sequence.
        :param line_inc:    Increment in the line number sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`
        :type  db:          GXDB
        :type  line:        int
        :type  x_ch:        int
        :type  y_ch:        int
        :type  dirctn:      int
        :type  tolrnc:      float
        :type  down_tol:    float
        :type  method:      int
        :type  first_line:  int_ref
        :type  line_inc:    int
        .. versionadded:: 8.3
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The original line will be deleted.
        """
        
        first_line.value = gxapi_cy.WrapDU._split_line_xy(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, method, first_line.value, line_inc) 
        
[docs]
    @classmethod
    def split_line_xy2(cls, db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, method, first_line, line_inc, reset_fi_ds):
        """
        
        Break up a line based on tolerance of lateral and horizontal distance, with
        options for the output line names.
        
        :param db:           Database
        :param line:         Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:         Channel X [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param y_ch:         Channel Y [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param dirctn:       Line direction, 0-any, 1-X, 2-Y.
        :param tolrnc:       Lateral tolerance, DUMMY for the default (10% of the separation between the first two points.
        :param down_tol:     Downline Tolerance, DUMMY for none
        :param method:       :ref:`DU_SPLITLINE`
        :param first_line:   First line in the sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`. On return, the next line in the sequence.
        :param line_inc:     Increment in the line number sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`
        :param reset_fi_ds:  Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:           GXDB
        :type  line:         int
        :type  x_ch:         int
        :type  y_ch:         int
        :type  dirctn:       int
        :type  tolrnc:       float
        :type  down_tol:     float
        :type  method:       int
        :type  first_line:   int_ref
        :type  line_inc:     int
        :type  reset_fi_ds:  int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The same as SplitLineXY, but with an option to reset each line's starting fiducial to zero.
        """
        
        first_line.value = gxapi_cy.WrapDU._split_line_xy2(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, method, first_line.value, line_inc, reset_fi_ds) 
        
[docs]
    @classmethod
    def split_line_xy3(cls, db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, method, first_line, line_inc, retain_line_type, reset_fi_ds):
        """
        
        Break up a line based on tolerance of lateral and horizontal distance, with
        options for the output line names.
        
        :param db:                Database
        :param line:              Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:              Channel X [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param y_ch:              Channel Y [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param dirctn:            Line direction, 0-any, 1-X, 2-Y.
        :param tolrnc:            Lateral tolerance, DUMMY for the default (10% of the separation between the first two points.
        :param down_tol:          Downline Tolerance, DUMMY for none
        :param method:            :ref:`DU_SPLITLINE`
        :param first_line:        First line in the sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`. On return, the next line in the sequence.
        :param line_inc:          Increment in the line number sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`
        :param retain_line_type:  Maintain line types for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`  (0: No, 1: Yes)
        :param reset_fi_ds:       Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:                GXDB
        :type  line:              int
        :type  x_ch:              int
        :type  y_ch:              int
        :type  dirctn:            int
        :type  tolrnc:            float
        :type  down_tol:          float
        :type  method:            int
        :type  first_line:        int_ref
        :type  line_inc:          int
        :type  retain_line_type:  int
        :type  reset_fi_ds:       int
        .. versionadded:: 9.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The same as SplitLineXY2, but with the option to maintain line types when outputting sequentially numbered lines.
        """
        
        first_line.value = gxapi_cy.WrapDU._split_line_xy3(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, method, first_line.value, line_inc, retain_line_type, reset_fi_ds) 
        
[docs]
    @classmethod
    def split_line_by_direction(cls, db, line, x_ch, y_ch, angular_change, over_a_distance_of, minimum_line_length, break_on_separation_distance, save_discards, method, first_line, line_inc, reset_fi_ds):
        """
        
        The line is split when the heading (calculated from the current X and Y channels) changes by more than a specified amount over
        a specified distance. Additional options to discard too-short lines
        
        :param db:                            Database
        :param line:                          Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:                          X Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`].
        :param y_ch:                          Y Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`].
        :param angular_change:                Maximum angular change allowed (degrees)...
        :param over_a_distance_of:            ...over a distance of
        :param minimum_line_length:           Delete lines shorter than (can be `rDUMMY <geosoft.gxapi.rDUMMY>`)
        :param break_on_separation_distance:  Break on data XY separation greater than (can be `rDUMMY <geosoft.gxapi.rDUMMY>`)
        :param save_discards:                 Whether to save too-short segments as special lines or to discard them
        :param method:                        :ref:`DU_SPLITLINE` ONLY DU_SPLITLINEXY_SEQUENTIAL and DU_SPLITLINEXY_VERSIONS
        :param first_line:                    First line in the sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`. On return, the next line in the sequence.
        :param line_inc:                      Increment in the line number sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`
        :param reset_fi_ds:                   Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:                            GXDB
        :type  line:                          int
        :type  x_ch:                          int
        :type  y_ch:                          int
        :type  angular_change:                float
        :type  over_a_distance_of:            float
        :type  minimum_line_length:           float
        :type  break_on_separation_distance:  float
        :type  save_discards:                 int
        :type  method:                        int
        :type  first_line:                    int_ref
        :type  line_inc:                      int
        :type  reset_fi_ds:                   int
        .. versionadded:: 8.5
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Split a line based on changes in heading.
        """
        
        first_line.value = gxapi_cy.WrapDU._split_line_by_direction(GXContext._get_tls_geo(), db, line, x_ch, y_ch, angular_change, over_a_distance_of, minimum_line_length, break_on_separation_distance, save_discards, method, first_line.value, line_inc, reset_fi_ds) 
        
[docs]
    @classmethod
    def split_line_by_direction2(cls, db, line, x_ch, y_ch, angular_change, over_a_distance_of, minimum_line_length, break_on_separation_distance, save_discards, method, first_line, line_inc, retain_line_type, reset_fi_ds):
        """
        
        The same as SplitLineByDirection, but with the option to maintain line types when outputting sequentially numbered lines.
        
        :param db:                            Database
        :param line:                          Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:                          X Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`].
        :param y_ch:                          Y Channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`].
        :param angular_change:                Maximum angular change allowed (degrees)...
        :param over_a_distance_of:            ...over a distance of
        :param minimum_line_length:           Delete lines shorter than (can be `rDUMMY <geosoft.gxapi.rDUMMY>`)
        :param break_on_separation_distance:  Break on data XY separation greater than (can be `rDUMMY <geosoft.gxapi.rDUMMY>`)
        :param save_discards:                 Whether to save too-short segments as special lines or to discard them
        :param method:                        :ref:`DU_SPLITLINE` ONLY DU_SPLITLINEXY_SEQUENTIAL and DU_SPLITLINEXY_VERSIONS
        :param first_line:                    First line in the sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`. On return, the next line in the sequence.
        :param line_inc:                      Increment in the line number sequence, for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`
        :param retain_line_type:              Maintain line types for `DU_SPLITLINE_SEQUENTIAL <geosoft.gxapi.DU_SPLITLINE_SEQUENTIAL>`  (0: No, 1: Yes)
        :param reset_fi_ds:                   Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:                            GXDB
        :type  line:                          int
        :type  x_ch:                          int
        :type  y_ch:                          int
        :type  angular_change:                float
        :type  over_a_distance_of:            float
        :type  minimum_line_length:           float
        :type  break_on_separation_distance:  float
        :type  save_discards:                 int
        :type  method:                        int
        :type  first_line:                    int_ref
        :type  line_inc:                      int
        :type  retain_line_type:              int
        :type  reset_fi_ds:                   int
        .. versionadded:: 9.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Split a line based on changes in heading.
        """
        
        first_line.value = gxapi_cy.WrapDU._split_line_by_direction2(GXContext._get_tls_geo(), db, line, x_ch, y_ch, angular_change, over_a_distance_of, minimum_line_length, break_on_separation_distance, save_discards, method, first_line.value, line_inc, retain_line_type, reset_fi_ds) 
        
[docs]
    @classmethod
    def stat(cls, db, line, i_ch, st):
        """
        
        Add a data channel to a statistics object.
        
        :param db:    Database
        :param line:  Line handle
        :param i_ch:  Channel handle [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param st:    Statistics handle
        :type  db:    GXDB
        :type  line:  int
        :type  i_ch:  int
        :type  st:    GXST
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** If the input channel is a `GXVA <geosoft.gxapi.GXVA>` (array) channel, then the columns set using
        `GXDB.set_va_windows <geosoft.gxapi.GXDB.set_va_windows>` are used in the statistics; all columns are used by default.
        .. seealso::
            `GXST <geosoft.gxapi.GXST>`
        """
        
        gxapi_cy.WrapDU._stat(GXContext._get_tls_geo(), db, line, i_ch, st) 
        
[docs]
    @classmethod
    def table_line_fid(cls, db, chan, ref, tb, field):
        """
        
        Place a Line/Fid information into a Channel.
        
        :param db:     Database
        :param chan:   Output channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param ref:    Reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param tb:     Table to Use
        :param field:  Table field wanted
        :type  db:     GXDB
        :type  chan:   int
        :type  ref:    int
        :type  tb:     GXTB
        :type  field:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._table_line_fid(GXContext._get_tls_geo(), db, chan, ref, tb, field) 
        
[docs]
    @classmethod
    def table_selected_lines_fid(cls, db, chan, ref, tb, field):
        """
        
        Place a Line/Fid information into a Channel for the selected lines in the database.
        
        :param db:     Database
        :param chan:   Output channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param ref:    Reference channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param tb:     Table to Use
        :param field:  Table field wanted
        :type  db:     GXDB
        :type  chan:   int
        :type  ref:    int
        :type  tb:     GXTB
        :type  field:  int
        .. versionadded:: 9.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._table_selected_lines_fid(GXContext._get_tls_geo(), db, chan, ref, tb, field) 
        
[docs]
    @classmethod
    def time_constant(cls, db, line, resp_chan, time_chan, tau_chan, intercept_chan, fit_chan, log_opt):
        """
        
        Calculate TEM time constant (Tau)
        
        :param db:              Database, required
        :param line:            Line Handle, required
        :param resp_chan:       Response channel, required [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param time_chan:       Time channel, required [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param tau_chan:        Output Time constant (Tau) channel, required [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param intercept_chan:  Output Intercept channel, no output if `NULLSYMB <geosoft.gxapi.NULLSYMB>` [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param fit_chan:        Output predicted response channel, no output if `NULLSYMB <geosoft.gxapi.NULLSYMB>` [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`] Result is based on least square fit from Tau and Intercept
        :param log_opt:         Log option applied to time channel: 0 - linear, 1 - log10
        :type  db:              GXDB
        :type  line:            int
        :type  resp_chan:       int
        :type  time_chan:       int
        :type  tau_chan:        int
        :type  intercept_chan:  int
        :type  fit_chan:        int
        :type  log_opt:         int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** When DU_TIME_LOG option is used, Time channel will be converted
        with logarithmic before calculating time constant.
        Logarthmic conversion is always applied to the response channel.
        """
        
        gxapi_cy.WrapDU._time_constant(GXContext._get_tls_geo(), db, line, resp_chan, time_chan, tau_chan, intercept_chan, fit_chan, log_opt) 
        
[docs]
    @classmethod
    def trend(cls, db, line, i_ch, o_ch, order):
        """
        
        Calculates an n'th order trend of a data channel.
        
        :param db:     Database
        :param line:   Line Handle to Apply this to
        :param i_ch:   Input channel  [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param o_ch:   Result channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param order:  Trend Order, 0 to 9
        :type  db:     GXDB
        :type  line:   int
        :type  i_ch:   int
        :type  o_ch:   int
        :type  order:  int
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        .. seealso::
            `b_spline <geosoft.gxapi.GXDU.b_spline>`
        """
        
        gxapi_cy.WrapDU._trend(GXContext._get_tls_geo(), db, line, i_ch, o_ch, order) 
        
[docs]
    @classmethod
    def update_intersect_db(cls, db, x_chan, z_chan, int_db):
        """
        
        Update the Z and DZ values in an intersection database, using the current database.
        
        :param db:      Flight Database Object
        :param x_chan:  X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`] (for location info)
        :param z_chan:  Z Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param int_db:  Intersection database to update
        :type  db:      GXDB
        :type  x_chan:  int
        :type  z_chan:  int
        :type  int_db:  GXDB
        .. versionadded:: 7.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Updates the TZ, TDZ, LZ and LDZ channels at the intersections,
        using the current flight database.
        """
        
        gxapi_cy.WrapDU._update_intersect_db(GXContext._get_tls_geo(), db, x_chan, z_chan, int_db) 
        
[docs]
    @classmethod
    def voxel_section(cls, db, line, x_ch, y_ch, vox, grid, cell_x, cell_y, interp):
        """
        
        Slice a voxel to a grid under a database line.
        
        :param db:      Database Object
        :param line:    Input  Line Symbol [READWRITE]
        :param x_ch:    X Channel (DB_NO_SYMB if LineDir==0)
        :param y_ch:    Y Channel (DB_NO_SYMB if LineDir==0)
        :param vox:     Voxel to slice
        :param grid:    Output grid name
        :param cell_x:  X cell size (horizontal)
        :param cell_y:  Y cell size (vertical)
        :param interp:  Interp: 1 - linear, 0 - nearest
        :type  db:      GXDB
        :type  line:    int
        :type  x_ch:    int
        :type  y_ch:    int
        :type  vox:     GXVOX
        :type  grid:    str
        :type  cell_x:  float
        :type  cell_y:  float
        :type  interp:  int
        .. versionadded:: 6.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Takes the first and XY locations in a line (using the
        current X and Y channels) and defines a section grid
        as a slice through a voxel file.
        The grid cell sizes can be left as `GS_R8DM <geosoft.gxapi.GS_R8DM>`, in which
        case an attempt will be made to match the voxel cell
        size, based on the line azimuth, voxel rotation, etc.
        If the slice does NOT intersect the voxel, or if
        there are fewer than 2 valid locations in the line,
        then no grid file is created, but there is no error.
        (This is to simplify creating multiple grids from
        at once, where not all may intersect).
        """
        
        gxapi_cy.WrapDU._voxel_section(GXContext._get_tls_geo(), db, line, x_ch, y_ch, vox, grid.encode(), cell_x, cell_y, interp) 
        
[docs]
    @classmethod
    def write_wa(cls, db, line, lst, wa):
        """
        
        Write data to an ASCII file.
        
        :param db:    Database
        :param line:  Line symbol
        :param lst:   List of channel names to write
        :param wa:    `GXWA <geosoft.gxapi.GXWA>` to write to
        :type  db:    GXDB
        :type  line:  int
        :type  lst:   GXLST
        :type  wa:    GXWA
        .. versionadded:: 5.0
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Note:** Channels to be written should be placed in a `GXLST <geosoft.gxapi.GXLST>` object.
        Channels are written in the order of the list.  Only the
        channel names in the list are used.
        Data is formated as in the channel definition and
        channels are separated by a single space character.
        """
        
        gxapi_cy.WrapDU._write_wa(GXContext._get_tls_geo(), db, line, lst, wa) 
        
[docs]
    @classmethod
    def xyz_line(cls, db, line, x_ch, y_ch, dirctn, tolrnc):
        """
        
        Break up a line based on tolerance of lateral distance.
        
        :param db:      Database
        :param line:    Line to be broken up
        :param x_ch:    Channel X
        :param y_ch:    Channel Y
        :param dirctn:  Line direction, 0-any, 1-X, 2-Y.
        :param tolrnc:  Tolerance, DUMMY for the default (10% of the separation between the first two points.
        :type  db:      GXDB
        :type  line:    int
        :type  x_ch:    int
        :type  y_ch:    int
        :type  dirctn:  int
        :type  tolrnc:  float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The original line will be deleted.
        """
        
        gxapi_cy.WrapDU._xyz_line(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dirctn, tolrnc) 
        
[docs]
    @classmethod
    def xyz_line2(cls, db, line, x_ch, y_ch, dirctn, tolrnc, down_tol):
        """
        
        Break up a line based on tolerance of lateral and horizontal distance.
        
        :param db:        Database
        :param line:      Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:      Channel X [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param y_ch:      Channel Y [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param dirctn:    Line direction, 0-any, 1-X, 2-Y.
        :param tolrnc:    Tolerance, DUMMY for the default (10% of the separation between the first two points.
        :param down_tol:  Downline Tolerance, DUMMY for none
        :type  db:        GXDB
        :type  line:      int
        :type  x_ch:      int
        :type  y_ch:      int
        :type  dirctn:    int
        :type  tolrnc:    float
        :type  down_tol:  float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The original line will be deleted.
        """
        
        gxapi_cy.WrapDU._xyz_line2(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dirctn, tolrnc, down_tol) 
        
[docs]
    @classmethod
    def xyz_line3(cls, db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, reset_fi_ds):
        """
        
        Break up a line based on tolerance of lateral and horizontal distance.
        
        :param db:           Database
        :param line:         Line to be broken up [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:         Channel X [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param y_ch:         Channel Y [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param dirctn:       Line direction, 0-any, 1-X, 2-Y.
        :param tolrnc:       Tolerance, DUMMY for the default (10% of the separation between the first two points.
        :param down_tol:     Downline Tolerance, DUMMY for none
        :param reset_fi_ds:  Reset starting fiducials to zero (0: No, 1: Yes)
        :type  db:           GXDB
        :type  line:         int
        :type  x_ch:         int
        :type  y_ch:         int
        :type  dirctn:       int
        :type  tolrnc:       float
        :type  down_tol:     float
        :type  reset_fi_ds:  int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The same as XyzLine2, but with an option to reset each line's starting fiducial to zero.
        """
        
        gxapi_cy.WrapDU._xyz_line3(GXContext._get_tls_geo(), db, line, x_ch, y_ch, dirctn, tolrnc, down_tol, reset_fi_ds) 
        
[docs]
    @classmethod
    def z_mask(cls, db, line, chan, z_chan, zmin, zmax):
        """
        
        Mask dummies in one channel against another(Z) with the range Zmin/Zmax.
        
        :param db:      Database
        :param line:    Line Handle
        :param chan:    Channel to mask [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param z_chan:  Mask Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param zmin:    Min value of mask range
        :param zmax:    Max value of mask range
        :type  db:      GXDB
        :type  line:    int
        :type  chan:    int
        :type  z_chan:  int
        :type  zmin:    float
        :type  zmax:    float
        .. versionadded:: 5.0
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._z_mask(GXContext._get_tls_geo(), db, line, chan, z_chan, zmin, zmax) 
        
[docs]
    @classmethod
    def range_xy(cls, db, x_min, y_min, x_max, y_max):
        """
        
        Find the range of X, and Y in the selected lines.
        
        :param db:     Database
        :param x_min:  Minimum X (returned)
        :param y_min:  Minimum Y (returned)
        :param x_max:  Maximum X (returned)
        :param y_max:  Maximum Y (returned)
        :type  db:     GXDB
        :type  x_min:  float_ref
        :type  y_min:  float_ref
        :type  x_max:  float_ref
        :type  y_max:  float_ref
        .. versionadded:: 8.5
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Returns the range in X and Y of the current X and Y channels.
        Returned values are dummy if no valid items are found.
        """
        
        x_min.value, y_min.value, x_max.value, y_max.value = gxapi_cy.WrapDU._range_xy(GXContext._get_tls_geo(), db, x_min.value, y_min.value, x_max.value, y_max.value) 
        
[docs]
    @classmethod
    def range_xyz(cls, db, x_ch, y_ch, z_ch, x_min, y_min, z_min, x_max, y_max, z_max, n_tot):
        """
        
        Find the range of X, Y and Z in selected lines.
        
        :param db:     Database
        :param x_ch:   X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:   Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_ch:   Z Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_min:  Minimum X (returned)
        :param y_min:  Minimum Y (returned)
        :param z_min:  Minimum Z (returned)
        :param x_max:  Maximum X (returned)
        :param y_max:  Maximum Y (returned)
        :param z_max:  Maximum Z (returned)
        :param n_tot:  Number of data values (returned)
        :type  db:     GXDB
        :type  x_ch:   int
        :type  y_ch:   int
        :type  z_ch:   int
        :type  x_min:  float_ref
        :type  y_min:  float_ref
        :type  z_min:  float_ref
        :type  x_max:  float_ref
        :type  y_max:  float_ref
        :type  z_max:  float_ref
        :type  n_tot:  int_ref
        .. versionadded:: 8.5
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The X, Y and Z channels should be normal (not array) channels.
        Only locations where all values are non-dummy are included in the calculation.
        If no non-dummy values are found, Dummy values are returned.
        """
        
        x_min.value, y_min.value, z_min.value, x_max.value, y_max.value, z_max.value, n_tot.value = gxapi_cy.WrapDU._range_xyz(GXContext._get_tls_geo(), db, x_ch, y_ch, z_ch, x_min.value, y_min.value, z_min.value, x_max.value, y_max.value, z_max.value, n_tot.value) 
        
[docs]
    @classmethod
    def range_xyz_data(cls, db, x_ch, y_ch, z_ch, d_ch, x_min, y_min, z_min, d_min, x_max, y_max, z_max, d_max, n_tot):
        """
        
        Find the range of X, Y, Z and Data values in selected lines.
        
        :param db:     Database
        :param x_ch:   X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:   Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_ch:   Z Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param d_ch:   Data Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_min:  Minimum X (returned)
        :param y_min:  Minimum Y (returned)
        :param z_min:  Minimum Z (returned)
        :param d_min:  Minimum Data value (returned)
        :param x_max:  Maximum X (returned)
        :param y_max:  Maximum Y (returned)
        :param z_max:  Maximum Z (returned)
        :param d_max:  Maximum Data value (returned)
        :param n_tot:  Number of data values (returned)
        :type  db:     GXDB
        :type  x_ch:   int
        :type  y_ch:   int
        :type  z_ch:   int
        :type  d_ch:   int
        :type  x_min:  float_ref
        :type  y_min:  float_ref
        :type  z_min:  float_ref
        :type  d_min:  float_ref
        :type  x_max:  float_ref
        :type  y_max:  float_ref
        :type  z_max:  float_ref
        :type  d_max:  float_ref
        :type  n_tot:  int_ref
        .. versionadded:: 8.1
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The Z and Data channels may be array channels, but both must have
        the same number of columns.
        Only values where all channels are non-dummy (or, for `GXVA <geosoft.gxapi.GXVA>` channels,
        where the Z or Data value are defined) are included in the calculation.
        If no non-dummy values are found, Dummy values are returned.
        This function is optimized for cases where Z and Data are array channels
        with many columns (e.g. 32 or more columns).
        """
        
        x_min.value, y_min.value, z_min.value, d_min.value, x_max.value, y_max.value, z_max.value, d_max.value, n_tot.value = gxapi_cy.WrapDU._range_xyz_data(GXContext._get_tls_geo(), db, x_ch, y_ch, z_ch, d_ch, x_min.value, y_min.value, z_min.value, d_min.value, x_max.value, y_max.value, z_max.value, d_max.value, n_tot.value) 
        
[docs]
    @classmethod
    def create_drillhole_parameter_weight_constraint_database(cls, db, ch, reg, database):
        """
        
        Used for weighting inversion models.
        
        :param db:        Database (selected lines used)
        :param ch:        Property channel handle [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param reg:       Parameters (see notes)
        :param database:  Output database
        :type  db:        GXDB
        :type  ch:        int
        :type  reg:       GXREG
        :type  database:  str
        .. versionadded:: 8.2
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Control parameters are passed in the `GXREG <geosoft.gxapi.GXREG>` (to allow for future expansion without
        the need to modify the wrappers).
        The input drillhole database must contain current X, Y and Z channels.
        Drillhole data should be equally spaced (or nearly so) down the hole.
        Weights are calculated on a circle perpendicular to the hole at each point.
        RADIUS - Maximum radius from drillhole to create weighting points (Default = 100).
        INCRMENENT - Grid cell size in weighting circle (Default = 10).
        MINIMUM - the minimum weighting value to apply, at the radius (Default = 0.0001).
        POWER - Exponential power to use in the weighting function (negative of this is used) (Default = 2).
        """
        
        gxapi_cy.WrapDU._create_drillhole_parameter_weight_constraint_database(GXContext._get_tls_geo(), db, ch, reg, database.encode()) 
        
[docs]
    @classmethod
    def calculate_draped_survey_altitude(cls, db, line, x_ch, y_ch, img, z_ch, ascent, descent, drape_height, n_hanning, hanning_width, min_curvature):
        """
        
        Calculate a draped flight path, enforcing maximum descent and ascent rates.
        
        :param db:             Database
        :param line:           Line [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:           X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:           Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param img:            Topography grid
        :param z_ch:           Output draped altitude channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param ascent:         Maximum rate of ascent (%)
        :param descent:        Maximum rate of descent (%)
        :param drape_height:   Minimum terrain clearance (drape height)
        :param n_hanning:      Number of times to apply Hanning Filter
        :param hanning_width:  Width of Hanning Filter
        :param min_curvature:  Minimum radius of curvature down slopes and at valley bottoms (`rDUMMY <geosoft.gxapi.rDUMMY>` to disable)
        :type  db:             GXDB
        :type  line:           int
        :type  x_ch:           int
        :type  y_ch:           int
        :type  img:            GXIMG
        :type  z_ch:           int
        :type  ascent:         float
        :type  descent:        float
        :type  drape_height:   float
        :type  n_hanning:      int
        :type  hanning_width:  float
        :type  min_curvature:  float
        .. versionadded:: 8.3
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Calculate a draped flight path, enforcing maximum descent and ascent rates. Additional Inputs are the sample distance along the line
        and a topography grid.
        """
        
        gxapi_cy.WrapDU._calculate_draped_survey_altitude(GXContext._get_tls_geo(), db, line, x_ch, y_ch, img, z_ch, ascent, descent, drape_height, n_hanning, hanning_width, min_curvature) 
        
[docs]
    @classmethod
    def calculate_draped_survey_altitude2(cls, db, line, x_ch, y_ch, img, dem_ch, z_ch, ascent, descent, drape_height, min_drape_height, n_hanning, hanning_width, min_curvature):
        """
        
        Calculate a draped flight path, enforcing maximum descent and ascent rates.
        
        :param db:                Database
        :param line:              Line [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param x_ch:              X Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_ch:              Y Channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param img:               Topography grid
        :param dem_ch:            Output DEM channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`] (can be `NULLSYMB <geosoft.gxapi.NULLSYMB>` if not required)
        :param z_ch:              Output draped altitude channel [`DB_LOCK_READWRITE <geosoft.gxapi.DB_LOCK_READWRITE>`]
        :param ascent:            Maximum rate of ascent (%)
        :param descent:           Maximum rate of descent (%)
        :param drape_height:      Nominal terrain clearance (drape height)
        :param min_drape_height:  Minimum terrain clearance (hard minimum drape height)
        :param n_hanning:         Number of times to apply Hanning Filter
        :param hanning_width:     Width of Hanning Filter
        :param min_curvature:     Minimum radius of curvature down slopes and at valley bottoms (`rDUMMY <geosoft.gxapi.rDUMMY>` to disable)
        :type  db:                GXDB
        :type  line:              int
        :type  x_ch:              int
        :type  y_ch:              int
        :type  img:               GXIMG
        :type  dem_ch:            int
        :type  z_ch:              int
        :type  ascent:            float
        :type  descent:           float
        :type  drape_height:      float
        :type  min_drape_height:  float
        :type  n_hanning:         int
        :type  hanning_width:     float
        :type  min_curvature:     float
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** Calculate a draped flight path, enforcing maximum descent and ascent rates.
        Set both a nominal and minimum drape height.
        Additional Inputs are the sample distance along the line
        and a topography grid.
        """
        
        gxapi_cy.WrapDU._calculate_draped_survey_altitude2(GXContext._get_tls_geo(), db, line, x_ch, y_ch, img, dem_ch, z_ch, ascent, descent, drape_height, min_drape_height, n_hanning, hanning_width, min_curvature) 
        
[docs]
    @classmethod
    def direct_grid_data_to_voxel(cls, db, x_channel, y_channel, z_channel, data_channel, output_voxel_filename, origin_x, origin_y, origin_z, cell_count_x, cell_count_y, cell_count_z, cell_size_x, cell_size_y, cell_size_z, method):
        """
        
        Create a voxel using direct gridding.
        
        :param db:                     Database
        :param x_channel:              X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_channel:              Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_channel:              Z channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param data_channel:           Data channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param output_voxel_filename:  Output voxel filename
        :param origin_x:               Voxel origin X
        :param origin_y:               Voxel origin Y
        :param origin_z:               Voxel origin Z
        :param cell_count_x:           Voxel cell count X
        :param cell_count_y:           Voxel cell count Y
        :param cell_count_z:           Voxel cell count Z
        :param cell_size_x:            Voxel cell size X
        :param cell_size_y:            Voxel cell size Y
        :param cell_size_z:            Voxel cell size Z
        :param method:                 :ref:`DU_DIRECTGRID_METHOD`
        :type  db:                     GXDB
        :type  x_channel:              int
        :type  y_channel:              int
        :type  z_channel:              int
        :type  data_channel:           int
        :type  output_voxel_filename:  str
        :type  origin_x:               float
        :type  origin_y:               float
        :type  origin_z:               float
        :type  cell_count_x:           int
        :type  cell_count_y:           int
        :type  cell_count_z:           int
        :type  cell_size_x:            float
        :type  cell_size_y:            float
        :type  cell_size_z:            float
        :type  method:                 int
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The Z and Data channels may be array channels. If they are, the array sizes must match.
        """
        
        gxapi_cy.WrapDU._direct_grid_data_to_voxel(GXContext._get_tls_geo(), db, x_channel, y_channel, z_channel, data_channel, output_voxel_filename.encode(), origin_x, origin_y, origin_z, cell_count_x, cell_count_y, cell_count_z, cell_size_x, cell_size_y, cell_size_z, method) 
        
[docs]
    @classmethod
    def direct_grid_item_counts_to_voxel(cls, db, x_channel, y_channel, z_channel, data_channel, output_voxel_filename, origin_x, origin_y, origin_z, cell_count_x, cell_count_y, cell_count_z, cell_size_x, cell_size_y, cell_size_z, pb_replace_zeroes_with_dummy):
        """
        
        Create a voxel using direct gridding containing the number of data points in each cell.
        
        :param db:                            Database
        :param x_channel:                     X channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param y_channel:                     Y channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param z_channel:                     Z channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param data_channel:                  Data channel [`DB_LOCK_READONLY <geosoft.gxapi.DB_LOCK_READONLY>`]
        :param output_voxel_filename:         Output voxel filename
        :param origin_x:                      Voxel origin X
        :param origin_y:                      Voxel origin Y
        :param origin_z:                      Voxel origin Z
        :param cell_count_x:                  Voxel cell count X
        :param cell_count_y:                  Voxel cell count Y
        :param cell_count_z:                  Voxel cell count Z
        :param cell_size_x:                   Voxel cell size X
        :param cell_size_y:                   Voxel cell size Y
        :param cell_size_z:                   Voxel cell size Z
        :param pb_replace_zeroes_with_dummy:  Replace zero values in output with DUMMY?
        :type  db:                            GXDB
        :type  x_channel:                     int
        :type  y_channel:                     int
        :type  z_channel:                     int
        :type  data_channel:                  int
        :type  output_voxel_filename:         str
        :type  origin_x:                      float
        :type  origin_y:                      float
        :type  origin_z:                      float
        :type  cell_count_x:                  int
        :type  cell_count_y:                  int
        :type  cell_count_z:                  int
        :type  cell_size_x:                   float
        :type  cell_size_y:                   float
        :type  cell_size_z:                   float
        :type  pb_replace_zeroes_with_dummy:  bool
        .. versionadded:: 8.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        **Note:** The Z and Data channels may be array channels. If they are, the array sizes must match.
        """
        
        gxapi_cy.WrapDU._direct_grid_item_counts_to_voxel(GXContext._get_tls_geo(), db, x_channel, y_channel, z_channel, data_channel, output_voxel_filename.encode(), origin_x, origin_y, origin_z, cell_count_x, cell_count_y, cell_count_z, cell_size_x, cell_size_y, cell_size_z, pb_replace_zeroes_with_dummy) 
        
# EM Tau Calculation
[docs]
    @classmethod
    def em_tau_automatic(cls, hVVobs, hVVtime, hVVnoise, lWindow, dTau0, dA0, dItrTol, lItrMax, plItr, pdTau, pdA, pdMisfit, iError, hVVcalcVV):
        """
        
        Automatic fitting EM Tau
        
        :param hVVobs:     Observed EM				[READONLY]
        :param hVVtime:    Time						[READONLY]
        :param hVVnoise:   Noise						[READONLY]
        :param lWindow:    Time window				[READONLY]
        :param dTau0:      Starting Tau			[READONLY]
        :param dA0:        Starting coeff. A		[READONLY]
        :param dItrTol:    Iterarion tolerance	[READONLY]
        :param lItrMax:    Maximum iteration		[READONLY]
        :param plItr:      Number of iterations
        :param pdTau:      Calculated Tau
        :param pdA:        Calculated coeff. A
        :param pdMisfit:   Calculated misfit
        :param iError:     Error message code 0 (No error), 1 (Insufficient points above noise threshold) 2 (No convergence in 30 svdcmp iterations)
        :param hVVcalcVV:  Calculated EM
        :type  hVVobs:     GXVV
        :type  hVVtime:    GXVV
        :type  hVVnoise:   GXVV
        :type  lWindow:    int
        :type  dTau0:      float
        :type  dA0:        float
        :type  dItrTol:    float
        :type  lItrMax:    int
        :type  plItr:      int_ref
        :type  pdTau:      float_ref
        :type  pdA:        float_ref
        :type  pdMisfit:   float_ref
        :type  iError:     int_ref
        :type  hVVcalcVV:  GXVV
        :returns:          0 - OK
                           1 - if error
        :rtype:            int
        .. versionadded:: 9.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        ret_val, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value = gxapi_cy.WrapDU._em_tau_automatic(GXContext._get_tls_geo(), hVVobs, hVVtime, hVVnoise, lWindow, dTau0, dA0, dItrTol, lItrMax, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value, hVVcalcVV)
        return ret_val 
[docs]
    @classmethod
    def em_tau_calc(cls, hVVobs, hVVtime, dTau0, dA0, dItrTol, lItrMax, plItr, pdTau, pdA, pdMisfit, iError, hVVcalcVV):
        """
        
        Fitting  f(t) = A * e^(-t/Tau) = e^s0 * e^(-s1*t), where s0=lnA, s1=1/Tau
        
        :param hVVobs:     Observed EM				[READONLY]
        :param hVVtime:    Time						[READONLY]
        :param dTau0:      Starting Tau			[READONLY]
        :param dA0:        Starting coeff. A		[READONLY]
        :param dItrTol:    Iterarion tolerance	[READONLY]
        :param lItrMax:    Maximum iteration		[READONLY]
        :param plItr:      Number of iterations
        :param pdTau:      Calculated Tau
        :param pdA:        Calculated coeff. A
        :param pdMisfit:   Calculated misfit
        :param iError:     Error message code 0 (No error), 1 (Insufficient points above noise threshold) 2 (No convergence in 30 svdcmp iterations)
        :param hVVcalcVV:  Calculated EM
        :type  hVVobs:     GXVV
        :type  hVVtime:    GXVV
        :type  dTau0:      float
        :type  dA0:        float
        :type  dItrTol:    float
        :type  lItrMax:    int
        :type  plItr:      int_ref
        :type  pdTau:      float_ref
        :type  pdA:        float_ref
        :type  pdMisfit:   float_ref
        :type  iError:     int_ref
        :type  hVVcalcVV:  GXVV
        :returns:          0 - OK
                           1 - if error
        :rtype:            int
        .. versionadded:: 9.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        ret_val, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value = gxapi_cy.WrapDU._em_tau_calc(GXContext._get_tls_geo(), hVVobs, hVVtime, dTau0, dA0, dItrTol, lItrMax, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value, hVVcalcVV)
        return ret_val 
[docs]
    @classmethod
    def em_tau_late_time(cls, hVVobs, hVVtime, hVVnoise, lWindow, TauProcess, dMaxTau, dTau0, dA0, dItrTol, lItrMax, plItr, pdTau, pdA, pdMisfit, iError, hVVcalcVV):
        """
        
        Automatic fitting EM Tau
        
        :param hVVobs:      Observed EM				[READONLY]
        :param hVVtime:     Time						[READONLY]
        :param hVVnoise:    Noise						[READONLY]
        :param lWindow:     Time window				[READONLY]
        :param TauProcess:  1-TauProcess: 2-MoveWindow		[READONLY]
        :param dMaxTau:     Max Tau					[READONLY]
        :param dTau0:       Starting Tau				[READONLY]
        :param dA0:         Starting coeff. A		[READONLY]
        :param dItrTol:     Iterarion tolerance	[READONLY]
        :param lItrMax:     Maximum iteration		[READONLY]
        :param plItr:       Number of iterations
        :param pdTau:       Calculated Tau
        :param pdA:         Calculated coeff. A
        :param pdMisfit:    Calculated misfit
        :param iError:      Error message code 0 (No error), 1 (Insufficient points above noise threshold) 2 (No convergence in 30 svdcmp iterations)
        :param hVVcalcVV:   Calculated EM
        :type  hVVobs:      GXVV
        :type  hVVtime:     GXVV
        :type  hVVnoise:    GXVV
        :type  lWindow:     int
        :type  TauProcess:  int
        :type  dMaxTau:     float
        :type  dTau0:       float
        :type  dA0:         float
        :type  dItrTol:     float
        :type  lItrMax:     int
        :type  plItr:       int_ref
        :type  pdTau:       float_ref
        :type  pdA:         float_ref
        :type  pdMisfit:    float_ref
        :type  iError:      int_ref
        :type  hVVcalcVV:   GXVV
        :returns:           0 - OK
                            1 - if error
        :rtype:             int
        .. versionadded:: 9.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        ret_val, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value = gxapi_cy.WrapDU._em_tau_late_time(GXContext._get_tls_geo(), hVVobs, hVVtime, hVVnoise, lWindow, TauProcess, dMaxTau, dTau0, dA0, dItrTol, lItrMax, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value, hVVcalcVV)
        return ret_val 
[docs]
    @classmethod
    def em_tau_manual(cls, hVVobs, hVVtime, hVVnoise, dMinTime, dMaxTime, dTau0, dA0, dItrTol, lItrMax, plItr, pdTau, pdA, pdMisfit, iError, hVVcalcVV):
        """
        
        Automatic fitting EM Tau
        
        :param hVVobs:     Observed EM				[READONLY]
        :param hVVtime:    Time						[READONLY]
        :param hVVnoise:   Noise						[READONLY]
        :param dMinTime:   Minimum time				[READONLY]
        :param dMaxTime:   Maximum time				[READONLY]
        :param dTau0:      Starting Tau				[READONLY]
        :param dA0:        Starting coeff. A		[READONLY]
        :param dItrTol:    Iterarion tolerance	[READONLY]
        :param lItrMax:    Maximum iteration		[READONLY]
        :param plItr:      Number of iterations
        :param pdTau:      Calculated Tau
        :param pdA:        Calculated coeff. A
        :param pdMisfit:   Calculated misfit
        :param iError:     Error message code 0 (No error), 1 (Insufficient points above noise threshold) 2 (No convergence in 30 svdcmp iterations)
        :param hVVcalcVV:  Calculated EM
        :type  hVVobs:     GXVV
        :type  hVVtime:    GXVV
        :type  hVVnoise:   GXVV
        :type  dMinTime:   float
        :type  dMaxTime:   float
        :type  dTau0:      float
        :type  dA0:        float
        :type  dItrTol:    float
        :type  lItrMax:    int
        :type  plItr:      int_ref
        :type  pdTau:      float_ref
        :type  pdA:        float_ref
        :type  pdMisfit:   float_ref
        :type  iError:     int_ref
        :type  hVVcalcVV:  GXVV
        :returns:          0 - OK
                           1 - if error
        :rtype:            int
        .. versionadded:: 9.4
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        ret_val, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value = gxapi_cy.WrapDU._em_tau_manual(GXContext._get_tls_geo(), hVVobs, hVVtime, hVVnoise, dMinTime, dMaxTime, dTau0, dA0, dItrTol, lItrMax, plItr.value, pdTau.value, pdA.value, pdMisfit.value, iError.value, hVVcalcVV)
        return ret_val 
[docs]
    @classmethod
    def em_tau_trend_window(cls, hVVobs, hVVtime, nWindows, hVVtau, hVVfitError):
        """
        
        Automatic fitting EM Tau
        
        :param hVVobs:       Observed EM				[READONLY]
        :param hVVtime:      Time						[READONLY]
        :param nWindows:     Get linear trends of nWindows consecutive points				[READONLY]
        :param hVVtau:       Calculated tau values - same number of items as hVVobs
        :param hVVfitError:  rms error of fit
        :type  hVVobs:       GXVV
        :type  hVVtime:      GXVV
        :type  nWindows:     int
        :type  hVVtau:       GXVV
        :type  hVVfitError:  GXVV
        .. versionadded:: 9.5
        **License:** `Geosoft End-User License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-end-user-lic>`_
        """
        
        gxapi_cy.WrapDU._em_tau_trend_window(GXContext._get_tls_geo(), hVVobs, hVVtime, nWindows, hVVtau, hVVfitError) 
        
        
 
        
### endblock ClassImplementation
### block ClassExtend
# NOTICE: The code generator will not replace the code in this block
### endblock ClassExtend
### block Footer
# NOTICE: The code generator will not replace the code in this block
### endblock Footer