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

VertexCreator: Set X and Y to published parameters

" POSITION="815.633 -696.605" TOP_LEFT="815.633 -696.605" BOTTOM_RIGHT="1371.89 -839.106" BOUNDING_RECT="815.633 -696.605 556.256 142.501" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="6">
#!

<====== Published parameters have been set. When running be sure to run with the Prompt enabled

" POSITION="217.711 -446.532" TOP_LEFT="217.711 -446.532" BOTTOM_RIGHT="967.711 -496.532" BOUNDING_RECT="217.711 -446.532 750 50" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="0.666667,0,0,0.196078" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="0">
#!#!
#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!MaximumPercentageCloudCover,SENTINEL2AWS_FILTER_DATE_RANGE_GROUP,"OPTIONAL DISCLOSUREGROUP FME_DISCLOSURE_OPEN%START_DATE%END_DATE",SENTINEL2AWSDateRange,SENTINEL2AWS_FILTER_DATE_SELECTION_GROUP,"OPTIONAL DISCLOSUREGROUP SELECTED_DATES",SENTINEL2AWSSelectedDates,SENTINEL2AWS_ALL_FILTER_MSG,"OPTIONAL NAMEDMESSAGE",SENTINEL2AWSNote:onlyscenesmatchingallselectedspatialfilterswillberetrieved,SENTINEL2AWS_EXPOSE_ATTRS_GROUP,"OPTIONAL DISCLOSUREGROUP SENTINEL2AWS_EXPOSE_FORMAT_ATTRS",SENTINEL2AWSSchemaAttributes,SENTINEL2AWS_DATE_FILTER_TYPE,"OPTIONAL ACTIVECHOICE Latest,FILTER_DATE_RANGE_GROUP,FILTER_DATE_SELECTION_GROUP%All,FILTER_DATE_RANGE_GROUP,FILTER_DATE_SELECTION_GROUP%""Date Range"",FILTER_DATE_SELECTION_GROUP,++FILTER_DATE_RANGE_GROUP+FME_DISCLOSURE_OPEN%""Selected Dates"",FILTER_DATE_RANGE_GROUP,++FILTER_DATE_SELECTION_GROUP+FME_DISCLOSURE_OPEN",SENTINEL2AWSDateFilter,SENTINEL2AWS_QUALITY_FILTER_GROUP,"OPTIONAL DISCLOSUREGROUP MAX_CLOUD_COVER%MIN_DATA_COVER",SENTINEL2AWSQualityFilter,SENTINEL2AWS_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS,"OPTIONAL NO_EDIT TEXT",SENTINEL2AWS,SENTINEL2AWS_DATE_FILTER_TYPE_GROUP,"OPTIONAL NAMEDGROUP DATE_FILTER_TYPE%FILTER_DATE_RANGE_GROUP%FILTER_DATE_SELECTION_GROUP",SENTINEL2AWSDateFilter,SENTINEL2AWS_SPATIAL_FILTER_GROUP,"OPTIONAL NAMEDGROUP ALL_FILTER_MSG%FILTER_MGRS_GROUP%USE_SEARCH_ENVELOPE",SENTINEL2AWSSpatialFilter,SENTINEL2AWS_MIN_DATA_COVER,"OPTIONAL RANGE_SLIDER 0%100",SENTINEL2AWSMinimumPercentageDataCover,SENTINEL2AWS_FILTER_MGRS_GROUP,"OPTIONAL ACTIVEDISCLOSUREGROUP UTM_ZONE%UTM_LATITUDE_BAND%MGRS_SQUARE%++SEARCH_ENVELOPE_MINY+FME_OPTIONAL_YES",SENTINEL2AWSMilitaryGridReferenceSystem,SENTINEL2AWS_FEATURE_TYPE_NAME,"OPTIONAL LOOKUP_CHOICE ""Bands"",INDIVIDUAL%""Resolutions"",BY_RESOLUTION",SENTINEL2AWSFeatureTypeNames:,SENTINEL2AWS_GENERAL_SETTINGS_GROUP,"OPTIONAL NAMEDGROUP FEATURE_TYPE_NAME%TABLELIST",SENTINEL2AWSGeneral,SENTINEL2AWS_SENTINEL2AWS_EXPOSE_FORMAT_ATTRS,"OPTIONAL LITERAL EXPOSED_ATTRS SENTINEL2AWS%Source",SENTINEL2AWSAdditionalAttributestoExpose:,SENTINEL2AWS_USE_SEARCH_ENVELOPE,"OPTIONAL ACTIVEDISCLOSUREGROUP SEARCH_ENVELOPE_MINX%SEARCH_ENVELOPE_MINY%SEARCH_ENVELOPE_MAXX%SEARCH_ENVELOPE_MAXY",SENTINEL2AWSEnvelope">#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#! #!#! #!#! #!#! #!#!
FME_PYTHON_VERSION 27 DEFAULT_MACRO LATITUDE 49 GUI OPTIONAL RANGE_SLIDER LATITUDE "RANGE:[-80,80]" Latitude: DEFAULT_MACRO LONGITUDE -123 GUI OPTIONAL RANGE_SLIDER LONGITUDE "RANGE:[-180,180]" LONGITUDE: #! 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)ReadingSentinel-2onAWS.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_TIMINGS YES LOG_FILTER_MASK -1 # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME ReadingSentinel-2onAWS 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 包括[如果{{geometry对象} == {geometry对象}} {puts {macro creator_xml *}}]包括[if {geometry对象} == {2d coordent列表}} {puts {宏creator_2d3d 2d_geometry};Puts {宏creator_classic *}}]包括[if {geometry对象】== {3d coordent列表}} {puts {宏creator_2d3d 3d_geometry};放置{macro creator_classic *}}]包括[if {geometry对象} == {2d min / max box}} {set注释{我们需要将minx尖锐的maxx maxy转换为坐标的完整多边形列表};设置splitCoords [strond [string trim { }]]; if { [llength $splitCoords] > 4} { set trimmedCoords {}; foreach item $splitCoords { if { $item != {} } {lappend trimmedCoords $item} }; set splitCoords $trimmedCoords; }; if { [llength $splitCoords] != 4 } { error {Creator: Coordinate list is expected to be a space delimited list of four numbers as 'minx miny maxx maxy' - ` ' 是无效的};};设置minx [Lindex $ splitCoords 0];设置Miny [Lindex $ SplitCoords 1];设置maxx [lindex $ splitcoords 2];设置maxy [lindex $ splitcoords 3];Puts“Macro Creator_coords $ minx $ miny $ minx $ maxy $ maxx $ maxy $ maxx $ miny $ minx $ miny”;放{宏creator_2d3d 2d_geometry};puts {宏creator_classic *}}] foress_def $(creator_xml)creationfactory factory_name creator_xml_creator create_at_end没有输出feature_type _____created______ @geometry(from_encoded_string, ?XML. 版本= 1.0 encoding= US_ASCII 独立= 几何学 dimension= 2 null 几何学 )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______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE “_creation_instance” 输出FEATURE_TYPE Creator_CREATED @ TCL2(Creator_CoordSysRemover)@CoordSys()fme_feature_type造物主factory_def * branchingfactory factory_name“creator_created brancher -1 9”输入feature_type creator_created target_factory“$(wb_current_context)_creator_branch_target”输出传递Feature_type * @removeattributes(“creator_created brancher -1 9”.branchingfactory.count)#---a------------------------------------------------------------------------------------ Factory_def * teefactory factory_name“$(wb_current_context)_creator_branch_target”输入feature_type *输出Feature_type *#--------------------------------------------------------------------------------------- Factory_def *VertexCreatorFactory Factory_name vertexcreator输入Feature_type creator_created模式添加索引“ " CONTINUE_ON_ERROR YES XVAL "@EvaluateExpression(FDIV,FLOAT,$(LONGITUDE$encode),VertexCreator)" YVAL "@EvaluateExpression(FDIV,FLOAT,$(LATITUDE$encode),VertexCreator)" OUTPUT OUTPUT FEATURE_TYPE VertexCreator_OUTPUT # ------------------------------------------------------------------------- MACRO FeatureReader_OUTPUT_PORTS_ENCODED PREVIEW MACRO FeatureReader_DIRECTIVES MAX_CLOUD_COVER,100,FILTER_DATE_RANGE_GROUP,FME_DISCLOSURE_OPEN,DATE_FILTER_TYPE,Latest,QUALITY_FILTER_GROUP,FME_DISCLOSURE_OPEN,QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS,Yes,MIN_DATA_COVER,0,FILTER_MGRS_GROUP,NO,FEATURE_TYPE_NAME,INDIVIDUAL,USE_SEARCH_ENVELOPE,NO # Always provide an INTERACTION, otherwise the factory defaults to ENVELOPE_INTERSECTS INCLUDE [if { ( {ENVELOPE_INTERSECTS} == { })||({($ interact_options)} == {})} {puts {宏fctquery_interaction_line fctquery_interaction无};} else {puts {宏fctquery_interaction_line fctquery_interaction“envelope_intersects”};#将属性合并选项合并到出厂期望Default_Macro FeatureReader_Combine_Attrs包含[if {{result_only} == {merge}} {puts“宏FeatureReader_Combine_Attrs “;} else {puts”macro featurereader_combine_attrs结果_only“;};] factory_def * queryfactory factory_name featerurereader输入feature_type vertexcreator_output $(fctquery_interaction_line)combine_attributes $(featurerereder_combine_attrs)queryfct_attribute_prefix COMBINE_GEOMETRY RESULT_ONLY ENABLE_CACHE NO QUERYFCT_TABLE_SEPARATOR SPACE READER_TYPE SENTINEL2AWS READER_DATASET " Unused “queryfct_ids”preview“reader_directives meta_macros,sourcequery_feature_types_for_merge_filters 是的 SourceGENERAL_SETTINGS_GROUP SourceFEATURE_TYPE_NAME 个人 SourceSPATIAL_FILTER_GROUP sourceall_filter_msg. sourcefilter_mgrs_group. SourceUTM_ZONE Unused sourceutm_latitude_band. Unused SourceMGRS_SQUARE Unused sourceuse_search_envelope. sourcearch_envelope_minx. 0 sourcearch_envelope_mine. 0 SourceSEARCH_ENVELOPE_MAXX 0 SourceSEARCH_ENVELOPE_MAXY 0 SourceDATE_FILTER_TYPE_GROUP SourceDATE_FILTER_TYPE Latest SourceFILTER_DATE_RANGE_GROUP FME_DISCLOSURE_OPEN sourcestart_date. Unused SourceEND_DATE Unused sourcefilter_date_selection_group. SourceSELECTED_DATES Unused SourceQUALITY_FILTER_GROUP FME_DISCLOSURE_OPEN SourceMAX_CLOUD_COVER 100. SourceMIN_DATA_COVER 0 SourceEXPOSE_ATTRS_GROUP SourceSENTINEL2AWS_EXPOSE_FORMAT_ATTRS ,metafile,sentinel2aws queryfct_output“基于_on_connections”continue_on_reader_error yes queryfct_result_tags $(featurerereader_output_ports_encoded)queryfct_set_fme_feature_type是reader_params_wwjd $(featurerereader_directives)输出预览feature_type featurerereader_preview#---a-------------------------------------------------------------------------------#假设是工作空间TEMP DIR已被设置和创建。请参阅controledefs.cpp - controlyefs :: writevisualizertempdir default_macro workspace_temp_dir包括[设置grpbyattrs {};如果{[字符串长度$ grpbyatts]> 0} {if {[字符串首先“@evaluateExpression”$ grpbyattrs“== 0} {puts”宏Catmac _ $ grpbyattrs“;}否则{set catter“”;设置逗号“”;foreach attr $ grpbyattrs {set catter“$ catter $ coma $ @ value(\ attr attr \”)“设置逗号“,_,”;};把“宏Catmac _ @ concatenate($ catter)”; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {FeatureReader_Preiview} _]_[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 FeatureReader_Preiview_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader_Preiview_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 FeatureReader_Preiview_FeatureDirector INPUT FEATURE_TYPE FeatureReader_PREVIEW TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE FeatureReader_Preiview___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE FeatureReader_Preiview___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME FeatureReader_Preiview___FeatureDirector1 INPUT FEATURE_TYPE FeatureReader_Preiview___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE FeatureReader_Preiview___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE FeatureReader_Preiview___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader_Preiview_VectorSetterUpper INPUT FEATURE_TYPE FeatureReader_Preiview___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 FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elseif {[= {NO_THINNING} {FIRSTN字符串POINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ ";} elsef {[string等于{no_thinning} {lastnpoints}]} {fme_execute thinpointcloud no_thinning“\” \ ";};} FACTORY_DEF * TeeFactory FACTORY_NAME FeatureReader_Preiview___PointCloudThinner INPUT FEATURE_TYPE FeatureReader_Preiview___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @ TCL2( “FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_thinPointCloud”)TCL2 PROC FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {集useDI [字符串等于-nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{!$ implusi} {fme_execute properyraster协议bilinear;};设置Doreample [String等于{nooreduction} {重组}];设置dosubset [string等于{nooreduction} {subset}];设置dobounds [string等于{noorduction} {buddingboxonly}];如果{$ dobounds} {fme_execute geometrytype fme_polygon;elsef {$ doreample || $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 FeatureReader_Preiview_RasterSetterUpper INPUT FEATURE_TYPE FeatureReader_Preiview___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_prepareRaster { } { } { } { }") # Now route all the features into the recorder, changing their # feature type to the transformer name so that they view nicely # FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_VIS_FEAT_TYPE changes the feature types # of the features being visualized. DEFAULT_MACRO FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_VIS_FEAT_TYPE FeatureReader_Preiview$(CATMAC) 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 FeatureReader_Preiview_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(FeatureReader_Preiview_72895e3d_c694_48f8_98ff_98d35a128cef13_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" STORE_SCANNED_SCHEMA YES CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES 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__