box_connectivity - ObjectVision/GeoDMS GitHub Wiki
Geometric functions box_connectivity
- box_connectivity(lower_bound(polygon_data_item), upper_bound(polygon_data_item))
box_connectivity(lower_bound(polygon_data_item), upper_bound(polygon_data_item)) results in a new uint32 domain unit with one entry for each 'connection' in the polygon_data_item argument.
A 'connection' is defined as two polygons having at least one common interior point.
The function results in an F1 and F2 attribute with relations to the domain unit of the polygon_data_item attribute.
The relations indicate which connections exists, each connection only occurs once (a connection between polygon 0 and 1 only occurs as F1: 0 and F2: 1 and not vice versa).
This could be very useful to speed up partitioned unions, where the result of this operator can serve as the approximate partition.
see example
unit<uint32> SomePolygonSet
{
attribute<fpoint> geometry (poly);
unit<uint32> BoxedConnectivity := box_connectivity(Lower_Bound(geometry), Upper_Bound(geometry));
unit<uint32> ConnectParts := connected_parts(BoxedConnectivity/F1, BoxedConnectivity/F2);
}
unit<uint32> SplitUnionedSet := bp_split_union_polygon(SomePolygonSet/geometry[rdc_cm], SomePolygonSet/ConnectParts/Part_rel);
- The composition type type of the polygon_data_item argument needs to be polygon with an ipoint, spoint, fpoint and dpoint value type.
- The order of the points in polygon_data_item needs to be clockwise for exterior bounds and counter clockwise for holes in polygons (right-hand-rule).
15.6.0
unit<uint32> connection := box_connectivity(lower_bound(district/geometry), upper_bound(district/geometry));
- configuration example: Border polygons