#!#! #! #! #!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#!#!#! #!#!#!#! #!#! #!#!#!#!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#!#! #!#! #!#!FME_PYTHON_VERSION 27 GUI忽略SourceDataset_TEXTLINE_1,TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1,TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1,TEXTLINE_IN_SKIP_LINES_TEXTLINE_1,TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1,TEXTLINE_IN_ENCODING_TEXTLINE_1,TEXTLINE_IN_EXPOSE_ATTRS_GROUP_TEXTLINE_1,TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1,DestDataset_TEXTLINE_2,TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_2,TEXTLINE_OUT_END_OF_LINE_TEXTLINE_2,TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_2,TEXTLINE_OUT_ENCODING_TEXTLINE_2,TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_2,TEXTLINE_OUT_MIME_TYPE_TEXTLINE_2 DEFAULT_MACRO SourceDataset_TEXTLINE $(FME_MF_DIR)coordlist.txt GUI的多文件SourceDataset_TEXTLINE文/ Compressed_Text_Files(*。.TXT; * txt.gz)| * .TXT; *。txt.gz | TEXT_FILES(* TXT)| * .TXT | Compressed_Text_Files(* txt.gz)| * .txt.gz | All_files(*)| *源文本文件(S):DEFAULT_MACRO FEATURE_TYPES GUI可选FEATURE_TYPES FEATURE_TYPES C: 用户 EXK562 桌面 测试 coordlist.txt,_FORMAT_OVERRIDE_,TEXTLINE,_DATASET_OVERRIDE_,SourceDataset_TEXTLINE,READ_WHOLE_FILE_AT_ONCE,NO,READ_BOTTOM_UP,不,SKIP_LINES,0,SKIP_FOOTER,0,DYNAMIC_W亚搏在线ORKFLOW,是的,_MERGE_SCHEMAS,YES,_MERGE_SCHEMAS,YES特征类型为:DEFAULT_MACRO DestDataset_TEXTLINE C:\用户\ EXK562 \桌面\的Result.txt GUI FILENAME DestDataset_TEXTLINE文本/ Compressed_Text_Files; | * .TXT(* TXT * txt.gz。); |(。* TXT)* txt.gz TEXT_FILES | * .TXT | Compressed_Text_Files(*。txt.gz)|*.txt.gz|All_files(*)|* Destination Text File: INCLUDE [ if {{$(SourceDataset_TEXTLINE)} == {}} { puts_real {Parameter 'SourceDataset_TEXTLINE' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(DestDataset_TEXTLINE)} == {}} { puts_real {Parameter 'DestDataset_TEXTLINE' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE TEXTLINE READER_KEYWORD TEXTLINE_1 READER_GEN_DIRECTIVES READ_BOTTOM_UP,No,SKIP_LINES,0,READ_WHOLE_FILE_AT_ONCE,NO,DYNAMIC_WORKFLOW,yes,_MERGE_SCHEMAS,YES,SKIP_FOOTER,0,EXPOSE_ATTRS_GROUP,,ENCODING,,TEXTLINE_EXPOSE_FORMAT_ATTRS, WRITER_TYPE MULTI_WRITER MULTI_WRITER_DATASET_ORDER BY_ID MULTI_WRITER_FIRST_WRITER_ID 0 MULTI_WRITER_TYPE{0} TEXTLINE MULTI_WRITER_KEYWORD{0} TEXTLINE_2 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "TEXTLINE_1" #! END_WB_HEADER #! START_SOURCE_HEADER TEXTLINE TEXTLINE_1 TEXTLINE_1_DYNAMIC_WORKFLOW YES # ===================================================================== # The following GUI line prompts for a file to be used as the source # TextLine 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_TEXTLINE_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER TEXTLINE TEXTLINE_1 DEFAULT_MACRO SourceDataset_TEXTLINE_1 $(SourceDataset_TEXTLINE) GUI MULTIFILE SourceDataset_TEXTLINE_1 Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*)|* Source Text File(s): DEFAULT_MACRO TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1 NO TEXTLINE_1_READ_WHOLE_FILE_AT_ONCE "$(TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1)" GUI ACTIVECHOICE TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1 YES,TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1,TEXTLINE_IN_SKIP_LINES_TEXTLINE_1,TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1%NO Read Whole File at Once: DEFAULT_MACRO TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1 No TEXTLINE_1_READ_BOTTOM_UP "$(TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1)" GUI CHOICE TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1 Yes%No Read Bottom Up: DEFAULT_MACRO TEXTLINE_IN_SKIP_LINES_TEXTLINE_1 0 TEXTLINE_1_SKIP_LINES "$(TEXTLINE_IN_SKIP_LINES_TEXTLINE_1)" GUI OPTIONAL INTEGER TEXTLINE_IN_SKIP_LINES_TEXTLINE_1 Number of Lines to Skip: DEFAULT_MACRO TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1 0 TEXTLINE_1_SKIP_FOOTER "$(TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1)" GUI OPTIONAL INTEGER TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1 Number of Footer Lines to Skip: # ===================================================================== # Allows to force the encoding of source text file DEFAULT_MACRO TEXTLINE_IN_ENCODING_TEXTLINE_1 TEXTLINE_1_ENCODING "$(TEXTLINE_IN_ENCODING_TEXTLINE_1)" GUI OPTIONAL STRING_OR_ENCODING TEXTLINE_IN_ENCODING_TEXTLINE_1 SYSTEM%* Character Encoding: # ===================================================================== # Allow dynamic exposing of FORMAT ATTRIBUTES on the schema DEFAULT_MACRO TEXTLINE_IN_EXPOSE_ATTRS_GROUP_TEXTLINE_1 TEXTLINE_1_EXPOSE_ATTRS_GROUP "$(TEXTLINE_IN_EXPOSE_ATTRS_GROUP_TEXTLINE_1)" GUI OPTIONAL DISCLOSUREGROUP TEXTLINE_IN_EXPOSE_ATTRS_GROUP_TEXTLINE_1 TEXTLINE_IN_TEXTLINE_EXPOSE_FORMAT_ATTRS Schema Attributes # =========================================================================== DEFAULT_MACRO TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1 TEXTLINE_1_NETWORK_AUTHENTICATION "$(TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1)" GUI OPTIONAL AUTHENTICATOR TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # =========================================================================== DEFAULT_MACRO TEXTLINE_IN_ATTRIBUTE_READING_TEXTLINE_1 ALL TEXTLINE_1_ATTRIBUTE_READING "$(TEXTLINE_IN_ATTRIBUTE_READING_TEXTLINE_1)" TEXTLINE_1_DATASET "$(SourceDataset_TEXTLINE_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "TEXTLINE_2" #! END_WB_HEADER #! START_DEST_HEADER TEXTLINE TEXTLINE_2 # ===================================================================== # The following GUI line prompts for a folder to be used as the # the destination for the TextLine files. 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_TEXTLINE_2 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER TEXTLINE TEXTLINE_2 DEFAULT_MACRO DestDataset_TEXTLINE_2 $(DestDataset_TEXTLINE) GUI FILENAME DestDataset_TEXTLINE_2 Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*)|* Destination Text File: # ===================================================================== # The following GUI line prompts for the overwrite flag. The default is # YES. Possible values are YES or NO. Any value other than NO or # no is interpreted as YES. DEFAULT_MACRO TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_2 YES TEXTLINE_2_OVERWRITE_FILE "$(TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_2)" GUI CHOICE TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_2 YES%NO Overwrite Existing File: # ===================================================================== # Set the type of encoding for the output file # ===================================================================== # Set line termination character DEFAULT_MACRO TEXTLINE_OUT_END_OF_LINE_TEXTLINE_2 System TEXTLINE_2_END_OF_LINE "$(TEXTLINE_OUT_END_OF_LINE_TEXTLINE_2)" GUI CHOICE TEXTLINE_OUT_END_OF_LINE_TEXTLINE_2 System%Windows%Unix%Macintosh%Source%None Line Termination: # ===================================================================== # Set whether to write the last line termination character DEFAULT_MACRO TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_2 YES TEXTLINE_2_WRITE_LAST_EOL "$(TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_2)" GUI CHOICE TEXTLINE_OUT_WRITE_LAST_EOL_TEXTLINE_2 YES%NO Write Last Line Terminator: DEFAULT_MACRO TEXTLINE_OUT_ENCODING_TEXTLINE_2 SYSTEM TEXTLINE_2_ENCODING "$(TEXTLINE_OUT_ENCODING_TEXTLINE_2)" GUI STRING_OR_ENCODING TEXTLINE_OUT_ENCODING_TEXTLINE_2 SYSTEM%* Character Encoding: # ===================================================================== # The following GUI line prompts for the overwrite flag. The default is # YES. Possible values are YES or NO. Any value other than NO or # no is interpreted as YES. DEFAULT_MACRO TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_2 YES TEXTLINE_2_WRITE_UTF8_BOM "$(TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_2)" GUI CHOICE TEXTLINE_OUT_WRITE_UTF8_BOM_TEXTLINE_2 YES%NO Write UTF Byte Order Mark # ===================================================================== # Set the mime type. Note -- it is actually only used inside of workspaces # as a FORMAT_PARAMETER which even then is parsed only by the FME Server # Repository Manager DEFAULT_MACRO TEXTLINE_OUT_MIME_TYPE_TEXTLINE_2 text/plain TEXTLINE_2_MIME_TYPE "$(TEXTLINE_OUT_MIME_TYPE_TEXTLINE_2)" GUI STRING_OR_CHOICE TEXTLINE_OUT_MIME_TYPE_TEXTLINE_2 application/json%application/octet-stream%application/xml%application/x-www-form-urlencoded%image/gif%image/jpeg%image/png%image/tiff%multipart/mixed%multipart/alternative%multipart/related%text/html%text/plain%text/xml MIME Type: # ============================================================================ # Opt in for destination dataset type vs format type validation DEFAULT_MACRO TEXTLINE_OUT_DESTINATION_DATASETTYPE_VALIDATION_TEXTLINE_2 Yes TEXTLINE_2_DESTINATION_DATASETTYPE_VALIDATION "$(TEXTLINE_OUT_DESTINATION_DATASETTYPE_VALIDATION_TEXTLINE_2)" TEXTLINE_2_DATASET "$(DestDataset_TEXTLINE_2)" #! END_DEST_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)SplitStringCoordinateExample.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_TEXTLINE_1 TEXTLINE_1 DEFAULT_MACRO DATASET_KEYWORD_TEXTLINE_2 TEXTLINE_2 # ------------------------------------------------------------------------- TEXTLINE_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- TEXTLINE_1_FEATURE_TYPES $(FEATURE_TYPES) MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME SplitStringCoordinateExample MACRO FME_VIEWER_APP fmedatainspector # ------------------------------------------------------------------------- INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD TEXTLINE_1 INPUT FEATURE_TYPE * ROUTE TEXTLINE TEXTLINE_1::text_line TO FME_GENERIC ::text_line ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * TEXTLINE_1_MERGE_DEF TEXTLINE_1::text_line GLOB * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "text_line (TEXTLINE_1) Splitter" INPUT FEATURE_TYPE text_line OUTPUT FEATURE_TYPE text_line_TEXTLINE_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc StringSearcher_721fb1c5_0752_4aa0_a422_c6b7b12e148015_doGrep { stringToSearch regExp matchedChars matches matchedParts } { set subMatches 1; set matches [FME_DecodeText $matches]; set matchedParts [FME_DecodeText $matchedParts]; set results [FME_GetRegex $(casemac) [FME_DecodeText $regExp] [FME_DecodeText $stringToSearch]]; if {[llength [lindex $results 0]] > 0} { set attrName [FME_DecodeText $matchedChars]; FME_SetAttribute $attrName [lindex [lindex [lindex $results 0] 0] 0]; set index 0; set parts [lindex $results 1]; foreach part $parts { if {[llength $matchedParts] > 0} { set attrName "$matchedParts{$index}.part"; FME_SetAttribute $attrName [lindex $part 0]; set attrName "$matchedParts{$index}.startIndex"; FME_SetAttribute $attrName [lindex $part 1]; }; incr index; }; set index 0; set regexMatches [lindex $results 0]; foreach part $regexMatches { if {[llength $matches] > 0} { set attrName "$matches{$index}.match"; FME_SetAttribute $attrName [lindex $part 0]; set attrName "$matches{$index}.startIndex"; FME_SetAttribute $attrName [lindex $part 1]; }; set isFirstMatch 0; incr index; }; return $index; }; return -1; } FACTORY_DEF * TestFactory FACTORY_NAME StringSearcher INPUT FEATURE_TYPE text_line_TEXTLINE_1 TEST @Tcl2("StringSearcher_721fb1c5_0752_4aa0_a422_c6b7b12e148015_doGrep {@EvaluateExpression(FDIV,STRING_ENCODED, text_line_data ,StringSearcher)} { d +} {_first_match} {matchList} {}“)> 0 OUTPUT PASSED FEATURE_TYPE StringSearcher_MATCHED#------------------------------------------------------------------------- FACTORY_DEF * ElementFactory FACTORY_NAME ListExploder INPUT FEATURE_TYPE StringSearcher_MATCHEDLIST_NAME “matchList {}” ELEMENT_NUMBER_FIELD “_element_index” CLONE_GEOMETRY ATTR_ACCUM_MODE “HANDLE_CONFLICT” ATTR_CONFLICT_RES “INCOMING_IF_CONFLICT” INCOMING_PREFIX“ “输出元件FEATURE_TYPE ListExploder_ELEMENTS @RemoveAttributes(ElementFactory.baseCloned)#------------------------------------------------------------------------- INCLUDE [看跌期权 “MACRO REAL_RATE [EXPR 4 * 1]”]FACTORY_DEF * SamplingFactory FACTORY_NAME采样SAMPLE_RATE $(REAL_RATE)SAMPLE_ORDER原始输入FEATURE_TYPE ListExploder_ELEMENTS输出端取样FEATURE_TYPE ___SAMPLED___需要输出NOT_SAMPLED FEATURE_TYPE Sampler_NOT_SAMPLED#这TeeFactory因为采样器将如果它有没有指定输出的条款。#我们的行为这种方式很好,即使仍然输出功能有变压器无输出连接。参见PR#28886。FACTORY_DEF * TeeFactory FACTORY_NAME Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___输出FEATURE_TYPE Sampler_SAMPLED#------------------------------------------------------------------------- MACROcasemac INCLUDE [如果{{NO} == {NO}} {{放MACRO casemac -nocase}}] TCL2 PROC StringReplacer_fee1a2a4_3a6a_4529_89f9_03661c74a4556_replacer {FINDTEXT replaceText一个InvalidValue} {设定ATTRS [分裂\ “匹配\”{,}];集findValue [FME_DecodeText $ FINDTEXT];集replaceValue [FME_DecodeText $ replaceText];的foreach ATTR $ ATTRS {设定attrVal [FME_GetAttribute $ ATTR];集NOMATCH真实的;如果{{NO} == {YES}} {设定newAttrVal [FME_ReplaceRegex $(casemac)$ $ findValue $ attrVal replaceValue];}否则{集newAttrVal [字符串映射$(casemac)[列表$ $ findValue replaceValue] $ attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer INPUT FEATURE_TYPE Sampler_SAMPLED OUTPUT FEATURE_TYPE StringReplacer_OUTPUT @Tcl2("StringReplacer_fee1a2a4_3a6a_4529_89f9_03661c74a4556_replacer {@EvaluateExpression(FDIV,STRING_ENCODED, 比赛 ,StringReplacer)} {@EvaluateExpression(FDIV,STRING_ENCODED, 比赛 ,StringReplacer)} {_FME_NO_OP_}“)#------------------------------------------------------------------------- FACTORY_DEF * SortFactory FACTORY_NAME分拣机输入FEATURE_TYPE Sampler_NOT_SAMPLED INPUT FEATURE_TYPE StringReplacer_OUTPUT SORT_BY _element_index NUMERIC上行输出SORTEDFEATURE_TYPE Sorter_SORTED#------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ListBuilder_fme_type_remover INPUT FEATURE_TYPE Sorter_SORTED OUTPUT FEATURE_TYPE ListBuilder_no_fme_type @RemoveAttributes(fme_type,fme_geometry)FACTORY_DEF {*} ListFactory FACTORY_NAMEListBuilder INPUT FEATURE_TYPE ListBuilder_no_fme_type LIST_NAME “_listResult {}” LIST_ATTRS_TO_INCLUDE {}匹配SELECTED LIST_ATTRS_TO_INCLUDE_MODE没有ORDERED_BY_GROUP输出列表FEATURE_TYPE ListBuilder_OUTPUT#------------------------------------------------------------------------- TCL2集ListConcatenator__separator [FME_DecodeText { }];regsub -all \ “{} \”[FME_DecodeText {_listResult .match}] [{FME_DecodeText d + }] ListConcatenator__listPattern;集ListConcatenator__listPattern ^ $ ListConcatenator__listPattern $;TCL2 PROC ListConcatenator__Concatenate {} {upvar \#0 ListConcatenator__separator隔板ListConcatenator__listPattern listPattern;集allAttrs [lsort -dictionary [FME_AttributeNames]];集keepEmptyParts [字符串等于{否} {否}];设定结果{};的foreach attrName $ allAttrs {如果{[正则表达式$ $ listPattern attrName]} {集attrValue [FME_GetAttribute $ attrName];如果{$ keepEmptyParts ||!$ attrValue = {}} {lappend导致$ attrValue;}; }; }; FME_SetAttribute {"_result"} [join $result $separator]; } FACTORY_DEF * TeeFactory FACTORY_NAME ListConcatenator INPUT FEATURE_TYPE ListBuilder_OUTPUT OUTPUT FEATURE_TYPE ListConcatenator_OUTPUT @Tcl2(ListConcatenator__Concatenate) FACTORY_DEF * TeeFactory FACTORY_NAME "ListConcatenator OUTPUT Splitter" INPUT FEATURE_TYPE ListConcatenator_OUTPUT OUTPUT FEATURE_TYPE ListConcatenator_OUTPUT_0_1/ALWYYsCOU= OUTPUT FEATURE_TYPE ListConcatenator_OUTPUT_1_nQq+1iscMww= # ------------------------------------------------------------------------- # Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR FACTORY_DEF * InspectorFactory FACTORY_NAME check_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE ListConcatenator_OUTPUT_0_1/ALWYYsCOU= GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY GROUP_ATTRIBUTE_PREFIX check RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING OUTPUT RESULT FEATURE_TYPE __viewme__ # Now route all the features into the recorder, changing their # feature type to the transformer name so that they view nicely DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO # [PR#45549] The Data Inspector will limit the maximum number of features # it reads on WIN32, so we will correspondingly limit the number of # features we record here using the MAX_FEATURES_TO_RECORD directive. FACTORY_DEF * RecorderFactory FACTORY_NAME check_Recorder COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType(@Value(__inspector_feature_type_attr__)) @RemoveAttributes(__inspector_feature_type_attr__) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" STORE_SCANNED_SCHEMA YES CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _result,varchar 255 模式录制STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK是MAX_FEATURES_TO_RECORD WIN32 2000000#------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME “目的地功能类型的路由相关器” COMMAND_PARM_EVALUATION SINGLE_PASS输入FEATURE_TYPE * ROUTE FME_GENERICListConcatenator_OUTPUT_1_nQq + 1iscMww = TO TEXTLINE __GO_TO_FINAL_OUTPUT_ROUTER__ CopyAttributes ENCODED text_line_data _结果 ,multi_writer_id,0, SupplyAttributes ENCODED __wb_out_feat_type__ text_line GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__输出连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 “最终输出Nuker” INPUT FEATURE_TYPE __nuke_me__#------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END输出FEATURE_TYPE __NUKEME__ @TCL(“如果文件存在{$(WORKSPACE_TEMP_DIR)}] {组文件[水珠-nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails * .ffs];若{[llength $文件] == 1} {设定theFile {$(WORKSPACE_TEMP_DIR)/};append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__