- globalmapper.SpatialSymmetricDifference(GM_LayerHandle_t32 aLayer1, GM_LayerHandle_t32 aLayer2, GM_SpatialOps_Params_t aParams) GM_Error_t32
-
The Symmetrical Difference operation creates a new layer consisting of areas of the non-overlapping regions in the first and second input layers; overlapping regions are removed. In other words, it finds all regions exclusively in one layer OR the other, but not in both. Attributes for features in the new layer are copied from their original feature, from either the first or second input layer.
- Parameters:
-
aLayer1 (GM_LayerHandle_t32) – First layer in operation
aLayer2 (GM_LayerHandle_t32) – Second layer in operation
aParams (GM_SpatialOps_Params_t) – Parameters
- Returns:
-
Error Code
- Return type:
-
GM_Error_t32
BEFORE |
AFTER |
|---|---|
|
|
|
Example
The following is an example of SpatialSymmetricDifference.
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_LoadLayerList1, array_pointer, array_size_param = gm.LoadLayerList(
os.path.join(import_dir, "LeftBlueCircle.shp"),
gm.GM_LoadFlags_HideAllPrompts,
)
err_LoadLayerList2, array_pointer, array_size_param = gm.LoadLayerList(
os.path.join(import_dir, "RightRedCircle.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 = "SymmetricDifference_Result"
err_SpatialSymmetricDifference = gm.SpatialSymmetricDifference(
layers_list[0], layers_list[1], spatial_params
)
### END SAMPLE
assert (
gm.GM_Error_None == err_LoadLayerList1
), f"LoadLayerList1: Expected {gm.GM_Error_None}, got {err_LoadLayerList1}"
assert (
gm.GM_Error_None == err_LoadLayerList2
), f"LoadLayerList2: Expected {gm.GM_Error_None}, got {err_LoadLayerList2}"
assert (
gm.GM_Error_None == err_SpatialSymmetricDifference
), f"SpatialSymmetricDifference: Expected {gm.GM_Error_None}, got {err_SpatialSymmetricDifference}"
assert os.path.isdir(import_dir), f"Import directory doesn't exist: {import_dir}"
assert os.path.exists(
os.path.join(import_dir, "LeftBlueCircle.shp")
), "Sample data doesn't exist"
assert os.path.exists(
os.path.join(import_dir, "RightRedCircle.shp")
), "Sample data doesn't exist"