|
|
# Useful FME workbenches
|
|
|
|
|
|
## Add an attribute to CityGML dataset
|
|
|
|
|
|
This example shows how to add an attribute (here: year_of_construction) to an existing CityGML document using FME.
|
|
|
|
|
|
Method 1: Using feature merger and attribute creator
|
|
|
|
|
|
With this method you first add an additional reader to the workbench (here: CSV). Then in the feature merger transformer, you connect port from "CityGML Building" to requestor port and, CSV to supplier port. Inside feature merger mapping on gml_ID is done. The output port "Merged" is then connected to the attribute creator transformer. Within attribute creator, select "citygml_year_of_construction" under new attribute and the CSV field containing year of construction values under attribute value. Connect the output port to the writer port of "CityGML Building" and run the workbench.
|
|
|
|
|
|
An example workbench is available [here](https://transfer.hft-stuttgart.de/gitlab/coors/visualization/-/blob/master/FME_Workbenches/citygml_yoc_method1.zip).
|
|
|
|
|
|
Method 2: Using database joiner and attribute manager
|
|
|
|
|
|
In this method, instead of adding an additional reader database joiner transformer is used to connect datasets based on gml_id or any primary key. Here you connect port from "CityGML Building" to the input port of database joiner transformer. Inside the transformer you select your database (here: CSV), select the CSV table and the map you gml_id from the CityGML file to gml_id from the CSV file. Under "Fields to Add", the field containing year of construction values is selected (here: construction ). Also make sure to set cardinality to either 1:1 or 1:0..1. This will prevent unmatched gml_id from giving you an error and terminating the workbench. Next connect the joined port of database joiner to attribute manager input port. Inside attribute manager, in front of the "citygml_year_of_construction" assign value "construction ". Join the output port to the writer port of "CityGML Building" and run the workbench.
|
|
|
|
|
|
An example workbench is available [here](https://transfer.hft-stuttgart.de/gitlab/coors/visualization/-/blob/master/FME_Workbenches/citygml_yoc_method2.zip).
|
|
|
|
|
|
The difference between using database joiner and CSV as a reader, is that CSV reader with cache all the data from the CSV file on your local machine. This is not good if you are working with a large dataset. With a database joiner, the transformer will read your database on the run and hence will not cache any data on your local machine. This saves time, memory and disk space.
|
|
|
|
|
|
FME workbench is in the repository
|
|
|
|
|
|
## Convert land use shapefile to Cesium
|
|
|
|
|
|
Landuse shapefile to Cesium is a direct conversion without any transformer. Add your landuse shapefile as reader and choose 3D tiles as writer. Connect the port of shapefile reader to 3D tiles writer. In the writer properties make sure to select automatic in the user attribute to get all the attributes from the shapefile. Incase you only want some attributes from shapefile, select manual attributes and add or remove as required.
|
... | ... | |