Calculate Attributes¶
Calculates a new or overwrites an existing attribute.
Parameter¶
Name | Type | Description |
---|---|---|
attribute | STRING | view_name.attribute_name |
attributeType | STRING | INT, DOUBLE, STRING, DOUBLEVECTOR |
variables | STRING_MAP | variable name; view_name.attribute_name or view_name.linked_view_name.attribute_name to resolve the links view_name.linked_view_name_id needs to exist |
equation | STRING | equation to solve e.g. variable_a + 5 attributes used in equation need to be defined as variables |
Data-stream¶
View | Attribute | Type | Access | Description |
---|---|---|---|---|
attribute view | COMPONENT | read | ||
attribute | any | write | ||
variable view | COMPONENT | read | ||
attribute_name | any | read | ||
linked_view_id | INT | read | (if linked attribute) | |
linked view | COMPONENT | read | ||
attribute_name | any | read |
Detailed Description¶
The module integrates the muparser library, a parser for mathematical equations and can access variables of linked components.
Common use cases¶
Assign a constant
attribute: building.construction_year
attributeType: INT
variables:
(empty)
equation: 1990
Assign a constant from global object
attribute: building.construction_year
attributeType: INT
variables:
y : city.year
equation: y
Note
When non - linked variables are defined the attribute of the first found feature is returned. Therefore only use in combination where it is guaranteed that only one feature exists within a view. (e.g. city or world)
Assign only to a subset
attribute: building.construction_year
attributeType: INT
variables:
y : city.year
c : building.construction_year # Variables might have the be initialed before they can be overwritten. This can be done by assigning a constant
equation: y == 0 ? y : c # If year is not defined (0) the year is set to city.year, otherwise building.construction_year is assigned
Note
For this use case setting a module filter is much more efficient. Use the Assign constant example and set the module attribute filter to building: construction_year is null
Calculate Number of people in a city district
attribute: district.population
attributeType: INT
variables:
pop : district.parcel.building.household.persons
equation: pop # Assigns the number of people living in a district. The data is derived from the linked feature.
Note
Links are resolved through a recursion and the sum of all the connected attributes is returned.
Increase increment in loop
attribute: city.year
attributeType: INT
variables:
y : city.year # Variables might have the be initialed before they can be overwritten. This can be done by assigning a constant
equation: y + 1
Further to the expression provided by the muparser library following expressions are supported:
Expressions¶
Name | Description |
---|---|
rand(value) | returns random number in range ]0-value] |
round(value) | rounds value to nearest int value |
counter | current counter when used in loops |
int(value) | convert float to int |
num2str(value) | number to string |
str2num(value) | string to number |
vecsum(array) | sum of a vector |
vectimes(array,array) | multiply vectors element by element |
? then : else | if clause e.g. a > 5 ? variable_a : variable_b see for the operators see |
{1,2,3} | creates a vector. Note that this can only be used stand alone and not in combination any other expression |
‘string a’ // ‘string b’ | combine strings |
Module Name¶
GDALAttributeCalculator