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.


Available operations when combining terrain layers

GM_CombineOp_Add = 0


GM_CombineOp_SubtractSigned = 1

Subtraction (Difference) - Signed

GM_CombineOp_SubtractUnsigned = 2

Subtraction (Difference) - Unsigned

GM_CombineOp_Average = 3

Average Elevation

GM_CombineOp_Minimum = 4

Minimum Elevation

GM_CombineOp_Maximum = 5

Maximum Elevation

GM_CombineOp_Multiply = 6

Multiply the values from the layers together

GM_CombineOp_Divide = 7

Divide the First Layer Value by the Second

GM_CombineOp_FilterKeepFirstIfSecond = 8

Filter - Keep First Layer Value only if Second Layer Value Valid

GM_CombineOp_KeepFirstIfGTSecond = 9

Filter - Keep First Layer Value only if Greater Than Second Layer Value

GM_CombineOp_KeepFirstIfLTSecond = 10

Filter - Keep First Layer Value only if Less Than Second Layer Value

GM_CombineOp_KeepFirstIfSecondGTVal = 11

Filter - Keep First Layer Value only if Second Layer Value > Some Value

GM_CombineOp_KeepFirstIfSecondLTVal = 12

Filter - Keep First Layer Value only if Second Layer Value > Some Value

GM_CombineOp_FilterKeepFirstIfNotSecond = 13

Filter - Keep First Layer Value only if Second Layer Value Invalid

GM_CombineOp_CountValid = 14

Count Valid Samples at Each Location

GM_CombineOp_NumTypes = 15


Flags used in the setup structure needed for a grid layer combine operation

GM_CombineOp_FillGaps = 0x00000001

Fill small gaps in terrain layers

GM_CombineOp_HideProgress = 0x00000002

Hide progress for the operation

GM_CombineOp_FindOverlap = 0x00000004

When counting layers, only count where all layers overlap (1 for valid from all, 0 otherwise)


Flags for density grid generation

GM_DensityFlags_DisableProgress = 0x00000001

Don’t display a progress dialog


Different type of calculation kernels to use for density generation

GM_KernelType_Gaussian = 0


GM_KernelType_Circle = 1


GM_KernelType_Epanechnikov = 2


GM_NumKernelTypes = 3


Flags for the equal-value area operation

GM_EqualValueArea_ForceRGB = 0x00000001

Use RGB attribute for color attributes even if in palette

GM_EqualValueArea_Coverage = 0x00000002

Just create a coverage layer, so we only care about valid or not

GM_EqualValueArea_FixInvalid = 0x00000004

Automatically chop up any resulting areas that are invalid

GM_EqualValueArea_BluntCorners = 0x00000008

Force the blunting of right angles to avoid invalid areas

GM_EqualValueArea_NoSlope = 0x00000010

Don’t do equal value of slope even if slope shader is used

GM_EqualValueArea_UseElevRange = 0x00000020

The mElevRangeLow/mElevRangeHigh values in GM_EqualValueAreaSetup_t are valid

GM_EqualValueArea_UseSlopeDir = 0x00000040

Use slope direction values


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

GM_GridAlg_TIN = 0

Triangulate 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 = 2

Bin 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 = 4

Bin the points. Use median value (i.e. elevation) in each bin.

GM_GridAlg_BinVariance = 5

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

GM_GridAlg_BinFromMaxElev = 6

Bin Lidar points, use attribute value from point with maximum elevation

GM_GridAlg_BinFromMinElev = 7

Bin Lidar points, use attribute value from point with minimum elevation

GM_GridAlg_NumTypes = 8

GM_GridAlg_None = 0xFF

Create a point cloud (don’t grid)

GM_GridAlg_Default = GM_GridAlg_TIN

GM_GridAlg_DefaultLidar = GM_GridAlg_BinMinimum

Default algorithm for only Lidar points


Gridding gap fill algorithm - specify what gridding algorithm to use when filling gaps

GM_GapFillAlg_None = 0

No Gap fill at all

GM_GapFillAlg_TinSample = 1

Sample TIN surface triangles (piecewise affine) [only available with GM_GridAlg_TIN]

GM_GapFillAlg_IDW = 2

Inverse weighted distance algorithm

GM_GapFillAlg_Kriging = 3


GM_GapFillAlg_NearestNeighbor = 4

Use elevation of nearest valid sample

GM_GapFillAlg_NaturalNeighbor = 5

The 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


This type represents the different flags available for elevation grid generation

GM_GridGen_NoConstraints = 0x00000001

Don’t treat area and line boundaries as constraints (i.e. break lines)

GM_GridGen_FlattenAreas = 0x00000002

Flatten 3D areas

GM_GridGen_FillToBounds = 0x00000004

Fill the grid to the full bounding rectangle of the input data and not just to the convex hull

GM_GridGen_IgnoreZeroElevs = 0x00000008

Don’t use features with an elevation value of 0

GM_GridGen_HeightsRelative = 0x00000010

Vector elevations are relative to underlying terrain data (if loaded)

GM_GridGen_CropToAreasIfAllAreas = 0x00000020

If all features are areas, mark everything outside areas as invalid

GM_GridGen_IncludeStreams = 0x00000040

If stream lines are provided assign them elevations from intersecting lines

GM_GridGen_SelAreasOnly = 0x00000080

Only consider selected areas

GM_GridGen_AreaVertexRelativeOnly = 0x00000100

Only the area vertex height is relative to ground, not inside the area

GM_GridGen_RelativeRequireValid = 0x00000200

If GM_GridGen_HeightsRelative is set, don’t grid points if there is no terrain at the location

GM_GridGen_SaveGroundHeight = 0x00000400

If using Lidar field GM_LidarGrid_Height, grid the DSM (digital surface model) by working backwards from calculated heights above ground

GM_GridGen_CreateLidarImage = 0x00000800

If 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 = 0x00040000

Apply 3D line and 3D area features as breaklines when gridding Lidar data

GM_GridGen_IgnoreTypeFilters = 0x00080000

Ignore any set type filters and grid all 3D features in the provided layer(s)

GM_GridGen_TinAreasOnly = 0x00100000

Only grid 3D area features with TIN geometry (ignore all other features)

GM_GridGen_HideProgress = 0x00200000

Don’t show progress during this operation


(DEPRECATED) List of supported grid layouts for GM_CreateCustomElevGridLayer

GM_GridValType_SInt16 = 0

Each sample is a signed 16-bit integer

GM_GridValType_SInt32 = 1

Each sample is a signed 32-bit integer

GM_GridValType_Float = 2

Each sample is an IEEE 32-bit floating point number

GM_GridValType_NumTypes = 3


Flags to control the behavior of path profile/line of sight analysis

GM_PathProfile_LOSValid = 0x00000001

Perform line-of-sight analysis

GM_PathProfile_LOSIgnoreEndpoints = 0x00000002

Ignore endpoints when performing line-of-sight analysis (i.e. end points can’t block line of sight)

GM_PathProfile_LOSFromHeightAbsolute= = 2

GM_PathProfile_LOSToHeightAbsolute = 0x00000008

Line-of-sight to height is absolute height above sea level rathern than height above ground

GM_PathProfile_IgnoreEarthCurvature = 0x00000010

Ignore earth curvature in any line-of-sight analysis


Flags for roughness grid generation

GM_RoughnessFlags_DisableProgress = 0x00000001

Don’t display a progress dialog

GM_RoughnessFlags_DontFixInvalid = 0x00000002

Don’t automatically chop up invalid areas to make them valid


Types of roughness tables for converting color values representing land cover to roughness values

GM_Roughness_CorineSummer = 0

CORINE Land Cover - Summer

GM_Roughness_CorineWinter = 1

CORINE Land Cover - Winter

GM_Roughness_VCF = 2

Vegetation Continuous Fields (GLCF from MODIS)

GM_Roughness_NLCD = 3

US NLCD (National Land Cover Database)

GM_Roughness_GlobCoverESA2009 = 4

GlobCover ESA 2009 Land Cover Database

GM_Roughness_GlobeLand30 = 5

GlobeLand30 Land Cover Database

GM_Roughness_ESA_CCI = 6

ESA CCI (Climate Change Initiative) Land Cover Database

GM_Roughness_NumTypes = 7


Flags for watershed calculations

GM_Watershed_FillGaps = 0x00000001

Fill small gaps when getting elevation values?

GM_Watershed_CreateAreas = 0x00000002

Should we generate areas coverage the drainage basin for each stream?

GM_Watershed_KeepZeroAtZero = 0x00000004

Keep elevation of zero at zero during depression filling

GM_Watershed_SmoothStreams = 0x00000008

Smooth generated streams?

GM_Watershed_FindRidgeLines = 0x00000010

Find ridge lines rather than streams. This is basically a watershed operation with inverted terrain.