collect_attr_by_cond
relational-functions collect_attr_by_cond
syntax
- collect_attr_by_cond(tree_item, selection domain unit, condition)
definition
collect_attr_by_cond(tree_item, selection domain unit, condition) results in a new container with all subitems from the src_tree_item argument with the same domain unit as the condition argument. The condition is applied to select a set of elements of the original domain, this set is defined by the second argument: selection domain unit. This selection domain unit becomes the domain unit of the collected attributes.
The resulting attributes have the same values units and composition types as the source attributes, expressions are made with the lookup function for each new attribute. This works similar to the collect_attr_by_org_rel function, with as difference that the collect_attr_by_cond does not use an org_rel item.
This is very useful when a select_with_attr_by_cond is used, and a sub-container also needs to be selected.
applies to
- tree_item can by any tree-item, but usually a unit or container
- domain unit a unit with value-type of the group CanbeDomainUnit
- condition must be a boolean attribute or subexpression resulting in boolean values.
since version
8.8.0
example
unit<uint32> City: StorageName = "city.csv", StorageType = "gdal.vect", StoragReadOnly = "True"
{
attribute<string> name
attribute<uint32> RegionCode;
}
unit<uint32> ZHCities := select_with_attr_by_cond(City, City/RegionCode == 200);
container attributes_ZHCities := collect_attr_by_cond(City, ZHCities, City/RegionCode == 200);
City/RegionCode | City/Name |
---|---|
100 | Amsterdam |
200 | Rotterdam |
300 | Utrecht |
200 | Den Haag |
400 | Eindhoven |
null | Haarlem |
400 | Tilburg |
domain City, nr of rows = 7
attributes_ZHCities/name | attributes_ZHCities/regionCode |
---|---|
Rotterdam | 200 |
Den Haag | 200 |
domain ZHCities, nr of rows = 2
The subitems: name and regionCode are generated by the configured collect_attr_by_cond function.