# Types for Surface Analysis¶

The following types are used in functions related to surface analysis operations as parameters and return values. These types use fixed, numeric constants, which are defined here.

- globalmapper.GM_CombineOp_t8¶
Available operations when combining terrain layers

- Values
**GM_CombineOp_Add**= 0Addition

**GM_CombineOp_SubtractSigned**= 1Subtraction (Difference) - Signed

**GM_CombineOp_SubtractUnsigned**= 2Subtraction (Difference) - Unsigned

**GM_CombineOp_Average**= 3Average Elevation

**GM_CombineOp_Minimum**= 4Minimum Elevation

**GM_CombineOp_Maximum**= 5Maximum Elevation

**GM_CombineOp_Multiply**= 6Multiply the values from the layers together

**GM_CombineOp_Divide**= 7Divide the First Layer Value by the Second

**GM_CombineOp_FilterKeepFirstIfSecond**= 8Filter - Keep First Layer Value only if Second Layer Value Valid

**GM_CombineOp_KeepFirstIfGTSecond**= 9Filter - Keep First Layer Value only if Greater Than Second Layer Value

**GM_CombineOp_KeepFirstIfLTSecond**= 10Filter - Keep First Layer Value only if Less Than Second Layer Value

**GM_CombineOp_KeepFirstIfSecondGTVal**= 11Filter - Keep First Layer Value only if Second Layer Value > Some Value

**GM_CombineOp_KeepFirstIfSecondLTVal**= 12Filter - Keep First Layer Value only if Second Layer Value > Some Value

**GM_CombineOp_FilterKeepFirstIfNotSecond**= 13Filter - Keep First Layer Value only if Second Layer Value Invalid

**GM_CombineOp_CountValid**= 14Count Valid Samples at Each Location

**GM_CombineOp_NumTypes**= 15

- globalmapper.GM_CombineOpFlags_t32¶
Flags used in the setup structure needed for a grid layer combine operation

- Values
**GM_CombineOp_FillGaps**= 0x00000001Fill small gaps in terrain layers

**GM_CombineOp_HideProgress**= 0x00000002Hide progress for the operation

**GM_CombineOp_FindOverlap**= 0x00000004When counting layers, only count where all layers overlap (1 for valid from all, 0 otherwise)

- globalmapper.GM_DensityGridFlags_t32¶
Flags for density grid generation

- Values
**GM_DensityFlags_DisableProgress**= 0x00000001Don’t display a progress dialog

- globalmapper.GM_DensityKernelType_t8¶
Different type of calculation kernels to use for density generation

- Values
**GM_KernelType_Gaussian**= 0Gaussian

**GM_KernelType_Circle**= 1Circle

**GM_KernelType_Epanechnikov**= 2Anechnikov

**GM_NumKernelTypes**= 3

- globalmapper.GM_EqualValueAreaFlags_t32¶
Flags for the equal-value area operation

- Values
**GM_EqualValueArea_ForceRGB**= 0x00000001Use RGB attribute for color attributes even if in palette

**GM_EqualValueArea_Coverage**= 0x00000002Just create a coverage layer, so we only care about valid or not

**GM_EqualValueArea_FixInvalid**= 0x00000004Automatically chop up any resulting areas that are invalid

**GM_EqualValueArea_BluntCorners**= 0x00000008Force the blunting of right angles to avoid invalid areas

**GM_EqualValueArea_NoSlope**= 0x00000010Don’t do equal value of slope even if slope shader is used

**GM_EqualValueArea_UseElevRange**= 0x00000020The mElevRangeLow/mElevRangeHigh values in GM_EqualValueAreaSetup_t are valid

**GM_EqualValueArea_UseSlopeDir**= 0x00000040Use slope direction values

- globalmapper.GM_GridAlg_t8¶
Gridding algorithm - Specify what gridding algorithm to use when gridding 3D vector data and point clouds

- Values
**GM_GridAlg_TIN**= 0Triangulate and grid, same as normal 3D gridding

**GM_GridAlg_BinMinimum**= 1(DTM) Bin the points, use min value (i.e. elevation) in each bin, use a bin size some multiplier of average spacing

**GM_GridAlg_BinAverage**= 2Bin the points, use avg value (i.e. elevation) in each bin, use a bin size some multiplier of average spacing

**GM_GridAlg_BinMaximum**= 3(DSM) Bin the points, use max value (i.e. elevation) in each bin, use a bin size some multiplier of average spacing

**GM_GridAlg_BinMedian**= 4Bin the points. Use median value (i.e. elevation) in each bin.

**GM_GridAlg_BinVariance**= 5Bin the points. use variance of value (i.e. elevation) in each bin.

**GM_GridAlg_BinFromMaxElev**= 6Bin Lidar points, use attribute value from point with maximum elevation

**GM_GridAlg_BinFromMinElev**= 7Bin Lidar points, use attribute value from point with minimum elevation

**GM_GridAlg_NumTypes**= 8**GM_GridAlg_None**= 0xFFCreate a point cloud (don’t grid)

**GM_GridAlg_Default**= GM_GridAlg_TIN**GM_GridAlg_DefaultLidar**= GM_GridAlg_BinMinimumDefault algorithm for only Lidar points

- globalmapper.GM_GridGapFillAlg_t8¶
Gridding gap fill algorithm - specify what gridding algorithm to use when filling gaps

- Values
**GM_GapFillAlg_None**= 0No Gap fill at all

**GM_GapFillAlg_TinSample**= 1Sample TIN surface triangles (piecewise affine) [only available with GM_GridAlg_TIN]

**GM_GapFillAlg_IDW**= 2Inverse weighted distance algorithm

**GM_GapFillAlg_Kriging**= 3Kriging

**GM_GapFillAlg_NearestNeighbor**= 4Use elevation of nearest valid sample

**GM_GapFillAlg_NaturalNeighbor**= 5The neighbor weights are calculated by finding how much of each of the surrounding areas is “stolen” when inserting (x,y) into the Voronoi tessellation

**GM_GapFillAlg_NumTypes**= 6**GM_GapFillAlg_Default**= GM_GapFillAlg_IDW

- globalmapper.GM_GridGenFlags_t32¶
This type represents the different flags available for elevation grid generation

- Values
**GM_GridGen_NoConstraints**= 0x00000001Don’t treat area and line boundaries as constraints (i.e. break lines)

**GM_GridGen_FlattenAreas**= 0x00000002Flatten 3D areas

**GM_GridGen_FillToBounds**= 0x00000004Fill the grid to the full bounding rectangle of the input data and not just to the convex hull

**GM_GridGen_IgnoreZeroElevs**= 0x00000008Don’t use features with an elevation value of 0

**GM_GridGen_HeightsRelative**= 0x00000010Vector elevations are relative to underlying terrain data (if loaded)

**GM_GridGen_CropToAreasIfAllAreas**= 0x00000020If all features are areas, mark everything outside areas as invalid

**GM_GridGen_IncludeStreams**= 0x00000040If stream lines are provided assign them elevations from intersecting lines

**GM_GridGen_SelAreasOnly**= 0x00000080Only consider selected areas

**GM_GridGen_AreaVertexRelativeOnly**= 0x00000100Only the area vertex height is relative to ground, not inside the area

**GM_GridGen_RelativeRequireValid**= 0x00000200If GM_GridGen_HeightsRelative is set, don’t grid points if there is no terrain at the location

**GM_GridGen_SaveGroundHeight**= 0x00000400If using Lidar field GM_LidarGrid_Height, grid the DSM (digital surface model) by working backwards from calculated heights above ground

**GM_GridGen_CreateLidarImage**= 0x00000800If gridding a Lidar field than can potentially be stored as an image or grid (i.e. GM_LidarGrid_Intensity), create an image rather than a grid

**GM_GridGen_ApplyLidarBreaklines**= 0x00040000Apply 3D line and 3D area features as breaklines when gridding Lidar data

**GM_GridGen_IgnoreTypeFilters**= 0x00080000Ignore any set type filters and grid all 3D features in the provided layer(s)

**GM_GridGen_TinAreasOnly**= 0x00100000Only grid 3D area features with TIN geometry (ignore all other features)

**GM_GridGen_HideProgress**= 0x00200000Don’t show progress during this operation

- globalmapper.GM_GridValType_t8¶
**(DEPRECATED)**List of supported grid layouts for GM_CreateCustomElevGridLayer- Values
**GM_GridValType_SInt16**= 0Each sample is a signed 16-bit integer

**GM_GridValType_SInt32**= 1Each sample is a signed 32-bit integer

**GM_GridValType_Float**= 2Each sample is an IEEE 32-bit floating point number

**GM_GridValType_NumTypes**= 3

- globalmapper.GM_PathProfileLOSFlags_t32¶
Flags to control the behavior of path profile/line of sight analysis

- Values
**GM_PathProfile_LOSValid**= 0x00000001Perform line-of-sight analysis

**GM_PathProfile_LOSIgnoreEndpoints**= 0x00000002Ignore endpoints when performing line-of-sight analysis (i.e. end points can’t block line of sight)

**GM_PathProfile_LOSFromHeightAbsolute=**= 2**GM_PathProfile_LOSToHeightAbsolute**= 0x00000008Line-of-sight to height is absolute height above sea level rathern than height above ground

**GM_PathProfile_IgnoreEarthCurvature**= 0x00000010Ignore earth curvature in any line-of-sight analysis

- globalmapper.GM_RoughnessGridFlags_t32¶
Flags for roughness grid generation

- Values
**GM_RoughnessFlags_DisableProgress**= 0x00000001Don’t display a progress dialog

**GM_RoughnessFlags_DontFixInvalid**= 0x00000002Don’t automatically chop up invalid areas to make them valid

- globalmapper.GM_RoughnessTable_t¶
Types of roughness tables for converting color values representing land cover to roughness values

- Values
**GM_Roughness_CorineSummer**= 0CORINE Land Cover - Summer

**GM_Roughness_CorineWinter**= 1CORINE Land Cover - Winter

**GM_Roughness_VCF**= 2Vegetation Continuous Fields (GLCF from MODIS)

**GM_Roughness_NLCD**= 3US NLCD (National Land Cover Database)

**GM_Roughness_GlobCoverESA2009**= 4GlobCover ESA 2009 Land Cover Database

**GM_Roughness_GlobeLand30**= 5GlobeLand30 Land Cover Database

**GM_Roughness_ESA_CCI**= 6ESA CCI (Climate Change Initiative) Land Cover Database

**GM_Roughness_NumTypes**= 7

- globalmapper.GM_WatershedFlags_32¶
Flags for watershed calculations

- Values
**GM_Watershed_FillGaps**= 0x00000001Fill small gaps when getting elevation values?

**GM_Watershed_CreateAreas**= 0x00000002Should we generate areas coverage the drainage basin for each stream?

**GM_Watershed_KeepZeroAtZero**= 0x00000004Keep elevation of zero at zero during depression filling

**GM_Watershed_SmoothStreams**= 0x00000008Smooth generated streams?

**GM_Watershed_FindRidgeLines**= 0x00000010Find ridge lines rather than streams. This is basically a watershed operation with inverted terrain.