#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! FME_PYTHON_VERSION 27 GUI IGNORE SourceDataset_LAS_1,LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1,LAS_IN_CLIP_TO_ENVELOPE_LAS_1,LAS_IN_NETWORK_AUTHENTICATION_LAS_1,SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1,SourceDataset_ESRISHAPE_1,ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1,ESRISHAPE_IN_ENCODING_ESRISHAPE_1,ESRISHAPE_IN_EXPOSE_ATTRS_GROUP_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1,ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1,ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1,_MEASURES_AS_Z_ESRISHAPE_1,ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1,ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1,ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1 DEFAULT_MACRO SourceDataset_LAS D:\597000_4676000.laz GUI MULTIFILE SourceDataset_LAS LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|All_files(*)|* Source ASPRS LAS File(s): DEFAULT_MACRO SourceDataset_ESRISHAPE_3 D:\siose_lidar_ccaa_cuadricula_lidar.shp GUI MULTIFILE SourceDataset_ESRISHAPE_3 Shapefiles(*.shp)|*.shp|Compressed_Shapefiles(*.shz)|*.shz|All_Files(*)|* Source Esri Shapefile(s): INCLUDE [ if {{$(SourceDataset_LAS)} == {}} { puts_real {Parameter 'SourceDataset_LAS' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(SourceDataset_ESRISHAPE_3)} == {}} { puts_real {Parameter 'SourceDataset_ESRISHAPE_3' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE MULTI_READER MULTI_READER_TYPE{0} LAS MULTI_READER_KEYWORD{0} LAS_1 MULTI_READER_GEN_DIRECTIVES{0} EXPOSE_ATTRS_GROUP,FME_DISCLOSURE_OPEN,LAS_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINY,0,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,GROUP_BY_DATASET,No,SEARCH_ENVELOPE_MAXY,0,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXX,0,USE_SEARCH_ENVELOPE,NO MULTI_READER_TYPE{1} ESRISHAPE MULTI_READER_KEYWORD{1} ESRISHAPE_1 MULTI_READER_GEN_DIRECTIVES{1} SIMPLE_DONUT_GEOMETRY,simple,ENCODING,,DISSOLVE_HOLES,no,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MAXX,0,CHECK_NUMERIC_FIELDS,yes,UPPER_CASE_ATTR_NAMES,No,ESRISHAPE_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINY,0,SEARCH_ENVELOPE_MAXY,0,USE_SEARCH_ENVELOPE,NO,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MINX,0,EXPOSE_ATTRS_GROUP, WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET null #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "LAS_1" #! END_WB_HEADER #! START_SOURCE_HEADER LAS LAS_1 # ======================================================================= # The following GUI line prompts for a file to be used as the source LAS file. # The user input is stored in a macro, which is then used to define # the dataset to be read. # 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_LAS_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER LAS LAS_1 DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset_LAS) GUI MULTIFILE SourceDataset_LAS_1 LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|All_files(*)|* Source ASPRS LAS File(s): LAS_1_READER_META_ATTRIBUTES fme_dataset DEFAULT_MACRO LAS_IN_GROUP_BY_DATASET_LAS_1 No LAS_1_GROUP_BY_DATASET "$(LAS_IN_GROUP_BY_DATASET_LAS_1)" DEFAULT_MACRO LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1 FME_DISCLOSURE_OPEN LAS_1_EXPOSE_ATTRS_GROUP "$(LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1)" GUI DISCLOSUREGROUP LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1 LAS_EXPOSE_FORMAT_ATTRS Schema Attributes # Include this file in source setting section to add external search envelope processing # Zero as a default means we don't do any search -- this makes workbench happier # =========================================================================== DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 0 LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1)" GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 Minimum X: # =========================================================================== DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 0 LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1)" GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 Minimum Y: # =========================================================================== DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 0 LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1)" GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 Maximum X: # =========================================================================== DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 0 LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1)" GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 Maximum Y: # =========================================================================== # BUG18999: We now have a soft clip to fall back on like native spatial index # thus we are reintroducing the clip to envelop as an option for users. # Defualt to soft clip as per the existing database readers we are emulating DEFAULT_MACRO LAS_IN_CLIP_TO_ENVELOPE_LAS_1 NO LAS_1_CLIP_TO_ENVELOPE "$(LAS_IN_CLIP_TO_ENVELOPE_LAS_1)" GUI OPTIONAL CHECKBOX LAS_IN_CLIP_TO_ENVELOPE_LAS_1 YES%NO Clip to Search Envelope # =========================================================================== DEFAULT_MACRO LAS_IN_NETWORK_AUTHENTICATION_LAS_1 LAS_1_NETWORK_AUTHENTICATION "$(LAS_IN_NETWORK_AUTHENTICATION_LAS_1)" GUI OPTIONAL AUTHENTICATOR LAS_IN_NETWORK_AUTHENTICATION_LAS_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # =========================================================================== DEFAULT_MACRO LAS_IN_ATTRIBUTE_READING_LAS_1 ALL LAS_1_ATTRIBUTE_READING "$(LAS_IN_ATTRIBUTE_READING_LAS_1)" # PR:31021 # Include this file in workbench source preamble section to enable the ability # to specify a coordinate system for search envelope processing # =========================================================================== DEFAULT_MACRO SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 GUI OPTIONAL COORDSYS SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 Search Envelope Coordinate System: LAS_1_SEARCH_ENVELOPE_COORDINATE_SYSTEM "$(SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1)" # =========================================================================== LAS_1_DATASET "$(SourceDataset_LAS_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "ESRISHAPE_1" #! END_WB_HEADER #! START_SOURCE_HEADER ESRISHAPE ESRISHAPE_1 # ============================================================================ # 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_ESRISHAPE_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER ESRISHAPE ESRISHAPE_1 DEFAULT_MACRO SourceDataset_ESRISHAPE_1 $(SourceDataset_ESRISHAPE_3) GUI MULTIFILE SourceDataset_ESRISHAPE_1 Shapefiles(*.shp)|*.shp|Compressed_Shapefiles(*.shz)|*.shz|All_Files(*)|* Source Esri Shapefile(s): # ===================================================================== # Provide some control over what attributes have the user-selected # encoding applied. Normally all attributes are updated after being # read, but the following lines exclude from this treatment all # attributes whose names start with fme_ or shape_. ESRISHAPE_1_UNENCODED_ATTR_PREFIX fme_ shape_ #Added default value for dissolve holes so that default for DI is consistent with workbench DEFAULT_MACRO ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1 no ESRISHAPE_1_DISSOLVE_HOLES "$(ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1)" # ============================================================================ # Determines whether the attribute names should be uppercased, or whether they # should stay as specified in the shapefile. Once the mapping file/workspace # has been generated, the value for this keyword should not be changed. DEFAULT_MACRO ESRISHAPE_IN_UPPER_CASE_ATTR_NAMES_ESRISHAPE_1 No ESRISHAPE_1_UPPER_CASE_ATTR_NAMES "$(ESRISHAPE_IN_UPPER_CASE_ATTR_NAMES_ESRISHAPE_1)" # ============================================================================ # 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 ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1 simple ESRISHAPE_1_SIMPLE_DONUT_GEOMETRY "$(ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1)" GUI LOOKUP_CHOICE ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1 "Orientation Only",simple%"Orientation and Spatial Relationship",complex Donut Geometry Detection # ============================================================================ # 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 ESRISHAPE_IN_ENCODING_ESRISHAPE_1 ESRISHAPE_1_ENCODING "$(ESRISHAPE_IN_ENCODING_ESRISHAPE_1)" GUI OPTIONAL ENCODING ESRISHAPE_IN_ENCODING_ESRISHAPE_1 ANSI%SYSTEM%BIG5%EUC%HKBIG5%ISO%OEM%SJIS%UTF-8%CP437%CP708%CP720%CP737%CP775%CP850%CP852%CP855%CP857%CP860%CP861%CP862%CP863%CP864%CP865%CP866%CP869%CP874%CP932%CP936%CP950%CP1250%CP1251%CP1252%CP1253%CP1254%CP1255%CP1256%CP1257%CP1258%ISO8859-1%ISO8859-2%ISO8859-3%ISO8859-4%ISO8859-5%ISO8859-6%ISO8859-7%ISO8859-8%ISO8859-9%ISO-8859-11%ISO8859-13%ISO8859-15%WINDOWS-874 Character Encoding: #Note: Using the search envelope requires the shape index files (.sbnand.sbx) DEFAULT_MACRO ESRISHAPE_IN_EXPOSE_ATTRS_GROUP_ESRISHAPE_1 ESRISHAPE_1_EXPOSE_ATTRS_GROUP "$(ESRISHAPE_IN_EXPOSE_ATTRS_GROUP_ESRISHAPE_1)" GUI DISCLOSUREGROUP ESRISHAPE_IN_EXPOSE_ATTRS_GROUP_ESRISHAPE_1 ESRISHAPE_EXPOSE_FORMAT_ATTRS Schema Attributes # 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 ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1 0 ESRISHAPE_1_SEARCH_ENVELOPE "$(ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1)" GUI OPTIONAL FLOAT ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1 Minimum X: # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1 0 ESRISHAPE_1_SEARCH_ENVELOPE "$(ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1)" GUI OPTIONAL FLOAT ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1 Minimum Y: # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1 0 ESRISHAPE_1_SEARCH_ENVELOPE "$(ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1)" GUI OPTIONAL FLOAT ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1 Maximum X: # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1 0 ESRISHAPE_1_SEARCH_ENVELOPE "$(ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1)" GUI OPTIONAL FLOAT ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1 Maximum Y: # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1 NO ESRISHAPE_1_CLIP_TO_ENVELOPE "$(ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1)" GUI OPTIONAL CHECKBOX ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1 YES%NO Clip to Search Envelope DEFAULT_MACRO ESRISHAPE_IN_CHECK_NUMERIC_FIELDS_ESRISHAPE_1 yes ESRISHAPE_1_CHECK_NUMERIC_FIELDS "$(ESRISHAPE_IN_CHECK_NUMERIC_FIELDS_ESRISHAPE_1)" # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1 ESRISHAPE_1_NETWORK_AUTHENTICATION "$(ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1)" GUI OPTIONAL AUTHENTICATOR ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_ATTRIBUTE_READING_ESRISHAPE_1 ALL ESRISHAPE_1_ATTRIBUTE_READING "$(ESRISHAPE_IN_ATTRIBUTE_READING_ESRISHAPE_1)" # ============================================================================ # Search Envelope Coordinate System # BUG18999: Re-adding directive to allow specification of a search envelope # in a coordinate system other than what the data is in. Note that this # depends on the source coordinate system being set as well. DEFAULT_MACRO ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1 GUI OPTIONAL COORDSYS ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1 Search Envelope Coordinate System: ESRISHAPE_1_SEARCH_ENVELOPE_COORDINATE_SYSTEM "$(ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1)" # ============================================================================ # The following GUI line sets whether measure values in the shapefiles should # be treated as elevations. DEFAULT_MACRO _MEASURES_AS_Z_ESRISHAPE_1 no GUI CHOICE _MEASURES_AS_Z_ESRISHAPE_1 yes%no Treat Measures as Elevation: ESRISHAPE_1_MEASURES_AS_Z $(_MEASURES_AS_Z_ESRISHAPE_1) # ============================================================================ # The following keyword sets whether the reader dissolves holes in donuts. GUI CHOICE ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1 yes%no Dissolve Adjacent Holes: ESRISHAPE_1_DISSOLVE_HOLES $(ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1) # ============================================================================ # The following keyword sets whether bad geometry should be reported via # the shape_geometry_error{} list attribute. DEFAULT_MACRO ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1 no GUI CHOICE ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1 yes%no Report Geometry Anomalies: ESRISHAPE_1_REPORT_BAD_GEOMETRY $(ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1) DEFAULT_MACRO ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1 YES GUI CHOICE ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1 yes%no Trim Preceding Spaces: ESRISHAPE_1_TRIM_PRECEDING_SPACES $(ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1) ESRISHAPE_1_DATASET "$(SourceDataset_ESRISHAPE_1)" #! END_SOURCE_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)lidar_process_classification.log" LOG_APPEND NO 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 LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_LAS_1 LAS_1 DEFAULT_MACRO DATASET_KEYWORD_ESRISHAPE_1 ESRISHAPE_1 # ------------------------------------------------------------------------- LAS_1_READER_META_ATTRIBUTES fme_basename fme_feature_type # ------------------------------------------------------------------------- ESRISHAPE_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- LAS_1_COORDINATE_SYSTEM ETRS89.UTM-30N ESRISHAPE_1_COORDINATE_SYSTEM ETRS89.UTM-30N MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME lidar_process_classification MACRO FME_VIEWER_APP fmedatainspector # ------------------------------------------------------------------------- LAS_1_DEF LAS # ------------------------------------------------------------------------- ESRISHAPE_1_DEF siose_lidar_ccaa_cuadricula_lidar SHAPE_GEOMETRY shape_polygon cat_sio char(200) _lidar char(200) city short # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE LAS LAS_1::LAS multi_reader_keyword,$(DATASET_KEYWORD_LAS_1) TO FME_GENERIC ::LAS ALIAS_GEOMETRY ROUTE ESRISHAPE ESRISHAPE_1::siose_lidar_ccaa_cuadricula_lidar multi_reader_keyword,$(DATASET_KEYWORD_ESRISHAPE_1) TO FME_GENERIC ::siose_lidar_ccaa_cuadricula_lidar ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * LAS_1_MERGE_DEF LAS_1::LAS EXACT LAS ESRISHAPE_1_MERGE_DEF ESRISHAPE_1::siose_lidar_ccaa_cuadricula_lidar EXACT siose_lidar_ccaa_cuadricula_lidar # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "LAS (LAS_1) Splitter" INPUT FEATURE_TYPE LAS OUTPUT FEATURE_TYPE LAS_LAS_1 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "siose_lidar_ccaa_cuadricula_lidar (ESRISHAPE_1) Splitter" INPUT FEATURE_TYPE siose_lidar_ccaa_cuadricula_lidar OUTPUT FEATURE_TYPE siose_lidar_ccaa_cuadricula_lidar_ESRISHAPE_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- FACTORY_DEF * PolygonDissolveFactory INPUT FEATURE_TYPE siose_lidar_ccaa_cuadricula_lidar_ESRISHAPE_1 FACTORY_NAME Bufferer PRE_BUFFER "5" "8" CAP_PROJECTING FULL DISSOLVE_MODE GEOS OUTPUT POLYGON FEATURE_TYPE Bufferer_BUFFERED OUTPUT NON_POLYGON FEATURE_TYPE Bufferer_BUFFERED # ------------------------------------------------------------------------- INCLUDE [ if {($(FME_BUILD_NUM) < 5669) || [FME_ComponentIsLicensed -factory RasterClippingFactory]} { puts "MACRO RASTER_CLIPPER_IN *"; } else { puts "MACRO RASTER_CLIPPER_IN NOT_THIS_TIME"; } ] FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_ClipperCloner INPUT FEATURE_TYPE Bufferer_BUFFERED INPUT FEATURE_TYPE Clipper_ClipperCloner_DUMMY OUTPUT FEATURE_TYPE Clipper___ClippersForSolidOrVector___ OUTPUT FEATURE_TYPE Clipper___ClippersForRaster___ FACTORY_DEF * TestFactory FACTORY_NAME Clipper_SolidClipperFilter INPUT FEATURE_TYPE Clipper___ClippersForSolidOrVector___ TEST &fme_type == "fme_solid" OUTPUT FAILED FEATURE_TYPE Clipper___ClippersForVector___ OUTPUT PASSED FEATURE_TYPE Clipper___ClippersForSolid___ FACTORY_DEF * TestFactory FACTORY_NAME Clipper_ClippeeFilter INPUT FEATURE_TYPE LAS_LAS_1 INPUT FEATURE_TYPE Clipper_ClippeeFilter_DUMMY TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Clipper___VectorOrSolidClippees___ OUTPUT PASSED FEATURE_TYPE Clipper___RasterClippees___ FACTORY_DEF $(RASTER_CLIPPER_IN) RasterClippingFactory FACTORY_NAME Clipper_Raster INPUT CLIPPER FEATURE_TYPE Clipper___ClippersForRaster___ INPUT CLIPPEE FEATURE_TYPE Clipper___RasterClippees___ MULTICLIP YES MERGE_CLIPPER_ATTRIBUTES YES ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "CLIPPEE_IF_CONFLICT" CLIPPER_PREFIX "" PRESERVE_CLIPPEE_EXTENTS NO OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper OUTPUT INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" no OUTPUT CLIPPED_INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" yes OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper") FACTORY_DEF * ClippingFactory FACTORY_NAME Clipper_Vector INPUT CLIPPER FEATURE_TYPE Clipper___ClippersForVector___ INPUT CLIPPEE FEATURE_TYPE Clipper___VectorOrSolidClippees___ INPUT CLIPPEE FEATURE_TYPE Clipper___RasterClippees___ MULTICLIP YES CONNECT_Z_MODE FIRST_WINS CLIPPEE_ON_BOUNDARY INSIDE MERGE_CLIPPER_ATTRIBUTES YES ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "CLIPPEE_IF_CONFLICT" CLIPPER_PREFIX "" DO_NOT_AGGREGATE NO OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper LINES_AS_SEGMENTS NO MODE COMPLETE OUTPUT INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" no OUTPUT CLIPPED_INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" yes OUTPUT OUTSIDE_NO_CLIPPER FEATURE_TYPE Clipper___ClippeeForSolid___ OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper") OUTPUT NONPOLY_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917352 Clipper") FACTORY_DEF * SolidIntersectionFactory FACTORY_NAME Clipper_Solid INPUT CLIPPER FEATURE_TYPE Clipper___ClippersForSolid___ INPUT CLIPPEE FEATURE_TYPE Clipper___ClippeeForSolid___ MULTICLIP YES CLIPPEE_ON_BOUNDARY INSIDE MERGE_CLIPPER_ATTRIBUTES YES ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "CLIPPEE_IF_CONFLICT" CLIPPER_PREFIX "" DO_NOT_AGGREGATE NO OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper OUTPUT INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" no OUTPUT CLIPPED_INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" yes OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper") FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_Nuker INPUT FEATURE_TYPE Clipper__delete__ @Log("Offending feature was:") # ------------------------------------------------------------------------- FACTORY_DEF * VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner___VectorMerger INPUT FEATURE_TYPE Clipper_INSIDE GROUP_BY cat_sio EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE OUTPUT COERCED FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner) FACTORY_DEF * PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner___Combiner INPUT FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ GROUP_BY cat_sio ACCUMULATE_ATTRIBUTES ONE OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter INPUT FEATURE_TYPE PointCloudCombiner_OUTPUT MODE FILTER FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Valuecat_sio==1 ; Valuecat_sio==5 ; Valuecat_sio==2 ; Valuecat_sio==3 ; Valuecat_sio==4 ; Valuecat_sio==6 ; Valuecat_sio==7 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 1 ; 5 ; 2 ; 3 ; 4 ; 6 ; 7 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 1 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_1 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = 5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_2 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_2 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_2 STRING_TEST @Value(__pc_internal_filter_attribute__) = 2 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_2 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_3 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_3 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_3 STRING_TEST @Value(__pc_internal_filter_attribute__) = 3 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_3 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_4 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_4 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_4 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_5 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_5 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_5 STRING_TEST @Value(__pc_internal_filter_attribute__) = 6 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_6 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_6 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_6 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_6 STRING_TEST @Value(__pc_internal_filter_attribute__) = 7 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_7 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_7 FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_7 OUTPUT FEATURE_TYPE PointCloudFilter_ @RemoveAttributes(__pc_internal_filter_attribute__) FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_ # ------------------------------------------------------------------------- DEFAULT_MACRO PointCloudExpressionEvaluator_12_COMPONENT_LIST DEFAULT_MACRO PointCloudExpressionEvaluator_12_COMPONENT_TYPE_LIST DEFAULT_MACRO PointCloudExpressionEvaluator_12_EXPRESSION_LIST INCLUDE [ foreach {component componenttype expression} [split {classification Auto 9}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_12_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_12 INPUT FEATURE_TYPE PointCloudFilter_7 MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_12_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_12_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_12_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_12_RESULT # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_6_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose7"}; }; lappend parmList {StringConcatenator_6}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_6 INPUT FEATURE_TYPE PointCloudExpressionEvaluator_12_RESULT OUTPUT FEATURE_TYPE StringConcatenator_6_OUTPUT @Tcl2("StringConcatenator_6_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_7 WRITER_TYPE LAS WRITER_DATASET c:Trabajo_Anaproceso_las_riojasalida_classify WRITER_SETTINGS RUNTIME_MACROS,COMPRESSIONLAZUSER_GROUPDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATUREFIXED_COMPONENTSVERSION1.2FIXED_GROUPUSER_COMPONENTScat_sio,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,DESTINATION_DATASETTYPE_VALIDATION,Yes,VERSION,1.2,COORDINATE_SYSTEM_GRANULARITY,FEATURE,USER_COMPONENTS,cat_sio DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE StringConcatenator_6_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_7)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_7_SUMMARY # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_5_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose6"}; }; lappend parmList {StringConcatenator_5}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_5 INPUT FEATURE_TYPE PointCloudFilter_6 OUTPUT FEATURE_TYPE StringConcatenator_5_OUTPUT @Tcl2("StringConcatenator_5_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_5 INPUT FEATURE_TYPE StringConcatenator_5_OUTPUT OUTPUT FEATURE_TYPE PointCloudComponentAdder_5_OUTPUT @AddPointCloudComponents(cat_sio,Int32,"@EvaluateExpression(FDIV,STRING_ENCODED,Valuecat_sio,PointCloudComponentAdder_5)") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_6 WRITER_TYPE LAS WRITER_DATASET C:Trabajo_Anaproceso_las_riojatemp WRITER_SETTINGS RUNTIME_MACROS,VERSION1.2COMPRESSIONLAZFIXED_GROUPFIXED_COMPONENTSUSER_GROUPUSER_COMPONENTScat_sioDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATURE,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,DESTINATION_DATASETTYPE_VALIDATION,Yes,COORDINATE_SYSTEM_GRANULARITY,FEATURE,VERSION,1.2,USER_COMPONENTS,cat_sio DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE PointCloudComponentAdder_5_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_6)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_6_SUMMARY # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_7 INPUT FEATURE_TYPE FeatureWriter_6_SUMMARY SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeimportfmeobjectsfromsubprocessimportcall#TemplateFunctioninterface:#Whenusingthisfunctionmakesureitsnameissetasthevalueof#theClassorFunctiontoProcessFeaturestransformerparameterdefprocessFeaturefeature:fichero_entrada=feature.getAttribute_feature_type0.name+.lazruta_fichero_entrada=c:Trabajo_Anaproceso_las_riojatemp+fichero_entradaruta_salida_ground=c:Trabajo_Anaproceso_las_riojasalida_groundruta_salida_height=c:Trabajo_Anaproceso_las_riojasalida_heightruta_salida_classify=c:Trabajo_Anaproceso_las_riojasalida_classifyruta_fichero_entrada=ruta_fichero_entrada.replaceprintruta_fichero_entradanum_cores=3#lasgroundargumento=lasground-i+ruta_fichero_entradaargumento+=-odir+ruta_salida_groundargumento+=-olazargumento+=-step30argumento+=-stddev1argumento+=-offset0.05argumento+=-spike0.5argumento+=-ignore_class712argumento+=-non_ground_unchanged#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printgroundcorrectoelse:printgroundfallido#lasheightargumento=lasheight-i+ruta_salida_ground+fichero_entradaargumento+=-odir+ruta_salida_heightargumento+=-olazargumento+=-classify_below-0.57argumento+=-classify_above100.07argumento+=-classify_between00.53argumento+=-classify_between0.534argumento+=-classify_between3100.05argumento+=-ignore_class712argumento+=-store_in_user_data#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printheightcorrectoelse:printheightfallido#lasclassifyargumento=lasclassify-i+ruta_salida_height+fichero_entradaargumento+=-odir+ruta_salida_classifyargumento+=-olazargumento+=-step2argumento+=-planar0.3argumento+=-ground_offset3argumento+=-ignore_class712#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printclassifycorrectoelse:printclassifyfallidopass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_7_OUTPUT # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_4_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose4"}; }; lappend parmList {StringConcatenator_4}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_4 INPUT FEATURE_TYPE PointCloudFilter_4 OUTPUT FEATURE_TYPE StringConcatenator_4_OUTPUT @Tcl2("StringConcatenator_4_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_2 INPUT FEATURE_TYPE StringConcatenator_4_OUTPUT OUTPUT FEATURE_TYPE PointCloudComponentAdder_2_OUTPUT @AddPointCloudComponents(cat_sio,Int32,"@EvaluateExpression(FDIV,STRING_ENCODED,Valuecat_sio,PointCloudComponentAdder_2)") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_5 WRITER_TYPE LAS WRITER_DATASET C:Trabajo_Anaproceso_las_riojatemp WRITER_SETTINGS RUNTIME_MACROS,VERSION1.2COMPRESSIONLAZFIXED_GROUPFIXED_COMPONENTSUSER_GROUPUSER_COMPONENTScat_sioDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATURE,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,DESTINATION_DATASETTYPE_VALIDATION,Yes,COORDINATE_SYSTEM_GRANULARITY,FEATURE,VERSION,1.2,USER_COMPONENTS,cat_sio DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE PointCloudComponentAdder_2_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_5)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_5_SUMMARY # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_5 INPUT FEATURE_TYPE FeatureWriter_5_SUMMARY SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeimportfmeobjectsfromsubprocessimportcall#TemplateFunctioninterface:#Whenusingthisfunctionmakesureitsnameissetasthevalueof#theClassorFunctiontoProcessFeaturestransformerparameterdefprocessFeaturefeature:fichero_entrada=feature.getAttribute_feature_type0.name+.lazruta_fichero_entrada=c:Trabajo_Anaproceso_las_riojatemp+fichero_entradaruta_salida_ground=c:Trabajo_Anaproceso_las_riojasalida_groundruta_salida_height=c:Trabajo_Anaproceso_las_riojasalida_heightruta_salida_classify=c:Trabajo_Anaproceso_las_riojasalida_classifyruta_fichero_entrada=ruta_fichero_entrada.replaceprintruta_fichero_entradanum_cores=3#lasgroundargumento=lasground-i+ruta_fichero_entradaargumento+=-odir+ruta_salida_groundargumento+=-olazargumento+=-step8argumento+=-stddev1argumento+=-offset0.05argumento+=-spike1argumento+=-ignore_class712argumento+=-non_ground_unchanged#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printgroundcorrectoelse:printgroundfallido#lasheightargumento=lasheight-i+ruta_salida_ground+fichero_entradaargumento+=-odir+ruta_salida_heightargumento+=-olazargumento+=-classify_below-0.57argumento+=-classify_above100.07argumento+=-classify_between00.53argumento+=-classify_between0.534argumento+=-classify_between3100.05argumento+=-ignore_class712argumento+=-store_in_user_data#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printheightcorrectoelse:printheightfallido#lasclassifyargumento=lasclassify-i+ruta_salida_height+fichero_entradaargumento+=-odir+ruta_salida_classifyargumento+=-olazargumento+=-step2argumento+=-planar0.1argumento+=-ground_offset2argumento+=-ignore_class712#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printclassifycorrectoelse:printclassifyfallidopass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_5_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_2 INPUT FEATURE_TYPE PointCloudFilter_3 MODE FILTER FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Valuecity==1 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST city1 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_2_POINTCLOUDFILTERINPUTLINE_0 FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_2_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_2_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = city1 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_2_city1 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_2_POINTCLOUDFILTERINPUTLINE_1 FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_2_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_2_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_2_ @RemoveAttributes(__pc_internal_filter_attribute__) # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_7_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose3"}; }; lappend parmList {StringConcatenator_7}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_7 INPUT FEATURE_TYPE PointCloudFilter_2_ OUTPUT FEATURE_TYPE StringConcatenator_7_OUTPUT @Tcl2("StringConcatenator_7_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_6 INPUT FEATURE_TYPE StringConcatenator_7_OUTPUT OUTPUT FEATURE_TYPE PointCloudComponentAdder_6_OUTPUT @AddPointCloudComponents(cat_sio,Int32,"@EvaluateExpression(FDIV,STRING_ENCODED,Valuecat_sio,PointCloudComponentAdder_6)") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_8 WRITER_TYPE LAS WRITER_DATASET C:Trabajo_Anaproceso_las_riojatemp WRITER_SETTINGS RUNTIME_MACROS,COMPRESSIONLAZUSER_GROUPDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATUREFIXED_COMPONENTSVERSION1.2FIXED_GROUPFME_DISCLOSURE_CLOSEDUSER_COMPONENTScat_sio,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,COORDINATE_SYSTEM_GRANULARITY,FEATURE,DESTINATION_DATASETTYPE_VALIDATION,Yes,USER_COMPONENTS,cat_sio,FIXED_GROUP,FME_DISCLOSURE_CLOSED,VERSION,1.2 DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE PointCloudComponentAdder_6_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_8)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_8_SUMMARY # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_8 INPUT FEATURE_TYPE FeatureWriter_8_SUMMARY SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeimportfmeobjectsfromsubprocessimportcall#TemplateFunctioninterface:#Whenusingthisfunctionmakesureitsnameissetasthevalueof#theClassorFunctiontoProcessFeaturestransformerparameterdefprocessFeaturefeature:fichero_entrada=feature.getAttribute_feature_type0.name+.lazruta_fichero_entrada=c:Trabajo_Anaproceso_las_riojatemp+fichero_entradaruta_salida_ground=c:Trabajo_Anaproceso_las_riojasalida_groundruta_salida_height=c:Trabajo_Anaproceso_las_riojasalida_heightruta_salida_classify=c:Trabajo_Anaproceso_las_riojasalida_classifyruta_fichero_entrada=ruta_fichero_entrada.replaceprintruta_fichero_entradanum_cores=3#lasgroundargumento=lasground-i+ruta_fichero_entradaargumento+=-odir+ruta_salida_groundargumento+=-olazargumento+=-step10argumento+=-stddev1argumento+=-offset0.05argumento+=-spike1argumento+=-ignore_class712argumento+=-non_ground_unchanged#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printgroundcorrectoelse:printgroundfallido#lasheightargumento=lasheight-i+ruta_salida_ground+fichero_entradaargumento+=-odir+ruta_salida_heightargumento+=-olazargumento+=-classify_below-0.57argumento+=-classify_above100.07argumento+=-classify_between00.53argumento+=-classify_between0.534argumento+=-classify_between3100.05argumento+=-ignore_class712argumento+=-store_in_user_data#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printheightcorrectoelse:printheightfallido#lasclassifyargumento=lasclassify-i+ruta_salida_height+fichero_entradaargumento+=-odir+ruta_salida_classifyargumento+=-olazargumento+=-step2argumento+=-planar0.1argumento+=-ground_offset2argumento+=-ignore_class712#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printclassifycorrectoelse:printclassifyfallidopass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_8_OUTPUT # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_3_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose31"}; }; lappend parmList {StringConcatenator_3}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_3 INPUT FEATURE_TYPE PointCloudFilter_2_city1 OUTPUT FEATURE_TYPE StringConcatenator_3_OUTPUT @Tcl2("StringConcatenator_3_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder INPUT FEATURE_TYPE StringConcatenator_3_OUTPUT OUTPUT FEATURE_TYPE PointCloudComponentAdder_OUTPUT @AddPointCloudComponents(cat_sio,Int32,"@EvaluateExpression(FDIV,STRING_ENCODED,Valuecat_sio,PointCloudComponentAdder)") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_4 WRITER_TYPE LAS WRITER_DATASET C:Trabajo_Anaproceso_las_riojatemp WRITER_SETTINGS RUNTIME_MACROS,VERSION1.2COMPRESSIONLAZFIXED_GROUPFME_DISCLOSURE_CLOSEDFIXED_COMPONENTSUSER_GROUPUSER_COMPONENTScat_sioDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATURE,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,DESTINATION_DATASETTYPE_VALIDATION,Yes,COORDINATE_SYSTEM_GRANULARITY,FEATURE,VERSION,1.2,FIXED_GROUP,FME_DISCLOSURE_CLOSED,USER_COMPONENTS,cat_sio DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE PointCloudComponentAdder_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_4)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_4_SUMMARY # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_4 INPUT FEATURE_TYPE FeatureWriter_4_SUMMARY SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeimportfmeobjectsfromsubprocessimportcall#TemplateFunctioninterface:#Whenusingthisfunctionmakesureitsnameissetasthevalueof#theClassorFunctiontoProcessFeaturestransformerparameterdefprocessFeaturefeature:fichero_entrada=feature.getAttribute_feature_type0.name+.lazruta_fichero_entrada=c:Trabajo_Anaproceso_las_riojatemp+fichero_entradaruta_salida_ground=c:Trabajo_Anaproceso_las_riojasalida_groundruta_salida_height=c:Trabajo_Anaproceso_las_riojasalida_heightruta_salida_classify=c:Trabajo_Anaproceso_las_riojasalida_classifyruta_fichero_entrada=ruta_fichero_entrada.replaceprintruta_fichero_entradanum_cores=3#lasgroundargumento=lasground_new-i+ruta_fichero_entradaargumento+=-odir+ruta_salida_groundargumento+=-olazargumento+=-step25argumento+=-stddev1argumento+=-offset0.05argumento+=-spike0.50argumento+=-ignore_class712argumento+=-non_ground_unchanged#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printgroundcorrectoelse:printgroundfallido#lasheightargumento=lasheight-i+ruta_salida_ground+fichero_entradaargumento+=-odir+ruta_salida_heightargumento+=-olazargumento+=-classify_below-0.57argumento+=-classify_above100.07argumento+=-classify_between00.53argumento+=-classify_between0.534argumento+=-classify_between3100.05argumento+=-ignore_class712argumento+=-store_in_user_data#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printheightcorrectoelse:printheightfallido#lasclassifyargumento=lasclassify-i+ruta_salida_height+fichero_entradaargumento+=-odir+ruta_salida_classifyargumento+=-olazargumento+=-step2argumento+=-planar0.1argumento+=-ground_offset2argumento+=-ignore_class712#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printclassifycorrectoelse:printclassifyfallidopass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_4_OUTPUT # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_2_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose2_5"}; }; lappend parmList {StringConcatenator_2}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_2 INPUT FEATURE_TYPE PointCloudFilter_5 INPUT FEATURE_TYPE PointCloudFilter_2 OUTPUT FEATURE_TYPE StringConcatenator_2_OUTPUT @Tcl2("StringConcatenator_2_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_3 INPUT FEATURE_TYPE StringConcatenator_2_OUTPUT OUTPUT FEATURE_TYPE PointCloudComponentAdder_3_OUTPUT @AddPointCloudComponents(cat_sio,Int32,"@EvaluateExpression(FDIV,STRING_ENCODED,Valuecat_sio,PointCloudComponentAdder_3)") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_3 WRITER_TYPE LAS WRITER_DATASET C:Trabajo_Anaproceso_las_riojatemp WRITER_SETTINGS RUNTIME_MACROS,VERSION1.2COMPRESSIONLAZFIXED_GROUPFIXED_COMPONENTSUSER_GROUPUSER_COMPONENTScat_sioDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATURE,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,DESTINATION_DATASETTYPE_VALIDATION,Yes,COORDINATE_SYSTEM_GRANULARITY,FEATURE,VERSION,1.2,USER_COMPONENTS,cat_sio DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE PointCloudComponentAdder_3_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_3)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_3_SUMMARY # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_3 INPUT FEATURE_TYPE FeatureWriter_3_SUMMARY SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeimportfmeobjectsfromsubprocessimportcall#TemplateFunctioninterface:#Whenusingthisfunctionmakesureitsnameissetasthevalueof#theClassorFunctiontoProcessFeaturestransformerparameterdefprocessFeaturefeature:fichero_entrada=feature.getAttribute_feature_type0.name+.lazruta_fichero_entrada=c:Trabajo_Anaproceso_las_riojatemp+fichero_entradaruta_salida_ground=c:Trabajo_Anaproceso_las_riojasalida_groundruta_salida_height=c:Trabajo_Anaproceso_las_riojasalida_heightruta_salida_classify=c:Trabajo_Anaproceso_las_riojasalida_classifyruta_fichero_entrada=ruta_fichero_entrada.replaceprintruta_fichero_entradanum_cores=3#lasgroundargumento=lasground-i+ruta_fichero_entradaargumento+=-odir+ruta_salida_groundargumento+=-olazargumento+=-step10argumento+=-stddev1argumento+=-offset0.05argumento+=-spike1argumento+=-ignore_class712argumento+=-non_ground_unchanged#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printgroundcorrectoelse:printgroundfallido#lasheightargumento=lasheight-i+ruta_salida_ground+fichero_entradaargumento+=-odir+ruta_salida_heightargumento+=-olazargumento+=-classify_below-0.57argumento+=-classify_above100.07argumento+=-classify_between00.53argumento+=-classify_between0.534argumento+=-classify_between3100.05argumento+=-ignore_class712argumento+=-store_in_user_data#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printheightcorrectoelse:printheightfallido#lasclassifyargumento=lasclassify-i+ruta_salida_height+fichero_entradaargumento+=-odir+ruta_salida_classifyargumento+=-olazargumento+=-step3argumento+=-planar0.1argumento+=-ground_offset2argumento+=-ignore_class712#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printclassifycorrectoelse:printclassifyfallidopass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_3_OUTPUT # ------------------------------------------------------------------------- Tcl2 proc StringConcatenator_evaluator {} { if {{OUTGOING} == {OUTGOING}} { set attr [FME_DecodeText {_filename}]; if {[string length $attr] == 0} { return; }; set attrs [list [FME_EncodeText $attr]]; } else { set attrAll {}; if {[string length $attrAll] == 0} { return; }; set attrs [split {} { }]; }; set parmList {{EvaluateExpression} {ATTR_CREATE_EXPR_PROPOGATE_MISSING_FDIV}}; foreach attr $attrs { lappend parmList $attr; lappend parmList {"Valuefme_basename_siose1"}; }; lappend parmList {StringConcatenator}; eval FME_Execute $parmList; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator INPUT FEATURE_TYPE PointCloudFilter_1 OUTPUT FEATURE_TYPE StringConcatenator_OUTPUT @Tcl2("StringConcatenator_evaluator ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_4 INPUT FEATURE_TYPE StringConcatenator_OUTPUT OUTPUT FEATURE_TYPE PointCloudComponentAdder_4_OUTPUT @AddPointCloudComponents(cat_sio,Int32,"@EvaluateExpression(FDIV,STRING_ENCODED,Valuecat_sio,PointCloudComponentAdder_4)") # ------------------------------------------------------------------------- FACTORY_DEF * WriterFactory FACTORY_NAME FeatureWriter_2 WRITER_TYPE LAS WRITER_DATASET C:Trabajo_Anaproceso_las_riojatemp WRITER_SETTINGS RUNTIME_MACROS,VERSION1.2COMPRESSIONLAZFIXED_GROUPFIXED_COMPONENTSUSER_GROUPUSER_COMPONENTScat_sioDESTINATION_DATASETTYPE_VALIDATIONYesCOORDINATE_SYSTEM_GRANULARITYFEATURE,METAFILE,LAS WRITER_FEATURE_TYPES WRITER_METAFILE_INFO,ATTRIBUTE_CASE,ANY,ATTRIBUTE_INVALID_CHARS,.%-#!?*+,ATTRIBUTE_LENGTH,60,ATTR_TYPE_MAP,charwidthfme_varcharwidthcharwidthfme_varbinarywidthcharwidthfme_charwidthcharwidthfme_binarywidthchar254fme_bufferchar254fme_binarybufferchar254fme_xmlchar254fme_jsonchar20fme_datetimechar12fme_timedatefme_datenumber3115fme_real64number157fme_real32number110fme_int32number110fme_uint32number200fme_int64number200fme_uint64logicalfme_booleannumber60fme_int16number60fme_uint16number40fme_int8number40fme_uint8numberwidthdecimalfme_decimalwidthdecimal,DEST_ILLEGAL_ATTR_LIST,,FEATURE_TYPE_CASE,ANY,FEATURE_TYPE_INVALID_CHARS,,FEATURE_TYPE_LENGTH,0,FEATURE_TYPE_LENGTH_INCLUDES_PREFIX,false,FEATURE_TYPE_RESERVED_WORDS,,FORMAT_NAME,LAS,GEOM_MAP,las_point_cloudfme_point_cloudfme_no_mapfme_pointfme_no_mapfme_textfme_no_mapfme_linefme_no_mapfme_arcfme_no_mapfme_polygonfme_no_mapfme_ellipsefme_no_mapfme_rectanglefme_no_mapfme_rounded_rectanglefme_no_mapfme_no_geomfme_no_mapfme_rasterfme_no_mapfme_solidfme_no_mapfme_surfacefme_no_mapfme_feature_tablefme_no_mapfme_collection,READER_ATTR_INDEX_TYPES,,SOURCE,no,SUPPORTS_FEAT_TYPE_FANOUT,yes,SUPPORTS_MULTI_GEOM,yes,WORKBENCH_CANNED_SCHEMA,,WRITER,LAS,WRITER_ATTR_INDEX_TYPES,,WRITER_DEFLINE_PARMS,,WRITER_DEF_LINE_TEMPLATE,FME_GEN_GROUP_NAME,WRITER_FORMAT_PARAMETER,AUTO_FANOUT_ATTRIBUTEfme_basenameREADER_AUTO_EXPOSEfme_basenamechar50DATASET_NAMElasfileFEATURE_TYPE_NAMELASFileFEATURE_TYPE_DEFAULT_NAMEFile1READER_DATASET_HINTSelecttheLASfilesWRITER_DATASET_HINTSpecifyafolderfortheLASfile,WRITER_HAS_DEFLINE_ATTRS,no;Value_filename:File1,ftp_feature_type_name_exp,Value_filename,ftp_writer,LAS,ftp_dynamic_schema,no,ftp_dynamic_feature_type_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_geometry_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_def_name_type,DYN_SCHEMA_PROP_AUTO,ftp_dynamic_schema_sources,ltUnusedgt,ftp_format_attributes,fme_basename WRITER_PARAMS COMPRESSION,LAZ,DESTINATION_DATASETTYPE_VALIDATION,Yes,COORDINATE_SYSTEM_GRANULARITY,FEATURE,VERSION,1.2,USER_COMPONENTS,cat_sio DATASET_ATTR _dataset FEATURE_TYPE_LIST_ATTR _feature_type TOTAL_FEATURES_WRITTEN_ATTR _total_features_written INPUT File1 FEATURE_TYPE PointCloudComponentAdder_4_OUTPUT @FeatureType(ENCODED,@EvaluateExpression(FDIV,STRING_ENCODED,Value_filename,FeatureWriter_2)) @SupplyAttributes(ENCODED,fme_template_feature_type,File1) OUTPUT SUMMARY FEATURE_TYPE FeatureWriter_2_SUMMARY # ------------------------------------------------------------------------- FME_PYTHON_PATH "$(FME_MF_DIR)" FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_2 INPUT FEATURE_TYPE FeatureWriter_2_SUMMARY SYMBOL_NAME processFeature PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeimportfmeobjectsfromsubprocessimportcall#TemplateFunctioninterface:#Whenusingthisfunctionmakesureitsnameissetasthevalueof#theClassorFunctiontoProcessFeaturestransformerparameterdefprocessFeaturefeature:fichero_entrada=feature.getAttribute_feature_type0.name+.lazruta_fichero_entrada=c:Trabajo_Anaproceso_las_riojatemp+fichero_entradaruta_salida_ground=c:Trabajo_Anaproceso_las_riojasalida_groundruta_salida_height=c:Trabajo_Anaproceso_las_riojasalida_heightruta_salida_classify=c:Trabajo_Anaproceso_las_riojasalida_classifyruta_fichero_entrada=ruta_fichero_entrada.replaceprintruta_fichero_entradanum_cores=3#lasgroundargumento=lasground-i+ruta_fichero_entradaargumento+=-odir+ruta_salida_groundargumento+=-olazargumento+=-step5argumento+=-stddev1argumento+=-offset0.2argumento+=-spike0.50argumento+=-fineargumento+=-ignore_class712argumento+=-non_ground_unchanged#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printgroundcorrectoelse:printgroundfallido#lasheightargumento=lasheight-i+ruta_salida_ground+fichero_entradaargumento+=-odir+ruta_salida_heightargumento+=-olazargumento+=-classify_below-0.57argumento+=-classify_above100.07argumento+=-classify_between00.53argumento+=-classify_between0.534argumento+=-classify_between3100.05argumento+=-ignore_class712argumento+=-store_in_user_data#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printheightcorrectoelse:printheightfallido#lasclassifyargumento=lasclassify-i+ruta_salida_height+fichero_entradaargumento+=-odir+ruta_salida_classifyargumento+=-olazargumento+=-step2argumento+=-planar0.4argumento+=-ground_offset2argumento+=-ignore_class712#argumento+=-cores+strnum_coresresultado=callargumentoifresultado==0:printclassifycorrectoelse:printclassifyfallidopass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_2_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * SortFactory FACTORY_NAME FeatureHolder INPUT FEATURE_TYPE PythonCaller_3_OUTPUT INPUT FEATURE_TYPE PythonCaller_4_OUTPUT INPUT FEATURE_TYPE PythonCaller_5_OUTPUT INPUT FEATURE_TYPE PythonCaller_2_OUTPUT INPUT FEATURE_TYPE PythonCaller_7_OUTPUT INPUT FEATURE_TYPE FeatureWriter_7_SUMMARY INPUT FEATURE_TYPE PythonCaller_8_OUTPUT OUTPUT SORTED FEATURE_TYPE FeatureHolder_OUTPUT # ------------------------------------------------------------------------- # Create the DomainName that this transformer will use. # Because @Count itself will evalute the expression to calculate the # domain, we don't need to do anything in Tcl per feature going by INCLUDE [ set domainPrefix {}; if { {Global} == {Local} } { set domainPrefix [FME_EncodeText {Counter_}]; }; puts "MACRO Counter_FULL_DOMAIN ${domainPrefix}counter"; ] FACTORY_DEF * TeeFactory FACTORY_NAME Counter_Counter INPUT FEATURE_TYPE FeatureHolder_OUTPUT @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) OUTPUT FEATURE_TYPE ___TOREJECTOR___ "_count" @Count(REJECTABLE,fme_encoded,$(Counter_FULL_DOMAIN),"1") FACTORY_DEF * TestFactory FACTORY_NAME Counter_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT PASSED FEATURE_TYPE Counter_ @RemoveAttributes(___fme_rejection_code___) OUTPUT FAILED FEATURE_TYPE Counter_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) FACTORY_DEF * TeeFactory FACTORY_NAME "Counter Output Nuker" INPUT FEATURE_TYPE Counter_ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeFilter INPUT FEATURE_TYPE Counter_OUTPUT OUTPUT FEATURE_TYPE AttributeFilter_FILTER FACTORY_DEF * AttributeFilterFactory FACTORY_NAME AttributeFilter_Filter COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE AttributeFilter_FILTER FILTER_ATTRIBUTE _count FILTER_VALUES EMPTY MISSING NULL UNFILTERED 1 OUTPUT EMPTY FEATURE_TYPE AttributeFilter_ OUTPUT MISSING FEATURE_TYPE AttributeFilter_ OUTPUT NULL FEATURE_TYPE AttributeFilter_ OUTPUT UNFILTERED FEATURE_TYPE AttributeFilter_ OUTPUT 1 FEATURE_TYPE AttributeFilter_1 FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeFilter Output Nuker" INPUT FEATURE_TYPE AttributeFilter_ FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeFilter Output Nuker" INPUT FEATURE_TYPE AttributeFilter_ FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeFilter Output Nuker" INPUT FEATURE_TYPE AttributeFilter_ FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeFilter Output Nuker" INPUT FEATURE_TYPE AttributeFilter_ # ------------------------------------------------------------------------- # Convert the workspace name to one containing only / -- Tcl likes this better # (and so do I) # And determine the "NULL" device so we can ensure we don't get stray output # messing up our stdout if we are running workspaces in the background # See http://wiki.tcl.tk/1649 for a description of the tcl_platform # variable, the "platform" part seems to have valid values windows, unix, and # macintosh (the latter of which is actually pre-OS X) Tcl2 if { $tcl_platform(platform) == {windows} } { set ::null_device {NUL:}; set ::__WR_ENV_HELPER__ {}; } else { set ::null_device {/dev/null}; set ::__WR_ENV_HELPER__ {/usr/bin/env FME_SUBPROCESS_RUN_DETACHED=1} }; Tcl2 proc WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_runner { parmListString workspaceFile } { set workspaceFileUnix [regsub -all {\\} $workspaceFile {/}]; set parmListString [string range $parmListString 1 end-1]; set comment { Build up the command line in a list, which we'll "eval" to get at its pieces when we actually execute the "exec". }; lappend commandArguments {*}$::__WR_ENV_HELPER__ {$(FME_HOME_UNIX)/fme} $workspaceFileUnix; set parmList [split $parmListString {,}]; set comment { At the same time, remember the TYPES for each of the parameters so we can avoid logging any passwords in plain text (PR 64546) }; set parmTypes [split {MULTIFILE,MULTIFILE,DIRNAME} {,}]; set comment { Note that foreach can walk thorugh more than one list at a time. If the lists were ever out of sync (had different #s of entries, which should be impossible) the iteration continues with the shorter list return an empty string. So we should be okay }; set commandArgumentsToLog $commandArguments; foreach {parmName encodedValue} $parmList parmType $parmTypes { set comment { Decode the parameter value which we now know is very encoded to guard it from the parser and append them each to a new list which will be passed as the arguments to the exec function. Note that the parameter names need to be turned into macro settings by prepending them with -- Note also that the WorkspaceRunner sometimes encodes attribute dereferences by placing at the beginning rather than using @Value. Further note that string range forgives if the ending index is > the length of the string, so we can just ask for the first 5 characters when we're checking for . }; lappend commandArguments \"--$parmName\"; lappend commandArgumentsToLog \"--$parmName\"; set comment { for backwards compatibility, replace first }; if { [string range $encodedValue 0 4] == {} && [string length $encodedValue] > 5 } { set encodedValue [string replace $encodedValue 0 4 {Value}]]; append encodedValue ""; }; set comment { We used to call FME_DecodeTextOrAttr here. After changes to the code that writes out the mapping file section, we don't need to do this any more because the value would be in the correct state of encoding as required by the child workspace }; set comment { parameter values starting with '<' causes tcl exec to fail so we escape leading '<' with backslash and then do the reverse when parsing command line arguments }; if { [string index $encodedValue 0] == {<} } { set encodedValue "\\$encodedValue"; }; lappend commandArguments $encodedValue; set comment { Ensure that passwords are not added into the logmessage (PR 64546) We'll guard against both PASSWORD and PASSWORD_CONFIRM GUI types by checking if the word PASSWORD is in the GUI TYPE at all }; if { [string first {PASSWORD} $parmType] != -1 } { lappend commandArgumentsToLog {***}; } else { lappend commandArgumentsToLog $encodedValue; }; }; set comment { Now optionally run this in a detached way if we were not supposed to wait by adding & on the end to put it in the background. And at the same time, ensure that any stray stdout/stderr is routed to null. }; if { {Yes} == {No} } { lappend commandArguments \">$::null_device\"; lappend commandArgumentsToLog \">$::null_device\"; lappend commandArguments \"<$::null_device\"; lappend commandArgumentToLogs \"<$::null_device\"; FME_LogMessage fme_inform \"WorkspaceRunner: Initiating run of FME Workspace $workspaceFile with command line:\"; } else { FME_LogMessage fme_inform \"WorkspaceRunner: Running FME Workspace $workspaceFile with command line:\"; }; set comment { The below 2>@1 forces any standard error output to go into the msg variable or to NULL if we're running in the background. }; lappend commandArguments {2>@1}; lappend commandArgumentsToLog {2>@1}; if { {Yes} == {No} } { lappend commandArguments {&}; lappend commandArgumentsToLog {&}; }; FME_LogMessage fme_inform [concat WorkspaceRunner: $commandArgumentsToLog]; if { {Yes} == {No} } { after 1000; while { [FME_CanSpawnFme ] == {0} } { after 2000; }; }; if {[catch {eval [concat exec $commandArguments] } msg ]} { set msg [regsub {\015*\012child[^\012]*$} $msg {}]; FME_LogMessage fme_warn \"WorkspaceRunner: Failed to run workspace $workspaceFileUnix -- Trace was:\n\n$msg\n\"; FME_SetAttribute _failure_message $msg; return FAILURE; } else { global WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_process_count; incr WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_process_count; if { {Yes} == {No} } { FME_LogMessage fme_inform \"WorkspaceRunner: Successfully initiated run of workspace $workspaceFile\"; global WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_all_processes; lappend WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_all_processes $msg; } else { FME_LogMessage fme_inform \"WorkspaceRunner: Successfully ran workspace $workspaceFile\"; }; return SUCCESS; }; } FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_ExecutorAndRouter INPUT FEATURE_TYPE AttributeFilter_1 TEST @Tcl2("WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_runner {(SourceDataset_LAS,D:\*.laz,SourceDataset_ESRISHAPE,D:\siose_lidar_ccaa_cuadricula_lidar.shp,DestDataset_LAS,D:\salida_classify_merge)} {@EvaluateExpression(FDIV,STRING,$(FME_MF_DIR$encode)lidar_process_eliminar_buffer.fmw,WorkspaceRunner)}") == SUCCESS OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_SUCCEEDED Tcl2 proc WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_summarizer { } { global WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_process_count; set comment { incr 0 creates the variable if it wasn't present }; incr WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_process_count 0; FME_SetAttribute _proc_count [set WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_process_count]; global WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_all_processes; if {[info exists WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_all_processes]} { set index 0; foreach pid [set WorkspaceRunner_1702e61a_4b33_47df_9468_52ad7478298a0_all_processes] { FME_SetAttribute \"_processes{$index}\" $pid; incr index; } } } FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_SummaryMaker CREATE_AT_END yes FACTORY_DEF * TeeFactory FACTORY_NAME "WorkspaceRunner_SUCCEEDED Disabled Nuker -1 132" INPUT FEATURE_TYPE WorkspaceRunner_SUCCEEDED # ------------------------------------------------------------------------- # The default behaviour is to abort on any feature entering the transformer. # If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", # then the features will instead be passed through with a feature type of # __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or # somesuch. DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TestFactory FACTORY_NAME Terminator INPUT FEATURE_TYPE WorkspaceRunner_SUCCEEDED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"Translation Terminated") @SupplyAttributes(_wb_termination_xformer,"Terminator") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"Translation Terminated") # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC __WB_BYPASS_TERMINATOR__ Tcl2FME_StatMessage818062Value_wb_termination_messageValue_wb_termination_xformer818063 TO FME_GENERIC __WB_BYPASS_TERMINATOR__ __wb_out_feat_type__,__WB_BYPASS_TERMINATOR__ 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__