diff --git a/README.md b/README.md
index 32da363..3bcdf8a 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Playing the prototype:
- SteamVR
Process the data:
-- FME >= 2019.0
+- FME >= 2019.1
- QGIS >= 3.6
## Playing the prototype
diff --git a/datasource/02_buildings/00_Buildings_Clipper.fmw b/datasource/02_buildings/00_Buildings_Clipper.fmw
new file mode 100644
index 0000000..32090b8
--- /dev/null
+++ b/datasource/02_buildings/00_Buildings_Clipper.fmw
@@ -0,0 +1,1225 @@
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+
+FME_PYTHON_VERSION 37
+GUI IGNORE SourceDataset_SHAPEFILE_1,SHAPEFILE_IN_READER_PARAMETERS_SHAPEFILE_1,SHAPEFILE_IN_ENCODING_SHAPEFILE_1,SHAPEFILE_IN_USE_SEARCH_ENVELOPE_SHAPEFILE_1,SHAPEFILE_IN_SEARCH_ENVELOPE_MINX_SHAPEFILE_1,SHAPEFILE_IN_SEARCH_ENVELOPE_MINY_SHAPEFILE_1,SHAPEFILE_IN_SEARCH_ENVELOPE_MAXX_SHAPEFILE_1,SHAPEFILE_IN_SEARCH_ENVELOPE_MAXY_SHAPEFILE_1,SHAPEFILE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_SHAPEFILE_1,SHAPEFILE_IN_CLIP_TO_ENVELOPE_SHAPEFILE_1,SHAPEFILE_IN_ADVANCED_SHAPEFILE_1,SHAPEFILE_IN_TRIM_PRECEDING_SPACES_SHAPEFILE_1,SHAPEFILE_IN_DONUT_DETECTION_SHAPEFILE_1,SHAPEFILE_IN_MEASURES_AS_Z_SHAPEFILE_1,SHAPEFILE_IN_REPORT_BAD_GEOMETRY_SHAPEFILE_1,SHAPEFILE_IN_NETWORK_AUTHENTICATION_SHAPEFILE_1,DestDataset_ESRISHAPE_1,ESRISHAPE_OUT_WRITER_PARAMETERS_ESRISHAPE_1,ESRISHAPE_OUT_ENCODING_ESRISHAPE_1,ESRISHAPE_OUT_WRITE_SPATIAL_INDEX_ESRISHAPE_1,ESRISHAPE_OUT_COMPRESSED_SHAPE_FILE_ESRISHAPE_1,ESRISHAPE_OUT_ADVANCED_ESRISHAPE_1,ESRISHAPE_OUT_STRICT_COMPATIBILITY_ESRISHAPE_1,ESRISHAPE_OUT_GEOMETRY_ESRISHAPE_1,ESRISHAPE_OUT_PRESERVE_RING_VERTEX_ORDER_ESRISHAPE_1,ESRISHAPE_OUT_MEASURES_AS_Z_ESRISHAPE_1
+DEFAULT_MACRO SourceDataset_SHAPEFILE_3 ..\00_perimeter\secteurs.shp
+GUI MULTIFILE SourceDataset_SHAPEFILE_3 Shapefiles(*.shp)|*.shp|Compressed_Shapefiles(*.shz)|*.shz|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source Esri Shapefile(s):
+DEFAULT_MACRO FEATURE_TYPES_2
+GUI OPTIONAL FEATURE_TYPES FEATURE_TYPES_2 ..00_perimetersecteurs.shp,_FORMAT_OVERRIDE_,SHAPEFILE,_DATASET_OVERRIDE_,SourceDataset_SHAPEFILE_3,ENCODING,fme-source-encoding,USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MINY,0,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_MAXY,0,CLIP_TO_ENVELOPE,NO,TRIM_PRECEDING_SPACES,Yes,DONUT_DETECTION,ORIENTATION,MEASURES_AS_Z,No,REPORT_BAD_GEOMETRY,No,COORDSYS,EPSG:2056,NUMERIC_TYPE_ATTRIBUTE_HANDLING,STANDARD_TYPES,DYNAMIC_WORKFLOW,yes,_MERGE_SCHEMAS,YES,_MERGE_SCHEMAS,YES Feature Types to Read:
+DEFAULT_MACRO DestDataset_ESRISHAPE .
+GUI DIRNAME DestDataset_ESRISHAPE Destination Esri Shapefile Folder:
+INCLUDE [ if {{$(SourceDataset_SHAPEFILE_3)} == {}} { puts_real {Parameter 'SourceDataset_SHAPEFILE_3' must be given a value.}; exit 1; }; ]
+INCLUDE [ if {{$(DestDataset_ESRISHAPE)} == {}} { puts_real {Parameter 'DestDataset_ESRISHAPE' must be given a value.}; exit 1; }; ]
+#! START_HEADER
+#! START_WB_HEADER
+READER_TYPE MULTI_READER
+MULTI_READER_TYPE{0} SHAPEFILE
+MULTI_READER_KEYWORD{0} SHAPEFILE_1
+MULTI_READER_GEN_DIRECTIVES{0} NUMERIC_TYPE_ATTRIBUTE_HANDLING,STANDARD_TYPES,REPORT_BAD_GEOMETRY,No,ADVANCED,,SEARCH_ENVELOPE_MAXX,0,DYNAMIC_WORKFLOW,yes,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINY,0,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,ENCODING,fme-source-encoding,SEARCH_ENVELOPE_MINX,0,TRIM_PRECEDING_SPACES,Yes,DONUT_DETECTION,ORIENTATION,MEASURES_AS_Z,No,_MERGE_SCHEMAS,YES,EXPOSE_ATTRS_GROUP,,USE_SEARCH_ENVELOPE,NO,SHAPEFILE_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MAXY,0
+WRITER_TYPE MULTI_WRITER
+MULTI_WRITER_DATASET_ORDER BY_ID
+MULTI_WRITER_FIRST_WRITER_ID 0
+MULTI_WRITER_TYPE{0} ESRISHAPE
+MULTI_WRITER_KEYWORD{0} ESRISHAPE_1
+#! END_WB_HEADER
+#! START_WB_HEADER
+MACRO WB_KEYWORD "SHAPEFILE_1"
+#! END_WB_HEADER
+#! START_SOURCE_HEADER SHAPEFILE SHAPEFILE_1
+SHAPEFILE_1_DYNAMIC_WORKFLOW YES
+# ============================================================================
+# The following GUI line prompts for the source shapefiles
+# The dataset this mapping file was generated from was:
+#! END_SOURCE_HEADER
+#! START_WB_HEADER
+DEFAULT_MACRO SourceDataset
+INCLUDE [ if {{$(SourceDataset)} != ""} { \
+ puts {DEFAULT_MACRO SourceDataset_SHAPEFILE_1 $(SourceDataset)} \
+ } ]
+#! END_WB_HEADER
+#! START_SOURCE_HEADER SHAPEFILE SHAPEFILE_1
+DEFAULT_MACRO SourceDataset_SHAPEFILE_1 $(SourceDataset_SHAPEFILE_3)
+GUI MULTIFILE SourceDataset_SHAPEFILE_1 Shapefiles(*.shp)|*.shp|Compressed_Shapefiles(*.shz)|*.shz|All_Files(*)|* Source Esri Shapefile(s):
+DEFAULT_MACRO SHAPEFILE_IN_READER_PARAMETERS_SHAPEFILE_1
+GUI OPTIONAL DISCLOSUREGROUP SHAPEFILE_IN_READER_PARAMETERS_SHAPEFILE_1 SHAPEFILE_IN_ENCODING_SHAPEFILE_1%SHAPEFILE_IN_NUMERIC_TYPE_ATTRIBUTE_HANDLING Reader Parameters
+# ============================================================================
+# The following keyword allows the user to choose what encoding to
+# use for reading the shapefile, overrides dbf file LDID or .cpg
+# file if present.
+DEFAULT_MACRO SHAPEFILE_IN_ENCODING_SHAPEFILE_1 fme-source-encoding
+SHAPEFILE_1_ENCODING "$(SHAPEFILE_IN_ENCODING_SHAPEFILE_1)"
+GUI STRING_OR_ENCODING SHAPEFILE_IN_ENCODING_SHAPEFILE_1 fme-source-encoding%* Character Encoding
+# ============================================================================
+# Determines whether numeric attributes should be interpreted as binary or as
+# bound number fields (ActualDBFrepresentation)
+DEFAULT_MACRO SHAPEFILE_IN_NUMERIC_TYPE_ATTRIBUTE_HANDLING_SHAPEFILE_1 STANDARD_TYPES
+SHAPEFILE_1_NUMERIC_TYPE_ATTRIBUTE_HANDLING "$(SHAPEFILE_IN_NUMERIC_TYPE_ATTRIBUTE_HANDLING_SHAPEFILE_1)"
+#Note: Using the search envelope requires the shape index files (.sbnand.sbx)
+DEFAULT_MACRO SHAPEFILE_IN_EXPOSE_ATTRS_GROUP_SHAPEFILE_1
+SHAPEFILE_1_EXPOSE_ATTRS_GROUP "$(SHAPEFILE_IN_EXPOSE_ATTRS_GROUP_SHAPEFILE_1)"
+# Include this file in source setting section to add native search envelope processing
+# Zero as a default means we don't do any search -- this makes workbench happier
+DEFAULT_MACRO SHAPEFILE_IN_USE_SEARCH_ENVELOPE_SHAPEFILE_1 NO
+SHAPEFILE_1_USE_SEARCH_ENVELOPE "$(SHAPEFILE_IN_USE_SEARCH_ENVELOPE_SHAPEFILE_1)"
+GUI ACTIVEDISCLOSUREGROUP SHAPEFILE_IN_USE_SEARCH_ENVELOPE_SHAPEFILE_1 SHAPEFILE_IN_SEARCH_ENVELOPE_MINX_SHAPEFILE_1%SHAPEFILE_IN_SEARCH_ENVELOPE_MINY_SHAPEFILE_1%SHAPEFILE_IN_SEARCH_ENVELOPE_MAXX_SHAPEFILE_1%SHAPEFILE_IN_SEARCH_ENVELOPE_MAXY_SHAPEFILE_1%SHAPEFILE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_SHAPEFILE_1%SHAPEFILE_IN_CLIP_TO_ENVELOPE_SHAPEFILE_1%SHAPEFILE_IN_SEARCH_METHOD%SHAPEFILE_IN_SEARCH_METHOD_FILTER%SHAPEFILE_IN_SEARCH_ORDER%SHAPEFILE_IN_SEARCH_FEATURE%SHAPEFILE_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope
+# ===========================================================================
+GUI LOOKUP SHAPEFILE_IN_SEARCH_ENVELOPE_MINX_SHAPEFILE_1 ,0
+DEFAULT_MACRO SHAPEFILE_IN_SEARCH_ENVELOPE_MINX_SHAPEFILE_1 0
+SHAPEFILE_1_SEARCH_ENVELOPE "$(SHAPEFILE_IN_SEARCH_ENVELOPE_MINX_SHAPEFILE_1)"
+GUI OPTIONAL FLOAT SHAPEFILE_IN_SEARCH_ENVELOPE_MINX_SHAPEFILE_1 Minimum X:
+# ===========================================================================
+GUI LOOKUP SHAPEFILE_IN_SEARCH_ENVELOPE_MINY_SHAPEFILE_1 ,0
+DEFAULT_MACRO SHAPEFILE_IN_SEARCH_ENVELOPE_MINY_SHAPEFILE_1 0
+SHAPEFILE_1_SEARCH_ENVELOPE "$(SHAPEFILE_IN_SEARCH_ENVELOPE_MINY_SHAPEFILE_1)"
+GUI OPTIONAL FLOAT SHAPEFILE_IN_SEARCH_ENVELOPE_MINY_SHAPEFILE_1 Minimum Y:
+# ===========================================================================
+GUI LOOKUP SHAPEFILE_IN_SEARCH_ENVELOPE_MAXX_SHAPEFILE_1 ,0
+DEFAULT_MACRO SHAPEFILE_IN_SEARCH_ENVELOPE_MAXX_SHAPEFILE_1 0
+SHAPEFILE_1_SEARCH_ENVELOPE "$(SHAPEFILE_IN_SEARCH_ENVELOPE_MAXX_SHAPEFILE_1)"
+GUI OPTIONAL FLOAT SHAPEFILE_IN_SEARCH_ENVELOPE_MAXX_SHAPEFILE_1 Maximum X:
+# ===========================================================================
+GUI LOOKUP SHAPEFILE_IN_SEARCH_ENVELOPE_MAXY_SHAPEFILE_1 ,0
+DEFAULT_MACRO SHAPEFILE_IN_SEARCH_ENVELOPE_MAXY_SHAPEFILE_1 0
+SHAPEFILE_1_SEARCH_ENVELOPE "$(SHAPEFILE_IN_SEARCH_ENVELOPE_MAXY_SHAPEFILE_1)"
+GUI OPTIONAL FLOAT SHAPEFILE_IN_SEARCH_ENVELOPE_MAXY_SHAPEFILE_1 Maximum Y:
+# ===========================================================================
+GUI LOOKUP SHAPEFILE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_SHAPEFILE_1 ,
+DEFAULT_MACRO SHAPEFILE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_SHAPEFILE_1
+SHAPEFILE_1_SEARCH_ENVELOPE "$(SHAPEFILE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_SHAPEFILE_1)"
+GUI OPTIONAL COORDSYS SHAPEFILE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_SHAPEFILE_1 Search Envelope Coordinate System:
+# ===========================================================================
+GUI LOOKUP SHAPEFILE_IN_CLIP_TO_ENVELOPE_SHAPEFILE_1 ,NO
+DEFAULT_MACRO SHAPEFILE_IN_CLIP_TO_ENVELOPE_SHAPEFILE_1 NO
+SHAPEFILE_1_CLIP_TO_ENVELOPE "$(SHAPEFILE_IN_CLIP_TO_ENVELOPE_SHAPEFILE_1)"
+GUI OPTIONAL CHECKBOX SHAPEFILE_IN_CLIP_TO_ENVELOPE_SHAPEFILE_1 YES%NO Clip to Search Envelope
+DEFAULT_MACRO SHAPEFILE_IN_ADVANCED_SHAPEFILE_1
+GUI OPTIONAL DISCLOSUREGROUP SHAPEFILE_IN_ADVANCED_SHAPEFILE_1 SHAPEFILE_IN_TRIM_PRECEDING_SPACES_SHAPEFILE_1%SHAPEFILE_IN_DONUT_DETECTION_SHAPEFILE_1%SHAPEFILE_IN_MEASURES_AS_Z_SHAPEFILE_1%SHAPEFILE_IN_REPORT_BAD_GEOMETRY_SHAPEFILE_1 Advanced
+DEFAULT_MACRO SHAPEFILE_IN_TRIM_PRECEDING_SPACES_SHAPEFILE_1 Yes
+SHAPEFILE_1_TRIM_PRECEDING_SPACES "$(SHAPEFILE_IN_TRIM_PRECEDING_SPACES_SHAPEFILE_1)"
+GUI CHOICE SHAPEFILE_IN_TRIM_PRECEDING_SPACES_SHAPEFILE_1 Yes%No Trim Preceding Spaces
+# ============================================================================
+# Option to use simple donut geometry creation, which is faster than the
+# original creation method, but less meticulous at detecting and correcting
+# geometric anomalies (i.e.holeswithinholes)
+DEFAULT_MACRO SHAPEFILE_IN_DONUT_DETECTION_SHAPEFILE_1 ORIENTATION
+SHAPEFILE_1_DONUT_DETECTION "$(SHAPEFILE_IN_DONUT_DETECTION_SHAPEFILE_1)"
+GUI LOOKUP_CHOICE SHAPEFILE_IN_DONUT_DETECTION_SHAPEFILE_1 "\"Orientation Only\",ORIENTATION"%"\"Orientation and Spatial Relationship\",SPATIAL" Donut Geometry Detection
+# ============================================================================
+# The following GUI line sets whether measure values in the shapefiles should
+# be treated as elevations.
+DEFAULT_MACRO SHAPEFILE_IN_MEASURES_AS_Z_SHAPEFILE_1 No
+SHAPEFILE_1_MEASURES_AS_Z "$(SHAPEFILE_IN_MEASURES_AS_Z_SHAPEFILE_1)"
+GUI CHOICE SHAPEFILE_IN_MEASURES_AS_Z_SHAPEFILE_1 Yes%No Treat Measures as Elevation
+# ============================================================================
+# The following keyword sets whether bad geometry should be reported via
+# the shape_geometry_errors attribute.
+DEFAULT_MACRO SHAPEFILE_IN_REPORT_BAD_GEOMETRY_SHAPEFILE_1 No
+SHAPEFILE_1_REPORT_BAD_GEOMETRY "$(SHAPEFILE_IN_REPORT_BAD_GEOMETRY_SHAPEFILE_1)"
+GUI CHOICE SHAPEFILE_IN_REPORT_BAD_GEOMETRY_SHAPEFILE_1 Yes%No Report Geometry Anomalies
+# ===========================================================================
+DEFAULT_MACRO SHAPEFILE_IN_NETWORK_AUTHENTICATION_SHAPEFILE_1
+SHAPEFILE_1_NETWORK_AUTHENTICATION "$(SHAPEFILE_IN_NETWORK_AUTHENTICATION_SHAPEFILE_1)"
+GUI OPTIONAL AUTHENTICATOR SHAPEFILE_IN_NETWORK_AUTHENTICATION_SHAPEFILE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication
+# ============================================================================
+DEFAULT_MACRO SHAPEFILE_IN_ATTRIBUTE_READING_SHAPEFILE_1 ALL
+SHAPEFILE_1_ATTRIBUTE_READING "$(SHAPEFILE_IN_ATTRIBUTE_READING_SHAPEFILE_1)"
+# ============================================================================
+SHAPEFILE_1_GENERATE_FME_BUILD_NUM 19253
+SHAPEFILE_1_DATASET "$(SourceDataset_SHAPEFILE_1)"
+#! END_SOURCE_HEADER
+#! START_WB_HEADER
+MACRO WB_KEYWORD "ESRISHAPE_1"
+#! END_WB_HEADER
+#! START_DEST_HEADER ESRISHAPE ESRISHAPE_1
+# ============================================================================
+# The following GUI line prompts for a folder to be used as the
+# the destination for the Esri Shapefiles.
+# The user input is stored in a macro, which is then used to define
+# the dataset to be written.
+#! END_DEST_HEADER
+#! START_WB_HEADER
+DEFAULT_MACRO DestDataset
+INCLUDE [ if {"$(DestDataset)" != ""} { \
+ puts {DEFAULT_MACRO DestDataset_ESRISHAPE_1 $(DestDataset)} \
+ } ]
+#! END_WB_HEADER
+#! START_DEST_HEADER ESRISHAPE ESRISHAPE_1
+DEFAULT_MACRO DestDataset_ESRISHAPE_1 $(DestDataset_ESRISHAPE)
+GUI DIRNAME DestDataset_ESRISHAPE_1 Destination Esri Shapefile Folder:
+ESRISHAPE_1_COORDINATE_SYSTEM_GRANULARITY FEATURE_TYPE
+DEFAULT_MACRO ESRISHAPE_OUT_WRITER_PARAMETERS_ESRISHAPE_1
+GUI OPTIONAL DISCLOSUREGROUP ESRISHAPE_OUT_WRITER_PARAMETERS_ESRISHAPE_1 ESRISHAPE_OUT_UPPER_CASE_ATTR_NAMES%ESRISHAPE_OUT_ENCODING_ESRISHAPE_1%ESRISHAPE_OUT_WRITE_SPATIAL_INDEX_ESRISHAPE_1%ESRISHAPE_OUT_COMPRESSED_SHAPE_FILE_ESRISHAPE_1%ESRISHAPE_OUT_DIMENSION Writer Parameters
+# ============================================================================
+# Determines whether the attribute names should be uppercased, or whether they
+# should stay as specified in the shapefile. The default will be Yes for
+# backwards compatibility. Once the mapping file/workspace has been generated,
+# the value for this keyword should not be changed.
+DEFAULT_MACRO ESRISHAPE_OUT_UPPER_CASE_ATTR_NAMES_ESRISHAPE_1 No
+ESRISHAPE_1_UPPER_CASE_ATTR_NAMES "$(ESRISHAPE_OUT_UPPER_CASE_ATTR_NAMES_ESRISHAPE_1)"
+# ============================================================================
+# The following keyword allows the user to choose what encoding to
+# use for outputting the shapefile
+# BUG31194: For backwards compatibility and not outputting a .cpg file
+# we have chosen to make the writer default encoding system (ANSI)
+DEFAULT_MACRO ESRISHAPE_OUT_ENCODING_ESRISHAPE_1 fme-source-encoding
+ESRISHAPE_1_ENCODING "$(ESRISHAPE_OUT_ENCODING_ESRISHAPE_1)"
+GUI STRING_OR_ENCODING ESRISHAPE_OUT_ENCODING_ESRISHAPE_1 fme-source-encoding%fme-system%* Character Encoding
+# ============================================================================
+# PR2557: Specifies whether or not the reader will generate spatial index files
+DEFAULT_MACRO ESRISHAPE_OUT_WRITE_SPATIAL_INDEX_ESRISHAPE_1 No
+ESRISHAPE_1_WRITE_SPATIAL_INDEX "$(ESRISHAPE_OUT_WRITE_SPATIAL_INDEX_ESRISHAPE_1)"
+GUI OPTIONAL CHECKBOX ESRISHAPE_OUT_WRITE_SPATIAL_INDEX_ESRISHAPE_1 Yes%No Write Spatial Index
+DEFAULT_MACRO ESRISHAPE_OUT_COMPRESSED_SHAPE_FILE_ESRISHAPE_1 No
+ESRISHAPE_1_COMPRESSED_SHAPE_FILE "$(ESRISHAPE_OUT_COMPRESSED_SHAPE_FILE_ESRISHAPE_1)"
+GUI OPTIONAL CHECKBOX ESRISHAPE_OUT_COMPRESSED_SHAPE_FILE_ESRISHAPE_1 Yes%No Create Compressed Shapefile (.shz)
+DEFAULT_MACRO ESRISHAPE_OUT_DIMENSION_ESRISHAPE_1 auto
+ESRISHAPE_1_DIMENSION "$(ESRISHAPE_OUT_DIMENSION_ESRISHAPE_1)"
+DEFAULT_MACRO ESRISHAPE_OUT_ADVANCED_ESRISHAPE_1
+GUI OPTIONAL DISCLOSUREGROUP ESRISHAPE_OUT_ADVANCED_ESRISHAPE_1 ESRISHAPE_OUT_STRICT_COMPATIBILITY_ESRISHAPE_1%ESRISHAPE_OUT_GEOMETRY_ESRISHAPE_1 Advanced
+# ============================================================================
+# BUG31474: Add an Strict compatibility flag to prevent some apps from
+# crashing when record lengths are too long. By default, we want to write
+# compatible files going forward.
+DEFAULT_MACRO ESRISHAPE_OUT_STRICT_COMPATIBILITY_ESRISHAPE_1 Yes
+ESRISHAPE_1_STRICT_COMPATIBILITY "$(ESRISHAPE_OUT_STRICT_COMPATIBILITY_ESRISHAPE_1)"
+GUI OPTIONAL CHECKBOX ESRISHAPE_OUT_STRICT_COMPATIBILITY_ESRISHAPE_1 Yes%No Strict Compatibility
+DEFAULT_MACRO ESRISHAPE_OUT_GEOMETRY_ESRISHAPE_1
+GUI OPTIONAL DISCLOSUREGROUP ESRISHAPE_OUT_GEOMETRY_ESRISHAPE_1 ESRISHAPE_OUT_PRESERVE_RING_VERTEX_ORDER_ESRISHAPE_1%ESRISHAPE_OUT_SURFACE_AND_SOLID_STORAGE%ESRISHAPE_OUT_MEASURES_AS_Z_ESRISHAPE_1 Geometry
+# ============================================================
+# BUG39095: Add an option to preserve input ring vertex order.
+DEFAULT_MACRO ESRISHAPE_OUT_PRESERVE_RING_VERTEX_ORDER_ESRISHAPE_1 No
+ESRISHAPE_1_PRESERVE_RING_VERTEX_ORDER "$(ESRISHAPE_OUT_PRESERVE_RING_VERTEX_ORDER_ESRISHAPE_1)"
+GUI OPTIONAL CHECKBOX ESRISHAPE_OUT_PRESERVE_RING_VERTEX_ORDER_ESRISHAPE_1 Yes%No Preserve Ring Vertex Order
+# ============================================================================
+# Opt in for destination dataset type vs format type validation
+DEFAULT_MACRO ESRISHAPE_OUT_DESTINATION_DATASETTYPE_VALIDATION_ESRISHAPE_1 Yes
+ESRISHAPE_1_DESTINATION_DATASETTYPE_VALIDATION "$(ESRISHAPE_OUT_DESTINATION_DATASETTYPE_VALIDATION_ESRISHAPE_1)"
+# ============================================================================
+# The following GUI line sets whether measure values in the shapefiles should
+# be treated as elevations.
+DEFAULT_MACRO ESRISHAPE_OUT_MEASURES_AS_Z_ESRISHAPE_1 no
+ESRISHAPE_1_MEASURES_AS_Z "$(ESRISHAPE_OUT_MEASURES_AS_Z_ESRISHAPE_1)"
+GUI CHOICE ESRISHAPE_OUT_MEASURES_AS_Z_ESRISHAPE_1 yes%no Treat Measures as Elevation
+# ============================================================================
+ESRISHAPE_1_GENERATE_FME_BUILD_NUM 19253
+ESRISHAPE_1_ENCODING $(ESRISHAPE_OUT_ENCODING_ESRISHAPE_1)
+ESRISHAPE_1_DATASET "$(DestDataset_ESRISHAPE_1)"
+#! END_DEST_HEADER
+#! START_WB_HEADER
+#! END_WB_HEADER
+#! END_HEADER
+
+LOG_FILENAME "$(FME_MF_DIR)00_Buildings_Clipper.log"
+LOG_APPEND NO
+LOG_TIMINGS YES
+LOG_FILTER_MASK -1
+LOG_MAX_FEATURES 200
+LOG_MAX_RECORDED_FEATURES 200
+FME_REPROJECTION_ENGINE FME
+FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto
+FME_GEOMETRY_HANDLING Enhanced
+FME_STROKE_MAX_DEVIATION 0
+DEFAULT_MACRO DATASET_KEYWORD_SHAPEFILE_1 SHAPEFILE_1
+DEFAULT_MACRO DATASET_KEYWORD_ESRISHAPE_1 ESRISHAPE_1
+# -------------------------------------------------------------------------
+
+SHAPEFILE_1_READER_META_ATTRIBUTES fme_feature_type
+
+# -------------------------------------------------------------------------
+
+SHAPEFILE_1_COORDINATE_SYSTEM EPSG:2056
+SHAPEFILE_1_FEATURE_TYPES $(FEATURE_TYPES_2)
+ESRISHAPE_1_COORDINATE_SYSTEM EPSG:2056
+MULTI_READER_CONTINUE_ON_READER_FAILURE No
+
+# -------------------------------------------------------------------------
+
+MACRO WORKSPACE_NAME 00_Buildings_Clipper
+MACRO FME_VIEWER_APP fmedatainspector
+# -------------------------------------------------------------------------
+SHAPEFILE_1_DEF secteurs secteur_ID long
+# -------------------------------------------------------------------------
+
+FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD $(DATASET_KEYWORD_SHAPEFILE_1) INPUT FEATURE_TYPE * ROUTE SHAPEFILE SHAPEFILE_1::secteurs multi_reader_keyword,$(DATASET_KEYWORD_SHAPEFILE_1) TO FME_GENERIC ::secteurs ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE *
+SHAPEFILE_1_MERGE_DEF SHAPEFILE_1::secteurs GLOB *
+# -------------------------------------------------------------------------
+
+FACTORY_DEF * TeeFactory FACTORY_NAME "secteurs (SHAPEFILE_1) Splitter" INPUT FEATURE_TYPE secteurs OUTPUT FEATURE_TYPE secteurs_SHAPEFILE_1
+DEFAULT_MACRO WB_CURRENT_CONTEXT
+# -------------------------------------------------------------------------
+MACRO FeatureReader_OUTPUT_PORTS_ENCODED
+MACRO FeatureReader_DIRECTIVES NUMERIC_TYPE_ATTRIBUTE_HANDLING,STANDARD_TYPES,DONUT_DETECTION,ORIENTATION,MEASURES_AS_Z,No,USE_SEARCH_ENVELOPE,NO,REPORT_BAD_GEOMETRY,No,TRIM_PRECEDING_SPACES,Yes,ENCODING,fme-source-encoding
+# Always provide an INTERACTION, otherwise the factory defaults to ENVELOPE_INTERSECTS
+INCLUDE [if { ( {CONTAINS} == {} ) || ( {($INTERACT_OPTIONS)} == {} ) } { puts {MACRO FCTQUERY_INTERACTION_LINE FCTQUERY_INTERACTION NONE}; } else { puts {MACRO FCTQUERY_INTERACTION_LINE FCTQUERY_INTERACTION "CONTAINS"}; } ]
+# Consolidate the attribute merge options to what the factory expects
+DEFAULT_MACRO FeatureReader_COMBINE_ATTRS
+INCLUDE [ if { {RESULT_ONLY} == {MERGE} } { puts "MACRO FeatureReader_COMBINE_ATTRS "; } else { puts "MACRO FeatureReader_COMBINE_ATTRS RESULT_ONLY"; }; ]
+INCLUDE [ puts {DEFAULT_MACRO FeatureReaderDataset_FeatureReader C:UsersMaltasDesktopMAS_DATAcanton*.shp}; ]
+FACTORY_DEF * QueryFactory FACTORY_NAME FeatureReader INPUT FEATURE_TYPE secteurs_SHAPEFILE_1 $(FCTQUERY_INTERACTION_LINE) COMBINE_ATTRIBUTES $(FeatureReader_COMBINE_ATTRS) QUERYFCT_ATTRIBUTE_PREFIX COMBINE_GEOMETRY RESULT_ONLY ENABLE_CACHE NO QUERYFCT_TABLE_SEPARATOR SPACE READER_TYPE SHAPEFILE READER_DATASET "$(FeatureReaderDataset_FeatureReader)" QUERYFCT_IDS "" READER_COORDSYS "EPSG:2056" READER_DIRECTIVES META_MACROS,SourceENCODINGfme-source-encodingSourceNUMERIC_TYPE_ATTRIBUTE_HANDLINGSTANDARD_TYPESSourceEXPOSE_ATTRS_GROUPSourceSHAPEFILE_EXPOSE_FORMAT_ATTRSSourceUSE_SEARCH_ENVELOPENOSourceSEARCH_ENVELOPE_MINX0SourceSEARCH_ENVELOPE_MINY0SourceSEARCH_ENVELOPE_MAXX0SourceSEARCH_ENVELOPE_MAXY0SourceSEARCH_ENVELOPE_COORDINATE_SYSTEMSourceCLIP_TO_ENVELOPENOSourceADVANCEDSourceTRIM_PRECEDING_SPACESYesSourceDONUT_DETECTIONORIENTATIONSourceMEASURES_AS_ZNoSourceREPORT_BAD_GEOMETRYNo,METAFILE,SHAPEFILE QUERYFCT_OUTPUT "BASED_ON_CONNECTIONS" CONTINUE_ON_READER_ERROR YES QUERYFCT_RESULT_TAGS $(FeatureReader_OUTPUT_PORTS_ENCODED) QUERYFCT_SET_FME_FEATURE_TYPE YES READER_PARAMS_WWJD $(FeatureReader_DIRECTIVES) TREAT_READER_PARAM_AMPERSANDS_AS_LITERALS YES OUTPUT RESULT FEATURE_TYPE FeatureReader_ OUTPUT SCHEMA FEATURE_TYPE FeatureReader_ OUTPUT READER_ERROR FEATURE_TYPE FeatureReader_
+DEFAULT_MACRO _WB_BYPASS_TERMINATION No
+FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader_ INPUT FEATURE_TYPE FeatureReader_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, FeatureReaderoutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation)
+# -------------------------------------------------------------------------
+
+FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC FeatureReader_ TO ESRISHAPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typesecteurs,SupplyAttributesENCODED__wb_out_feat_type__secteurs,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparenfme_feature_typecloseparensecteurs COORDINATE_SYSTEM EPSG:2056 GEOMETRY ROUTE FME_GENERIC FeatureReader_ TO ESRISHAPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typesecteurs,SupplyAttributesENCODED__wb_out_feat_type__secteurs,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparenfme_feature_typecloseparensecteurs COORDINATE_SYSTEM EPSG:2056 GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__ OUTPUT ROUTED FEATURE_TYPE * OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn")
+# -------------------------------------------------------------------------
+
+FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__
+
+# -------------------------------------------------------------------------
+ESRISHAPE_1_DEF_TEMPLATE secteurs SHAPE_GEOMETRY {FME_GEN_GEOMETRY} shape_dimension auto fme_schema_readers "" fme_schema_feature_first Yes secteur_ID long fme_featur char(50)
diff --git a/datasource/02_buildings/102310.dwg b/datasource/02_buildings/102310.dwg
new file mode 100644
index 0000000..08d7099
Binary files /dev/null and b/datasource/02_buildings/102310.dwg differ
diff --git a/datasource/02_buildings/Ground.dbf b/datasource/02_buildings/Ground.dbf
new file mode 100644
index 0000000..a84c726
Binary files /dev/null and b/datasource/02_buildings/Ground.dbf differ
diff --git a/datasource/02_buildings/Ground.prj b/datasource/02_buildings/Ground.prj
new file mode 100644
index 0000000..9ef4027
--- /dev/null
+++ b/datasource/02_buildings/Ground.prj
@@ -0,0 +1 @@
+PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",90.0],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1.0],AUTHORITY["EPSG",2056]]
\ No newline at end of file
diff --git a/datasource/02_buildings/Ground.shp b/datasource/02_buildings/Ground.shp
new file mode 100644
index 0000000..896dfe4
Binary files /dev/null and b/datasource/02_buildings/Ground.shp differ
diff --git a/datasource/02_buildings/Ground.shx b/datasource/02_buildings/Ground.shx
new file mode 100644
index 0000000..9d47987
Binary files /dev/null and b/datasource/02_buildings/Ground.shx differ
diff --git a/datasource/02_buildings/Overhang.dbf b/datasource/02_buildings/Overhang.dbf
new file mode 100644
index 0000000..583ba9b
Binary files /dev/null and b/datasource/02_buildings/Overhang.dbf differ
diff --git a/datasource/02_buildings/Overhang.prj b/datasource/02_buildings/Overhang.prj
new file mode 100644
index 0000000..9ef4027
--- /dev/null
+++ b/datasource/02_buildings/Overhang.prj
@@ -0,0 +1 @@
+PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",90.0],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1.0],AUTHORITY["EPSG",2056]]
\ No newline at end of file
diff --git a/datasource/02_buildings/Overhang.shp b/datasource/02_buildings/Overhang.shp
new file mode 100644
index 0000000..8a12563
Binary files /dev/null and b/datasource/02_buildings/Overhang.shp differ
diff --git a/datasource/02_buildings/Overhang.shx b/datasource/02_buildings/Overhang.shx
new file mode 100644
index 0000000..93feac0
Binary files /dev/null and b/datasource/02_buildings/Overhang.shx differ
diff --git a/datasource/02_buildings/Roof.dbf b/datasource/02_buildings/Roof.dbf
new file mode 100644
index 0000000..9f17c50
Binary files /dev/null and b/datasource/02_buildings/Roof.dbf differ
diff --git a/datasource/02_buildings/Roof.prj b/datasource/02_buildings/Roof.prj
new file mode 100644
index 0000000..9ef4027
--- /dev/null
+++ b/datasource/02_buildings/Roof.prj
@@ -0,0 +1 @@
+PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",90.0],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1.0],AUTHORITY["EPSG",2056]]
\ No newline at end of file
diff --git a/datasource/02_buildings/Roof.shp b/datasource/02_buildings/Roof.shp
new file mode 100644
index 0000000..900829f
Binary files /dev/null and b/datasource/02_buildings/Roof.shp differ
diff --git a/datasource/02_buildings/Roof.shx b/datasource/02_buildings/Roof.shx
new file mode 100644
index 0000000..fa181b7
Binary files /dev/null and b/datasource/02_buildings/Roof.shx differ
diff --git a/datasource/02_buildings/RoofSuperstructure.dbf b/datasource/02_buildings/RoofSuperstructure.dbf
new file mode 100644
index 0000000..d3e03f3
Binary files /dev/null and b/datasource/02_buildings/RoofSuperstructure.dbf differ
diff --git a/datasource/02_buildings/RoofSuperstructure.prj b/datasource/02_buildings/RoofSuperstructure.prj
new file mode 100644
index 0000000..9ef4027
--- /dev/null
+++ b/datasource/02_buildings/RoofSuperstructure.prj
@@ -0,0 +1 @@
+PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",90.0],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1.0],AUTHORITY["EPSG",2056]]
\ No newline at end of file
diff --git a/datasource/02_buildings/RoofSuperstructure.shp b/datasource/02_buildings/RoofSuperstructure.shp
new file mode 100644
index 0000000..79e257a
Binary files /dev/null and b/datasource/02_buildings/RoofSuperstructure.shp differ
diff --git a/datasource/02_buildings/RoofSuperstructure.shx b/datasource/02_buildings/RoofSuperstructure.shx
new file mode 100644
index 0000000..35d73e6
Binary files /dev/null and b/datasource/02_buildings/RoofSuperstructure.shx differ
diff --git a/datasource/02_buildings/Wall.dbf b/datasource/02_buildings/Wall.dbf
new file mode 100644
index 0000000..c27d87f
Binary files /dev/null and b/datasource/02_buildings/Wall.dbf differ
diff --git a/datasource/02_buildings/Wall.prj b/datasource/02_buildings/Wall.prj
new file mode 100644
index 0000000..9ef4027
--- /dev/null
+++ b/datasource/02_buildings/Wall.prj
@@ -0,0 +1 @@
+PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",90.0],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1.0],AUTHORITY["EPSG",2056]]
\ No newline at end of file
diff --git a/datasource/02_buildings/Wall.shp b/datasource/02_buildings/Wall.shp
new file mode 100644
index 0000000..5867fad
Binary files /dev/null and b/datasource/02_buildings/Wall.shp differ
diff --git a/datasource/02_buildings/Wall.shx b/datasource/02_buildings/Wall.shx
new file mode 100644
index 0000000..f2ca351
Binary files /dev/null and b/datasource/02_buildings/Wall.shx differ
diff --git a/datasource/02_buildings/WallSuperstructure.dbf b/datasource/02_buildings/WallSuperstructure.dbf
new file mode 100644
index 0000000..02cf7fb
Binary files /dev/null and b/datasource/02_buildings/WallSuperstructure.dbf differ
diff --git a/datasource/02_buildings/WallSuperstructure.prj b/datasource/02_buildings/WallSuperstructure.prj
new file mode 100644
index 0000000..9ef4027
--- /dev/null
+++ b/datasource/02_buildings/WallSuperstructure.prj
@@ -0,0 +1 @@
+PROJCS["CH1903+_LV95",GEOGCS["GCS_CH1903+",DATUM["D_CH1903+",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],PARAMETER["False_Easting",2600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",90.0],PARAMETER["Longitude_Of_Center",7.439583333333333],PARAMETER["Latitude_Of_Center",46.95240555555556],UNIT["Meter",1.0],AUTHORITY["EPSG",2056]]
\ No newline at end of file
diff --git a/datasource/02_buildings/WallSuperstructure.shp b/datasource/02_buildings/WallSuperstructure.shp
new file mode 100644
index 0000000..fd684a1
Binary files /dev/null and b/datasource/02_buildings/WallSuperstructure.shp differ
diff --git a/datasource/02_buildings/WallSuperstructure.shx b/datasource/02_buildings/WallSuperstructure.shx
new file mode 100644
index 0000000..1f62ee0
Binary files /dev/null and b/datasource/02_buildings/WallSuperstructure.shx differ
diff --git a/import/01_terrain/10_GEOTIFF2RAW.fmw b/import/01_terrain/10_GEOTIFF2RAW.fmw
index 4ca97d6..776c65f 100644
--- a/import/01_terrain/10_GEOTIFF2RAW.fmw
+++ b/import/01_terrain/10_GEOTIFF2RAW.fmw
@@ -1,9 +1,11 @@
#!
#!
+#!
+#!
#!
#!
#!
#!
#!
#!
+#!
+#!
#!
#!
#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
-#!
#!
#!
#!
+#!
+#!
#!
#!
#!
+#!
+#!
#!
#!
#!
-#!
+#!
#!
#!
#!
@@ -520,6 +520,8 @@
#!
#!
#!
+#!
+#!
#!
#!
#!
@@ -531,18 +533,18 @@
#!
#!
#!
-#!
+#!
#!
#!
#!
#!
#!
#!
-#!
+#!
#!
#!
#!
-#!
+#!
#!
#!
#!
@@ -551,8 +553,8 @@
#! IDENTIFIER="12"
#! TYPE="SystemCaller"
#! VERSION="3"
-#! POSITION="3015.6551565515651 -578.13078130781275"
-#! BOUNDING_RECT="3015.6551565515651 -578.13078130781275 454 71"
+#! POSITION="2427.2740627406279 -1242.8878438784395"
+#! BOUNDING_RECT="2427.2740627406279 -1242.8878438784395 430 71"
#! ORDER="500000000000012"
#! PARMS_EDITED="true"
#! ENABLED="true"
@@ -560,16 +562,308 @@
#! >
#!
#!
+#!
+#!
+#!
#!
#!
+#!
+#!
#!
#!
#!
-#!
+#!
#!
#!
#!
#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
#!
#!
#!
#!
+#!
+#!
+#!
#!
+#!
#!
+#!
#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
+#!
#!
#!
#!
@@ -644,6 +1081,10 @@ DEFAULT_MACRO SourceDataset_GEOTIFF ..\..\datasource\01_terrain\mnt2016_25cm.tif
GUI MULTIFILE SourceDataset_GEOTIFF GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s):
DEFAULT_MACRO output_file_name 10_terrain
GUI STRING output_file_name Output file name:
+DEFAULT_MACRO min_z 429
+GUI OPTIONAL RANGE_SLIDER min_z "RANGE:(-100,8900)" Minimal terrain altitude:
+DEFAULT_MACRO max_z 1552
+GUI OPTIONAL RANGE_SLIDER max_z "RANGE:(-100,8900)" Maximum terrain altitude:
INCLUDE [ if {{$(SourceDataset_GEOTIFF)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF' must be given a value.}; exit 1; }; ]
INCLUDE [ if {{$(output_file_name)} == {}} { puts_real {Parameter 'output_file_name' must be given a value.}; exit 1; }; ]
#! START_HEADER
@@ -768,7 +1209,7 @@ FME_STROKE_MAX_DEVIATION 0
DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_1 GEOTIFF_1
# -------------------------------------------------------------------------
-GEOTIFF_1_READER_META_ATTRIBUTES fme_basename fme_feature_type
+GEOTIFF_1_READER_META_ATTRIBUTES fme_feature_type fme_basename
# -------------------------------------------------------------------------
@@ -789,6 +1230,12 @@ GEOTIFF_1_MERGE_DEF GEOTIFF_1::GEOTIFF EXACT GEOTIFF
FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF (GEOTIFF_1) Splitter" INPUT FEATURE_TYPE GEOTIFF OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1
DEFAULT_MACRO WB_CURRENT_CONTEXT
# -------------------------------------------------------------------------
+FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED_0_GJAgmIF9G6c= Brancher -1 39" INPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE *
+FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED_1_Exx7idfjvCA= Brancher -1 40" INPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE *
+FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED_2_goANeUpBIDA= Brancher -1 48" INPUT FEATURE_TYPE Creator_CREATED_2_goANeUpBIDA= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE *
+# -------------------------------------------------------------------------
+FACTORY_DEF * TeeFactory FACTORY_NAME "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE *
+# -------------------------------------------------------------------------
INCLUDE [ if {{RowsColumns} == {RowsColumns}} { puts {MACRO RESAMPLE_ARGS DIMENSIONS, "1024", "1024", NearestNeighbor} } elseif {{RowsColumns} == {CellSize}} { puts {MACRO RESAMPLE_ARGS CELL_SIZE, "", "", NearestNeighbor} } elseif {{RowsColumns} == {Percentage}} { puts {MACRO RESAMPLE_ARGS PERCENTAGE, "", "", NearestNeighbor} }; ]
FACTORY_DEF * TeeFactory FACTORY_NAME RasterResampler_RasterResamplerInput INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 OUTPUT FEATURE_TYPE ___TORASTERRESAMPLER___
FACTORY_DEF * TeeFactory FACTORY_NAME RasterResampler_RasterResampler INPUT FEATURE_TYPE ___TORASTERRESAMPLER___ @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) OUTPUT FEATURE_TYPE ___TOREJECTOR___ @ResampleRaster(REJECTABLE,$(RESAMPLE_ARGS))
@@ -796,20 +1243,43 @@ FACTORY_DEF * TestFactory FACTORY_NAME RasterResampler_Rejector INPUT FEAT
DEFAULT_MACRO _WB_BYPASS_TERMINATION No
FACTORY_DEF * TeeFactory FACTORY_NAME RasterResampler_ INPUT FEATURE_TYPE RasterResampler_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterResampleroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation)
# -------------------------------------------------------------------------
-FACTORY_DEF {*} RasterEvaluationFactory FACTORY_NAME RasterExpressionEvaluator INPUT A FEATURE_TYPE RasterResampler_RESAMPLED INTERPRETATION_LIST "REAL32" EXPRESSION_LIST "uint16A0-400*50" FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE RasterExpressionEvaluator_RESULT OUTPUT FEATURE_TYPE RasterExpressionEvaluator_
+FACTORY_DEF * RasterStatisticsFactory FACTORY_NAME RasterStatisticsCalculator INPUT FEATURE_TYPE RasterResampler_RESAMPLED RASTER_LEVEL BAND_ONLY RASTER_STATS 0 MIN MAX OUTPUT OUTPUT FEATURE_TYPE RasterStatisticsCalculator_OUTPUT OUTPUT FEATURE_TYPE RasterStatisticsCalculator_
+DEFAULT_MACRO _WB_BYPASS_TERMINATION No
+FACTORY_DEF * TeeFactory FACTORY_NAME RasterStatisticsCalculator_ INPUT FEATURE_TYPE RasterStatisticsCalculator_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterStatisticsCalculatoroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation)
+# -------------------------------------------------------------------------
+FACTORY_DEF {*} RasterEvaluationFactory FACTORY_NAME RasterExpressionEvaluator INPUT A FEATURE_TYPE RasterStatisticsCalculator_OUTPUT INTERPRETATION_LIST "UINT64" EXPRESSION_LIST "A0-$(min_z$encode)*100" FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE RasterExpressionEvaluator_RESULT OUTPUT FEATURE_TYPE RasterExpressionEvaluator_
+FACTORY_DEF * TeeFactory FACTORY_NAME "RasterExpressionEvaluator RESULT Splitter" INPUT FEATURE_TYPE RasterExpressionEvaluator_RESULT OUTPUT FEATURE_TYPE RasterExpressionEvaluator_RESULT_0_LcvONrBjVfY= OUTPUT FEATURE_TYPE RasterExpressionEvaluator_RESULT_1_6QUjPFWBMIE=
DEFAULT_MACRO _WB_BYPASS_TERMINATION No
FACTORY_DEF * TeeFactory FACTORY_NAME RasterExpressionEvaluator_ INPUT FEATURE_TYPE RasterExpressionEvaluator_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterExpressionEvaluatoroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslation