Hi Jamal
For example:
(1) Calculate area of the boundary and buildings by two AreaCalculator for each.
(2) Merge the area of boundary to every inside building by a SpatialFilter. You can use the "Attribute Prefix" parameter to resolve conflict of attribute names between Filter feature (boundary) and Candidate features (buildings), if necessary.
(3) Aggregate the buildings (Passed features from the SpatialFileter) by an Aggregator. Here, sum of building areas can be calculated.
- Keep Input Attributes: Yes
- Attributes to Sum:
<select an attribute storing building area>
Assuming that an attribute called "_area" has stored the area of individual building before aggregating, the "_area" will store the sum area of all buildings after aggregating if you set "_area" to the "Attributes to Sum" parameter.
(4) You can then calculate the required percentage using an ExpressionEvaluator or an AttributeCreator.
Takashi
I have applied the transformers below to accomplish the work. Would this be a good workbench?
I guess some warnings on the AttributeCreator_3 would be logged during the translation. Although it may not have bad infuliance to the final calculation result (sum of percentage) in this case, I think it's better to resolve such warning, in general.
If I were you, I would remove the AreaOnAreaOverlayer, and check "Merge Attributes" in the Clipper to merge BoundaryArea to every clipped building.
Thanks Takashi,
I have deleted the “AreaOnAreaOverlayer” and checked the “merge attributes” as you have recommended. The workbench still works fine and produces the expected result.
The only challenge that I have at the moment is how to have the result of the “StatisticsCalculator” in a table stored in the file geodatabase.
Esri File Geodatabase supports non-spatial feature class (data table without geometries).
Supposing you are using FILEGDB writer, try setting "geodb_no_geom" to the "Allowed Geometries" parameter in the writer feature type to create a non-spatial feature class.
In addition, seeing your screenshot, I noticed that the number of output features from the AreaOnAreaOverlayer is greater than inputs. This indicates that some buildings overlap each other.
The resulting percentage could be slightly greater than "(sum of building areas) / (area of the boundary)".
I would recommend you to check if the calculating procedure is fit to your requirement.
Very much appreciated Takashi for the massive efforts and help. It works fine now