#!#! #! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!a2a3a4 val SET_TO 1234">#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#! #!#! #!#! #!#! #!#!FME_PYTHON_VERSION 27#!START_HEADER#!START_WB_HEADER READER_TYPE MULTI_READER WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET空#!END_WB_HEADER#!START_WB_HEADER#!END_WB_HEADER#!END_HEADER LOG_FILENAME “$(FME_MF_DIR)ListKeyPair.log” LOG_APPEND NO LOG_MAX_FEATURES 200个LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE自动FME_GEOMETRY_HANDLING增强FME_STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK -1#------------------------------------------------------------------------ MULTI_READER_CONTINUE_ON_READER_FAILURE无#------------------------------------------------------------------------- MACRO WORKSPACE_NAME ListKeyPair MACRO FME_VIEWER_APP fmedatainspector#-------------------------------------------------------------------------有[如果{[信息存在ENV(FME_TEMP)] && [文件isdirectory $ ENV(FME_TEMP)]} {设定gVisualizerTemp $ ENV(FME_TEMP)} {ELSEIF [信息存在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 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- Tcl2 proc Creator_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO Creator_XML NOT_ACTIVATED MACRO Creator_CLASSIC NOT_ACTIVATED MACRO Creator_2D3D 2D_GEOMETRY MACRO Creator_COORDS INCLUDE [如果{{几何对象} == {几何对象}} {{放MACRO Creator_XML *}}] INCLUDE [如果{{几何对象} == {2D坐标列表}} {{放MACRO Creator_2D3D 2D_GEOMETRY};放{MACRO Creator_CLASSIC *}}] INCLUDE [如果{{几何对象} == {三维坐标列表}} {{放MACRO Creator_2D3D 3D_GEOMETRY};看跌期权{MACRO Creator_CLASSIC *}}]有[如果{{几何对象} == {2D最小/最大框}} {集评论{我们需要把它们了minX MINY maxX的美星的COORDS为坐标的完整列表多边形};集splitCoords [分裂[字符串装饰{ }]];如果{[llength $ splitCoords]> 4} {集trimmedCoords {};的foreach项$ {splitCoords如果{$项目= {}} {lappend trimmedCoords $项目}!};集splitCoords $ trimmedCoords;};如果{[llength $ splitCoords] = 4!} {{错误者:坐标列表中,预计四个数字为“疯丫头MINY MAXX MAXY”空格分隔列表 - ` ' 是无效的};};集其minX [LINDEX $ splitCoords 0];集MINY [LINDEX $ splitCoords 1];集maxX的[LINDEX $ splitCoords 2];集MAXY [LINDEX $ splitCoords 3];看跌期权 “MACRO Creator_COORDS $ $了minX $ MINY $其minX美星$ maxX的$ $美星$ maxX的$ MINY $了minX MINY”;放{MACRO Creator_2D3D 2D_GEOMETRY};看跌期权{MACRO Creator_CLASSIC *}}] FACTORY_DEF $(Creator_XML)CreationFactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END没有输出FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, ?XML 版本= 1.0 编码= US_ASCII 独立= 没有 几何 尺寸= 2 空值 几何 )FACTORY_DEF $(Creator_CLASSIC)CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D)$(Creator_COORDS)CREATE_AT_END无输出FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ @ TCL2(Creator_CoordSysRemover)@CoordSys()NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE “_creation_instance” 输出FEATURE_TYPE Creator_CREATED fme_feature_type造物主FACTORY_DEF * BranchingFactory FACTORY_NAME “Creator_CREATED分支器-1 4” INPUT FEATURE_TYPE Creator_CREATED TARGET_FACTORY “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” MAXIMUM_COUNT无的Passed FEATURE_TYPE *#------------------------------------------------------------------------ FACTORY_DEF * TeeFactory FACTORY_NAME “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE *#------------------------------------------------------------------------- FACTORY_DEF {*} AttrSetFactory FACTORY_NAME AttributeCreator输入端FEATURE_TYPE Creator_CREATED MULTI_FEATURE_MODE NO NULL_ATTR_MODE NO_OP ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV ATTR_ACTION { “” “关键” “SET_TO”“A1 a2 A3 A4" } ATTR_ACTION { “” “VAL” “SET_TO”“1 2 3 4" }输出输出FEATURE_TYPE AttributeCreator_OUTPUT#------------------------------------------------------------------------- TCL2设置AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitDelim [FME_DecodeText { }];如果{[正则表达式{^([1-9] [0-9] * S)+ $} [组AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitDelim]]} {集AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitWidths [分裂[regsub -all {S $} { } {}] S];PROC AttributeSplitter_doSplit {} {全球AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitWidths;组源[FME_GetAttribute [FME_DecodeText {键}]];集attrNum 0;集LISTNAME [FME_DecodeText {名单 0 。键}];集attrPos 0;集keepEmptyParts [字符串等于{否} {否}];的foreach宽度[组AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitWidths] {集endPos [EXPR $ attrPos + $宽度 - 1];组位[串范围$ $源$ attrPos endPos];设置部位[串装饰$位]。如果{$ keepEmptyParts ||$部分= \ “\”} {FME_SetAttribute “$ {LISTNAME $ attrNum}” $一部分!;增量attrNum;}; incr attrPos $width; }; }; } else { proc AttributeSplitter_doSplit {} { global AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitDelim; set delim [set AttributeSplitter_ef437059_36c1_4528_824a_bee14ba9299b8_splitDelim]; set delimLength [string length $delim]; set source [FME_GetAttribute [FME_DecodeText {key}]]; set keepEmptyParts [string equal {No} {No}]; set bits {}; set startIndex 0; set nextIndex [string first $delim $source $startIndex]; while {$nextIndex >= 0} { lappend bits [string range $source $startIndex [expr $nextIndex-1]]; set startIndex [expr $nextIndex + $delimLength]; set nextIndex [string first $delim $source $startIndex]; }; lappend bits [string range $source $startIndex end]; set listName [FME_DecodeText {list 0 。键}];集attrNum 0;的foreach位$位{设定trimmedPart [字符串装饰$比特];如果{$ keepEmptyParts ||!$ trimmedPart = \ “\”} {FME_SetAttribute “$ {LISTNAME $ attrNum}” $ trimmedPart;增量attrNum;};}}} FACTORY_DEF * TeeFactory FACTORY_NAME AttributeSplitter INPUT FEATURE_TYPE AttributeCreator_OUTPUT输出FEATURE_TYPE AttributeSplitter_OUTPUT @ TCL2(AttributeSplitter_doSplit)#------------------------------------------------------------------------- TCL2设置AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitDelim [FME_DecodeText { }];如果{[正则表达式{^([1-9] [0-9] * S)+ $} [组AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitDelim]]} {集AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitWidths [分裂[regsub -all {S $} { } {}] S];PROC AttributeSplitter_2_doSplit {} {全球AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitWidths;组源[FME_GetAttribute [FME_DecodeText {VAL}]];集attrNum 0;集LISTNAME [FME_DecodeText {名单 0 .VAL}];集attrPos 0;集keepEmptyParts [字符串等于{否} {否}];的foreach宽度[组AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitWidths] {集endPos [EXPR $ attrPos + $宽度 - 1];组位[串范围$ $源$ attrPos endPos];设置部位[串装饰$位]。如果{$ keepEmptyParts ||$部分= \ “\”} {FME_SetAttribute “$ {LISTNAME $ attrNum}” $一部分!;增量attrNum;}; incr attrPos $width; }; }; } else { proc AttributeSplitter_2_doSplit {} { global AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitDelim; set delim [set AttributeSplitter_2_c2441bf9_e86c_4057_b3ae_670fba9863af8_splitDelim]; set delimLength [string length $delim]; set source [FME_GetAttribute [FME_DecodeText {val}]]; set keepEmptyParts [string equal {No} {No}]; set bits {}; set startIndex 0; set nextIndex [string first $delim $source $startIndex]; while {$nextIndex >= 0} { lappend bits [string range $source $startIndex [expr $nextIndex-1]]; set startIndex [expr $nextIndex + $delimLength]; set nextIndex [string first $delim $source $startIndex]; }; lappend bits [string range $source $startIndex end]; set listName [FME_DecodeText {list 0 .VAL}];集attrNum 0;的foreach位$位{设定trimmedPart [字符串装饰$比特];如果{$ keepEmptyParts ||!$ trimmedPart = \ “\”} {FME_SetAttribute “$ {LISTNAME $ attrNum}” $ trimmedPart;增量attrNum;};}}} FACTORY_DEF * TeeFactory FACTORY_NAME AttributeSplitter_2 INPUT FEATURE_TYPE AttributeSplitter_OUTPUT输出FEATURE_TYPE AttributeSplitter_2_OUTPUT @ TCL2(AttributeSplitter_2_doSplit)#------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME“ListKeyValuePairExtractor输入输入收藏家” INPUT FEATURE_TYPE AttributeSplitter_2_OUTPUT输出FEATURE_TYPE ListKeyValuePairExtractor_Input MACRO ListKeyValuePairExtractor_WORKSPACE_NAME ListKeyValuePairExtractor宏$(ListKeyValuePairExtractor_WORKSPACE_NAME)_XFORMER_NAME ListKeyValuePairExtractor宏$(ListKeyValuePairExtractor_WORKSPACE_NAME)_TRANSFORMER_GROUP宏$(ListKeyValuePairExtractor_WORKSPACE_NAME)___ COMPOUND_PARAMETERS宏$(ListKeyValuePairExtractor_WORKSPACE_NAME)___ KEY_ATTR列表{0}。关键{0}宏$(ListKeyValuePairExtractor_WORKSPACE_NAME)___ VAL_ATTR列表{0} .VAL {0} MACRO $(ListKeyValuePairExtractor_WORKSPACE_NAME)___ ATTR_CONFLICT_RES 1 INCLUDE_CUSTOM_TRANSFORMER_VER ListKeyValuePairExtractor:1 FACTORY_DEF * TeeFactory FACTORY_NAME “ListKeyValuePairExtractor输出输出更名/ Nuker” INPUT FEATURE_TYPE ListKeyValuePairExtractor_Output OUTPUT FEATURE_TYPE ListKeyValuePairExtractor_Output FACTORY_DEF * TeeFactory FACTORY_NAME“ListKeyValuePairExtractor 输出更名/ Nuker” INPUT FEATURE_TYPE ListKeyValuePairExtractor_ 输出FEATURE_TYPE ListKeyValuePairExtractor_ DEFAULT_MACRO _WB_BYPASS_TERMINATION没有FACTORY_DEF * TeeFactory FACTORY_NAME ListKeyValuePairExtractor_ INPUT FEATURE_TYPE ListKeyValuePairExtractor_ 输出失败FEATURE_TYPE * @Abort(编码,ListKeyValuePairExtractor 产量 一个 拒绝 特征。 继续 翻译 什么时候 特征 拒绝 更改 工作区 参数 翻译 拒绝 特征 处理 继续 翻译 )#-------------------------------------------------------------------------#假设是工作区临时目录已被设置和创建的。见controldefs.cpp - ControlDefs :: writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR FACTORY_DEF {*} InspectorFactory FACTORY_NAME ListKeyValuePairExtractor_Output_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE ListKeyValuePairExtractor_Output GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY {} {GROUP_ATTRIBUTE_PREFIX} ListKeyValuePairExtractor_Output RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING输出结果FEATURE_TYPE __viewme__#现在将所有功能集成在录像机,改变它们的#特征类型到所述变压器的名称,以便使得它们很好地查看DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/ $(SAFE_FFS_NAME).ffs DEFAULT_MACRO VISUALIZER_CRE亚搏在线ATE_SPATIAL_INDEX NO#[PR#45549]数据检查器将限制的特征的最大数量#它读取上WIN32,所以我们会相应地限制#数量特征,我们在这里记录使用MAX_FEATURES_TO_RECORD指令。FACTORY_DEF * RecorderFactory FACTORY_NAME ListKeyValuePairExtractor_Output_Recorder COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE __viewme__ _wb_termination_feature是@FeatureType(TERMINATOR_ @值(_wb_termination_xformer))输入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)”检查员 “$(VISUALIZER_CREATE_SPATIAL_INDEX)” FSC_SCHEMA键,VARCHAR 255 ,缬氨酸,VARCHAR 255 ,_creation_instance,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 * 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 * TeeFactoryFACTORY_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)/};追加theFile [LINDEX $文件0];EVAL FME_Execute系统\ 173 \ 042 $(FME_HOME_UNIX)/ fmedatainspector \ 042 --visualizer --single应用--delete上闭--no源提示符-f FFS \ 042 $ theFile \ 042&\ 175;} elseif的{[llength $文件] == 0} {{捕获文件删除-force {$(WORKSPACE_TEMP_DIR)}};}其他{集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__