#!#! #! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#! #!#! #!#! #!

" xform_deprecated="No" history="14062016,GISInnovationSB," doc_top_left="-315.497 -681.382" category="Calculators" legal_terms_conditions="

Free to use, modify and distribute

" description="

The transformer is based on counter transformer at the exception that instead of iterating by 1, it iterates by any value specified.

" fme_process_group_by="" requirements="

FME Desktop 2016.1 and above

" fme_document_priorguid="4cdaa393-47ba-4ad6-8824-224d5ed3b8bf,9d99c2bb-03a6-4f9d-93a7-f5f0da0b7fb3" guid="cc854fa0-cb55-49a0-a357-b584f2e308ee" fme_process_groups_ordered="No" title="IteratorCounter" fmx_attribute_propogation_mode="AUTO"> #! #!#!#!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#! #!#!#! #!#!#!#!#! #!#! #!#!
#!
#! #!#!
fme_python_version 27#!start_header#!start_wb_header reader_type null reader_keyword null_source null_source_dataset null writer_type null writer_keyword null_dest null_dest_dataset null#!end_wb_header#!start_wb_header#!end_wb_header#!end_header log_filename“$(fme_mf_dir)usemaxvalue.log”log_append no log_max_features 200 log_max_recorded_features 200 fme_reproimpt_endine fme fme_implict_csmap_repropery_handling增强fme_stroke_max_deviation 0 log_filter_mask -1#---a-------------------------------------------------------------------------------- multi_reader_continue_on_reader_failure no#------------------------------------------------------------------- MACRO WORKSPACE_NAME UseMaxValue 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 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 [if{{几何对象}=={几何对象}}{puts {MACRO Creator_XML *}}] INCLUDE [if{{几何对象}== {2D坐标列表}}{puts {MACRO Creator_2D3D 2D_GEOMETRY};puts {MACRO Creator_CLASSIC *}}] INCLUDE [if {{Geometry Object} == {3D Coordinate List}} {puts {MACRO Creator_2D3D 3D_GEOMETRY};{MACRO Creator_CLASSIC *}}] INCLUDE [if {{Geometry Object} == {2D Min/Max Box}} {set comment{我们需要将COORDS minX minY maxX maxY转换为完整的多边形坐标列表};set splitCoords [split] [string trim] }]];if {[llength $splitCoords] > 4} {set trimmedCoords {};$splitCoords {if {$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $splitCoords] != 4} {error {Creator: Coordinate list is expected to be a space delimited list of four numbers as 'minx miny maxx maxy' - ' 的是无效的};};set minX [lindex $ splitcoordds 0]; / /设置lindexset minY [lindex $splitCoords 1]; / /设置lindexset maxX [lindex $splitCoords 2]; / /设置lindexset maxxy [lindex $splitCoords 3]; / /设置lindexMACRO Creator_COORDS $minX $minY $maxY $maxX $maxX $minY $minX $minY;puts {MACRO Creator_2D3D 2D_GEOMETRY};{MACRO Creator_CLASSIC *}}] create_def $(Creator_XML) creatorfactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, ?XML. version = 1.0 编码= US_ASCII 独立的= 几何学 尺寸= 2 几何学 ) FACTORY_DEF $(Creator_CLASSIC) CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D) $(Creator_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE "_creation_instance" OUTPUT FEATURE_TYPECreator_CREATED @Tcl2 (Creator_CoordSysRemover) @CoordSys () fme_feature_type创造者FACTORY_DEF * BranchingFactory FACTORY_NAME“Creator_CREATED布兰凯尔1 3”输入FEATURE_TYPE Creator_CREATED TARGET_FACTORY " $ (WB_CURRENT_CONTEXT) _CREATOR_BRANCH_TARGET“输出通过FEATURE_TYPE * @RemoveAttributes(“Creator_CREATED布兰凯尔13”.BranchingFactory.Count ) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME " $ (WB_CURRENT_CONTEXT) _CREATOR_BRANCH_TARGET“输入输出FEATURE_TYPE FEATURE_TYPE * * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAMEMultiRandomCreator RandomNumberGenerator_Input Input Collector" Input FEATURE_TYPE creator_create_created OUTPUT FEATURE_TYPE MultiRandomCreator workspace_name MultiRandomCreator MACRO $(MultiRandomCreator_WORKSPACE_NAME)_XFORMER_NAME MultiRandomCreator MACRO(MultiRandomCreator_WORKSPACE_NAME) _TRANSFORMER_GROUP宏(MultiRandomCreator_WORKSPACE_NAME)美元___COMPOUND_PARAMETERS宏宏(MultiRandomCreator_WORKSPACE_NAME) __TopCount 10美元(MultiRandomCreator_WORKSPACE_NAME) _MIN 0宏宏(MultiRandomCreator_WORKSPACE_NAME) _MAX 10美元(MultiRandomCreator_WORKSPACE_NAME) _PLACES 0宏$(MultiRandomCreator_WORKSPACE_NAME)_RESULT_ATTR _random_number INCLUDE_CUSTOM_TRANSFORMER_VER MultiRandomCreator:1 FACTORY_DEF * TeeFactory FACTORY_NAME "MultiRandomCreator _Random Output Renamer/Nuker" INPUT FEATURE_TYPE MultiRandomCreator__Random Output FEATURE_TYPE MultiRandomCreator__Random #------------------------------------------------------------------------- DEFAULT_MACRO __StatisticsCalculator_9a008aa3_08db_4480_8123_f51ac4ad83c62_GROUP_BY DYNAMIC_FUNCTION_CONFIGURATION Python FMEOBJECTS DYNAMIC_FUNCTION_CONFIGURATION Python导入StatisticsCalculator DYNAMIC_FUNCTION_CONFIGURATION StatisticsCalculator Python”。connectTransformer (StatisticsCalculator,{“GROUP_BY_MACRO”:“__StatisticsCalculator_9a008aa3_08db_4480_8123_f51ac4ad83c62_GROUP_BY”,“STATS_ATTRS”:“_random_number”,“MIN_ATTR”:“_min”,“MAX_ATTR”:“_max”,“COUNT_ATTR”:“_count”,“NUMERIC_ATTR”:“_numeric_count”,“SUM_ATTR”:“_sum”,“RANGE_ATTR”:“_range”,“MEAN_ATTR”:“_mean”,“MEDIAN_ATTR”:“_median”,“STDEV_ATTR”:“_stdev”、“STDEVP_ATTR”:“_stdevp”、“MODE_ATTR”:“_mode”、“COMPUTE_HISTOGRAM”:“不”,“HISTO_ATTR”:“ ', 'PREPEND_ATTR_NAME':'No', 'encoded_result_attrs':True, None:None})"@Python(statisticscalculator_recordfeature,StatisticsCalculatorStatisticsCalculator_COMPLETE FACTORY_DEF * SortFactory FACTORY_NAME statisticscalculator_completeoutputer INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ INPUT FEATURE_TYPE StatisticsCalculator_COMPLETE OUTPUT SORTED FEATURE_TYPE StatisticsCalculator_COMPLETE@Python (StatisticsCalculator.summarizeStatistics StatisticsCalculator __ORIGINAL__) FACTORY_DEF * CreationFactory FACTORY_NAME StatisticsCalculator_SummaryCreator CREATE_AT_END NUMBER_TO_CREATE 1 FACTORY_DEF * ElementFactory FACTORY_NAME StatisticsCalculator_SummaryExploder LIST_NAME StatisticsCalculator_stats{}模式LEAN_AND_MEAN CLONE_GEOMETRY没有INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "IteratorCounter Input Input Collector" INPUT FEATURE_TYPE StatisticsCalculator_COMPLETE OUTPUT FEATURE_TYPE IteratorCounter_Input MACRO IteratorCounter_WORKSPACE_NAME IteratorCounter MACRO $(IteratorCounter_WORKSPACE_NAME)_XFORMER_NAME IteratorCounter MACRO $(IteratorCounter_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(IteratorCounter_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(IteratorCounter_WORKSPACE_NAME)_SUB_DOC_NAME IteratorCounter MACRO $(IteratorCounter_WORKSPACE_NAME)_IterValue 1 MACRO $(IteratorCounter_WORKSPACE_NAME)_START @Value(_max) DEFAULT_MACRO IteratorCounter_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(IteratorCounter_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(IteratorCounter_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(IteratorCounter_WORKSPACE_NAME)_Input1465868583 Input Splitter" INPUT FEATURE_TYPE "$(IteratorCounter_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(IteratorCounter_WORKSPACE_NAME)_Input" # ------------------------------------------------------------------------- # 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 { {Local} == {Local} } { set domainPrefix [FME_EncodeText {$(IteratorCounter_WORKSPACE_NAME)_IterCounter_}]; }; puts "MACRO $(IteratorCounter_WORKSPACE_NAME)_IterCounter_FULL_DOMAIN ${domainPrefix}counter"; ] FACTORY_DEF * TeeFactory FACTORY_NAME $(IteratorCounter_WORKSPACE_NAME)_IterCounter_Counter INPUT FEATURE_TYPE "$(IteratorCounter_WORKSPACE_NAME)_Input" @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) OUTPUT FEATURE_TYPE ___TOREJECTOR___ "_actual_feature_count" @Count(REJECTABLE,fme_encoded,$($(IteratorCounter_WORKSPACE_NAME)_IterCounter_FULL_DOMAIN),"@EvaluateExpression(FDIV,FLOAT,$($(IteratorCounter_WORKSPACE_NAME)_START$encode),$(IteratorCounter_WORKSPACE_NAME)_IterCounter)") FACTORY_DEF * TestFactory FACTORY_NAME $(IteratorCounter_WORKSPACE_NAME)_IterCounter_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT PASSED FEATURE_TYPE "$(IteratorCounter_WORKSPACE_NAME)_IterCounter_ @RemoveAttributes(__fme_rejection_code__) OUTPUT FAILED FEATURE_TYPE "$(IteratorCounter_WORKSPACE_NAME)_IterCounter_OUTPUT" @RenameAttributes(FME_STRICT,fme_rejection_code, __fme_rejection_code__) FACTORY_DEF * TeeFactory FACTORY_NAME "$(IteratorCounter_WORKSPACE_NAME)_IterCounter $(IteratorCounter_WORKSPACE_NAME)_IterCounter_ . " # ------------------------------------------------------------------------- 包括TCL如果{{外向}= ={外向}}{设置attr (FME_DecodeText {_Iterated_Value});如果{[string length $attr] == 0}{返回;};set attrs [list [FME_EncodeText $attr]];} else {set attrAll { };if {[string length $attrAll] == 0} {return;};设置attrs [split] } {});};if {{NO_OP} == {NO_OP}} {set parmList ATTR_CREATE_EXPR_PROPAGATE_MISSING_TYPED_FDIV;} else {set parmList ATTR_CREATE_EXPR_PROPAGATE_MISSING_TYPED_FDIV_MULTI_FEATURE;};foreach attr $attrs {append parmList $attr;lappend parmList { 价值 _actual_feature_count * $($(iteratorcounter_workspace_name)_itervalue $编码)};lappend parmlist {float};};如果{{no_op} == {ootic_null_value_2}} {lappend parmlist {no_op};lappend parmList { };lappend parmlist {0};};puts“宏__fme_expressevaluator_evaluateargs__ [加入$ parmlist,]”;END_INCLUDE FACTORY_DEF * TeeFactory FACTORY_NAME $(IteratorCounter_WORKSPACE_NAME)_ExpressionEvaluator INPUT FEATURE_TYPE “$(IteratorCounter_WORKSPACE_NAME)_IterCounter_OUTPUT” 输出FEATURE_TYPE “$(IteratorCounter_WORKSPACE_NAME)_ExpressionEvaluator_OUTPUT” @EvaluateExpression($(__ fme_expressionevaluator_evaluateArgs __),$(IteratorCounter_WORKSPACE_NAME)_ExpressionEvaluator)宏__fme_expressionevaluator_evaluateArgs__ FACTORY_DEF * TeeFactory FACTORY_NAME“$(IteratorCounter_WORKSPACE_NAME)_Output1465868583输出集电极 “INPUT FEATURE_TYPE ”$(IteratorCounter_WORKSPACE_NAME)_ExpressionEvaluator_OUTPUT“ OUTPUT FEATURE_TYPE ”$(IteratorCounter_WORKSPACE_NAME)_output“ INCLUDE [看跌{MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT _ $(IteratorCounter_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME” IteratorCounter输出输出更名/ nuker“输入feature_type iteratorcounter_output输出feature_type iteratorcounter_output#-----------------------------------------------------------------#设置指令将所有元属性添加到功能。#我们这样做,因此用户在已查看的#功能中查看所有可能的信息。Reader_Meta_Attributes FME_Feature_type FME_Dataset FME_BaseName#假设是已设置和创建工作空间TEMP DIR。请参阅controledefs.cpp - controlyefs :: writevisualizertempdir default_macro workspace_temp_dir包括[设置grpbyattrs {};如果{[字符串长度$ grpbyatts]> 0} {if {[字符串首先“@evaluateExpression”$ grpbyattrs“== 0} {puts”宏Catmac _ $ grpbyattrs“; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {IteratorCounter_Output} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] # Make the temporary directory that the FFS files will live in. FACTORY_DEF * CreationFactory FACTORY_NAME IteratorCounter_Output_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME IteratorCounter_Output_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ # Send raster, point cloud and vector features down different paths to prepare # them for viewing FACTORY_DEF * TestFactory FACTORY_NAME IteratorCounter_Output_FeatureDirector INPUT FEATURE_TYPE IteratorCounter_Output TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE IteratorCounter_Output___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE IteratorCounter_Output___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME IteratorCounter_Output___FeatureDirector1 INPUT FEATURE_TYPE IteratorCounter_Output___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE IteratorCounter_Output___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE IteratorCounter_Output___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME IteratorCounter_Output_VectorSetterUpper INPUT FEATURE_TYPE IteratorCounter_Output___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ # Point Cloud Features Might Need to be thinned # Note that we don't call the ThinPointCloud function directly, but rather # do it through TCL. This should allow this transformer to be used with a # Desktop license, even though ThinPointCloud requires Professional. Tcl2 proc IteratorCounter_Output_7e367182_e7c2_4057_a834_1937e5ec9edf2_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elseif {[string equal {no_间伐}{MAXNUMPOINTS}]}} {FME_Execute ThinPointCloud no_间伐"\" \ ";} elseif {[string equal {no_间伐}{FIRSTNPOINTS}]} {FME_Execute ThinPointCloud no_间伐"\" \ ";} elsef {[string等于{no_thinning} {lastnpoints}]} {fme_execute thinpointcloud no_thinning“\” \ ";};} FACTORY_DEF * TeeFactory FACTORY_NAME IteratorCounter_Output___PointCloudThinner输入FEATURE_TYPE IteratorCounter_Output___PointCloudFeatures___输出FEATURE_TYPE __viewme__ @Tcl2 Tcl2 proc IteratorCounter_Output_7e367182_e7c2_4057_a834_1937e5ec9edf2_prepareRaster(“IteratorCounter_Output_7e367182_e7c2_4057_a834_1937e5ec9edf2_thinPointCloud”){subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{!$useDI} {FME_Execute ApplyRasterRotation双线性;};set doResample [string equal {NoReduction} {Resample}];set do子集[string equal {noreduce}{子集}];set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME IteratorCounter_Output_RasterSetterUpper INPUT FEATURE_TYPE IteratorCounter_Output___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("IteratorCounter_Output_7e367182_e7c2_4057_a834_1937e5ec9edf2_prepareRaster { }{ }{ }{ }“)#现在将所有功能集成在录像机,改变他们#功能类型变压器的名字,让他们查看很好#IteratorCounter_Output_7e367182_e7c2_4057_a834_1937e5ec9edf2_VIS_FEAT_TYPE改变所显现的特征要素类型#。DEFAULT_MACRO IteratorCounter_Output_7e367182_e7c2_4057_a834_1937e5ec9edf2_VIS_FEAT_TYPE IteratorCounter_Output $(CATMAC)DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(workspace_temp_dir)/ $亚搏在线(safe_ffs_name).ffs default_macro visualizer_create_spatial_index no#[pr#45549]数据检查器将限制它在Win32上读取的最大功能数量,因此我们将相应地限制我们在此处录制的#功能数量max_features_to_record指令。factory_def * recorderfactory factory_name iteratorcounter_output_recorder输入feature_type __viewme__ _wb_termination_feature是@featureType(terminator_ @值(_wb_termination_xformer))输入feature_type __viewme__ @featureType($(iteratorcounter_output_7e367182_E7C2_4057_A834_1937E59EDF2_VIS_FEAT_TYPE))feature_file“$(Visualizer_feature_file)”create_spatial_index“$(Visualizer_Create_spatial_Index)”Inspector“$(Visualizer_Create_spatial_Index)”FSC_Schema _creation_instance,varchar 255 、_random_number varchar 255 、_Featurescount varchar 255 、_min varchar 255 、_max varchar 255 、_median varchar 255 、_count varchar 255 ,_numeric_count,varchar 255 、_sum varchar 255 ,_range,varchar 255 ,_mean,varchar 255 、_stdev varchar 255 、_stdevp varchar 255 、_mode varchar 255 、_actual_feature_count varchar 255 、_Iterated_Value varchar 255 Mode Record Record_Directly_to_disk是max_features_to_record win32 2000000#---------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * 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__ # ------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set 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__