- globalmapper.SpatialConcaveHull(GM_LayerHandle_t32 aLayer, GM_SpatialOps_Params_t aParams, float aSmoothing, GM_FeatureGrouping_t8 aGrouping, str aStr) GM_Error_t32
-
The Concave Hull spatial transform creates a new layer with a polygon that encloses a set of points, lines, and/or areas. The polygon will be a tight concave shape that contains the specified features, with the level of tightness defined by the aSmoothing parameter. A concave fit is usually compared to shrink wrapping the data, with a lower aSmoothing value meaning a tighter wrap.
The aGrouping parameter controls how many polygons are created: with GM_GroupingNone, a polygon is created for each individual feature; with GM_GroupingPartition, one polygon will be created for each attribute group; and with GM_GroupingAll, all the features on the layer will be enclosed by one polygon.
For a hull with a looser fit to the features, see SpatialConvexHull.
- Parameters:
-
aLayer (GM_LayerHandle_t32) – Input layer
aParams (GM_SpatialOps_Params_t) – Parameters
aSmoothing (float) – Smoothing value from 1 to 10000
aGrouping (GM_FeatureGrouping_t8) – Grouping type
aStr (str) – The attribute list string; may be an empty string
- Returns:
-
Error Code
- Return type:
-
GM_Error_t32
BEFORE |
AFTER |
|---|---|
|
|
|
Example
The following is an example of SpatialConcaveHull.
import os
import globalmapper as gm
import_dir = "Z:/GM-20069/spatial_operations_sample_data/"
# Close all layers that may be open
layers_are_open = gm.GetLoadedLayerList()
if layers_are_open:
arr_ptr, arr_size = layers_are_open
initial_layers = gm.GM_LayerHandle_array_frompointer(arr_ptr)
for i in range(arr_size):
gm.CloseLayer(initial_layers[i])
err_LoadLayerList, array_pointer, array_size_param = gm.LoadLayerList(
os.path.join(import_dir, "points.shp"),
gm.GM_LoadFlags_HideAllPrompts,
)
# Get handle for the loaded layers
arr_ptr, arr_size = gm.GetLoadedLayerList()
layers_array = gm.GM_LayerHandle_array_frompointer(arr_ptr)
layers_list = gm.carray_to_list(layers_array, arr_size)
### START SAMPLE
spatial_params = gm.GM_SpatialOps_Params_t()
spatial_params.mResultLayerName = "ConcaveHull_Result"
err_SpatialConcaveHull = gm.SpatialConcaveHull(
layers_list[0], spatial_params, 1, gm.GM_GroupingAll, ""
)
### END SAMPLE
assert (
gm.GM_Error_None == err_LoadLayerList
), f"LoadLayerList: Expected {gm.GM_Error_None}, got {err_LoadLayerList}"
assert (
gm.GM_Error_None == err_SpatialConcaveHull
), f"SpatialConcaveHull: Expected {gm.GM_Error_None}, got {err_SpatialConcaveHull}"
assert os.path.isdir(import_dir), f"Import directory doesn't exist: {import_dir}"
assert os.path.exists(
os.path.join(import_dir, "points.shp")
), "Sample data doesn't exist"