#!#! #! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#! #!#!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#! #!#! #!#! #!#!FME_PYTHON_VERSION 27 #! START_HEADER #! START_WB_HEADER READER_TYPE MULTI_READER 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)ClipperToClippedInside.log" LOG_APPEND NO LOG_TIMINGS YES LOG_FILTER_MASK -1 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 # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME ClipperToClippedInside 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. version= 1.0 encoding= US_ASCII. 独立= no ? 几何学 多边形 line x= -0.5 y = -0.5 z = 0.5 x= 0.5 y = -0.5 z = 0.5 x= 0.5 y = 0.5 z = 0.5 x= -0.5 y = 0.5 z = 0.5 x= -0.5 y = -0.5 z = 0.5 line 多边形 几何学 ) 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______ @Tcl2(Creator_CoordSysRemover) @CoordSys() NUMBER_OF_COPIES 1 OUTPUT FEATURE_TYPE Creator_CREATED fme_feature_type Creator FACTORY_DEF * TeeFactory FACTORY_NAME "Creator CREATED Splitter" INPUT FEATURE_TYPE Creator_CREATED OUTPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c= OUTPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA= OUTPUT FEATURE_TYPE Creator_CREATED_2_goANeUpBIDA= FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED_0_GJAgmIF9G6c= Brancher -1 36" INPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED_1_Exx7idfjvCA= Brancher -1 4" INPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_CREATED_2_goANeUpBIDA= Brancher -1 9" INPUT FEATURE_TYPE Creator_CREATED_2_goANeUpBIDA= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- Tcl2 proc Creator_2_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO Creator_2_XML NOT_ACTIVATED MACRO Creator_2_CLASSIC NOT_ACTIVATED MACRO Creator_2_2D3D 2D_GEOMETRY MACRO Creator_2_COORDS 包括[if {{geometry对象} == {geometry对象}} {puts {macro creator_2_xml *}]包括[if {{geometry对象} == {2d坐标列表}} {puts {宏creator_2_2d3d 2d_geometry};puts {宏creator_2_classic *}}]包括[if {geometry对象} == {3d coordent列表}} {puts {宏creator_2_2d3d 3d_geometry};放置{宏creator_2_classic *}}]包括[if {geometry对象】== {2d min / max box}} {set注释{我们需要将minx miny 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_2: 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_2_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY"; puts {MACRO Creator_2_2D3D 2D_GEOMETRY}; puts {MACRO Creator_2_CLASSIC *} } ] FACTORY_DEF $(Creator_2_XML) CreationFactory FACTORY_NAME Creator_2_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, ?XML. version= 1.0 encoding= US_ASCII. 独立= no ? 几何学 line x= -1 y = 0 z = -1 x= 0 y = 0 z = 1 x= 1 y = 0 z = -1 line 几何学 美元)FACTORY_DEF CreationFactory (Creator_2_CLASSIC)FACTORY_NAME Creator_2_CLASSIC_Creator $(Creator_2_2D3D) $(Creator_2_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_2_Cloner INPUT FEATURE_TYPE _____CREATED______ @Tcl2(Creator_2_CoordSysRemover) @CoordSys() NUMBER_OF_COPIES 1 OUTPUT FEATURE_TYPE Creator_2_CREATED fme_feature_type Creator_2 FACTORY_DEF * TeeFactory FACTORY_NAME "Creator_2 CREATED Splitter" INPUT FEATURE_TYPE Creator_2_CREATED OUTPUT FEATURE_TYPE Creator_2_CREATED_0_YoZgL8R6ba0= OUTPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG+6re7QA= OUTPUT FEATURE_TYPE Creator_2_CREATED_2_LY8J0QrpNkk= FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_2_CREATED_0_YoZgL8R6ba0= Brancher -1 7" INPUT FEATURE_TYPE Creator_2_CREATED_0_YoZgL8R6ba0= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_2_CREATED_1_ejQG+6re7QA= Brancher -1 10" INPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG+6re7QA= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * FACTORY_DEF * BranchingFactory FACTORY_NAME "Creator_2_CREATED_2_LY8J0QrpNkk= Brancher -1 14" INPUT FEATURE_TYPE Creator_2_CREATED_2_LY8J0QrpNkk= TARGET_FACTORY "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" MAXIMUM_COUNT None OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * ChoppingFactory FACTORY_NAME Chopper INPUT FEATURE_TYPE Creator_2_CREATED_2_LY8J0QrpNkk= MODE VERTEX MAX_VERTICES "1" APPROX_LENGTH " “remnant_attribute”“chop_polygons REJECT_INVALID_GEOM Yes DEAGGREGATE_INPUT Deaggregate OUTPUT CHOPPED FEATURE_TYPE Chopper_CHOPPED # ------------------------------------------------------------------------- INCLUDE [ if { {MATCH} == {MATCH} } { puts {MACRO Matcher_ATTRMATCH MATCH_ATTRIBUTES }; } elseif { {MATCH} == {EXCEPT} } { puts {MACRO Matcher_ATTRMATCH MATCH_ALL_ATTRS_EXCEPT }; } else { puts {MACRO Matcher_ATTRMATCH MATCH_ALL_ATTRIBUTES}; } FACTORY_DEF {*} MatchingFactory FACTORY_NAME Matcher INPUT FEATURE_TYPE Chopper_CHOPPED MATCH_GEOMETRY 3D $(Matcher_ATTRMATCH) BLANK_AND_MISSING_DIFFER No LENIENT_GEOMETRY_MATCH Yes ADD_TO_MATCHED _match_id @Count(Matcher) LIST_ATTRS_TO_INCLUDE { list_attrs_to_include_mode. 输出SINGLE_MATCHED FEATURE_TYPE Matcher_SINGLE_MATCHED OUTPUT NOT_MATCHED FEATURE_TYPE Matcher_NOT_MATCHED # ------------------------------------------------------------------------- # Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ set safeName "[regsub -all {[^a-zA-Z0-9]} {02_clippee} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] FACTORY_DEF {*} InspectorFactory FACTORY_NAME 02_clippee_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE Creator_2_CREATED_0_YoZgL8R6ba0= GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY { } GROUP_ATTRIBUTE_PREFIX { 02_clippee } 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 02_clippee_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 MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 # ------------------------------------------------------------------------- INCLUDE [ if {($(FME_BUILD_NUM) < 5669) || [FME_ComponentIsLicensed -factory RasterClippingFactory]} { puts "MACRO RASTER_CLIPPER_IN *"; } else { puts "MACRO RASTER_CLIPPER_IN NOT_THIS_TIME"; } ] # The dummy input feature type Clipper___ClipperMakeSureWeDontGetAllFeatures___ # makes sure that if INPUT FEATURE_TYPE Creator_CREATED_2_goANeUpBIDA= is emtpy, we don't get every feature # sent into this factory. FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_ClipperCloner INPUT FEATURE_TYPE Creator_CREATED_2_goANeUpBIDA= INPUT FEATURE_TYPE Clipper___ClipperMakeSureWeDontGetAllFeatures___ 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___ # The dummy input feature type Clipper___ClippeeMakeSureWeDontGetAllFeatures___ # makes sure that if INPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG+6re7QA= is emtpy, we don't get every feature # sent into this factory. FACTORY_DEF * TestFactory FACTORY_NAME Clipper_ClippeeFilter INPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG+6re7QA= INPUT FEATURE_TYPE Clipper___ClippeeMakeSureWeDontGetAllFeatures___ 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 NO ATTR_ACCUM_MODE " “attr_conflict_res” " 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“ 无输出CLIPPED_INSIDE FEATURE_TYPE Clipper_INSIDE ”_clipped“ 是输出EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @ TCL2(” FME_LogMessage fme_warn 917351剪“)FACTORY_DEF {*} ClippingFactory FACTORY_NAME Clipper_Vector INPUT CLIPPER FEATURE_TYPE Clipper___ClippersForVector___ INPUT CLIPPEE FEATURE_TYPEClipper___VectorOrsolidclippees___输入clippee feature_type clipe ____rasterclippees____ multiiclip是connect_z_mode Missing_val_mode compute_nans compute_measures_mode连续尺寸_and_z_from clippee clippee_on_boundary内部merge_clipper_attributes noattr_accum_mode“ “attr_conflict_res” " CLIPPER_PREFIX " “DO_NOT_AGGREGATE是的OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper LINES_AS_SEGMENTS NO MODE COMPLETE CLEANING_TOLERANCE NONE 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 NO ATTR_ACCUM_MODE " “attr_conflict_res” " CLIPPER_PREFIX " “DO_NOT_AGGREGATE是的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 * TeeFactory FACTORY_NAME "Clipper INSIDE Splitter" INPUT FEATURE_TYPE Clipper_INSIDE OUTPUT FEATURE_TYPE Clipper_INSIDE_0_PMBiwD96aMs= OUTPUT FEATURE_TYPE Clipper_INSIDE_1_WdTwwzY43qU= # ------------------------------------------------------------------------- FACTORY_DEF * ChoppingFactory FACTORY_NAME Chopper_2 INPUT FEATURE_TYPE Clipper_INSIDE_1_WdTwwzY43qU= MODE VERTEX MAX_VERTICES "1" APPROX_LENGTH " “remnant_attribute”“chop_polygons Reject_invalid_geom是Deaggrege_Input Deaggregate输出切换Feature_type Chopper_2_Chopped#----------------------------------------------------------------如果{{匹配} == {匹配}} {puts {宏匹配器_2_attrmatchmatch_attributes};} elsef {{match} == {除}} {puts {宏匹配器_2_attrmatch match_all_attrs_except};} else {puts {宏匹配器_2_attrmatch match_all_attributes};factory_def {*}匹配acture access_name匹配器_2输入feature_type chockper_2_chopped match_geometry 3d $(matcher_2_attrmatch)blank_and_missing_differ no lenient_geometry_match是add_to_matched _match_id @count(matcher_2)list_attrs_to_include { list_attrs_to_include_mode. OUTPUT SINGLE_MATCHED FEATURE_TYPE Matcher_2_SINGLE_MATCHED OUTPUT NOT_MATCHED FEATURE_TYPE Matcher_2_NOT_MATCHED # ------------------------------------------------------------------------- INCLUDE [ if { {MATCH} == {MATCH} } { puts {MACRO Matcher_3_ATTRMATCH MATCH_ATTRIBUTES }; } elseif { {MATCH} == {EXCEPT} } { puts {MACRO Matcher_3_ATTRMATCH MATCH_ALL_ATTRS_EXCEPT }; } else { puts {MACRO Matcher_3_ATTRMATCH MATCH_ALL_ATTRIBUTES}; } FACTORY_DEF {*} MatchingFactory FACTORY_NAME Matcher_3 INPUT FEATURE_TYPE Matcher_2_SINGLE_MATCHED INPUT FEATURE_TYPE Matcher_2_NOT_MATCHED INPUT FEATURE_TYPE Matcher_SINGLE_MATCHED INPUT FEATURE_TYPE Matcher_NOT_MATCHED MATCH_GEOMETRY 3D $(Matcher_3_ATTRMATCH) BLANK_AND_MISSING_DIFFER No LENIENT_GEOMETRY_MATCH Yes ADD_TO_MATCHED _match_id @Count(Matcher_3) LIST_ATTRS_TO_INCLUDE { list_attrs_to_include_mode. 输出not_matched feature_type matcher_3_not_matched#------------------------------------------------------------------------------------------- Value _clipp. ,测试仪)= YES编码BOOLEAN_OPERATOR或输出传递FEATURE_TYPE TESTER_PASED FACTION_DEF * TEEFACTURY FARCENT_NAME“测试仪传递分配器”输入FEATURE_TYPE TESTER_PASED输出FEATURE_TYPE TESTER_PASED_0_M1WQJKIH4E0 = OUTPUT FEATURE_TYPE TESTER_PASED_1_8T6D0F2oyou =# - - - - - - - - - - ----------------------------------------------------------------------- Factory_Def * TestFactory Input Feature_Type Tester_passed_1_8T6D0F2oyou = Test“指定坐标”==“All Coordinates”输出传递Feature_Type ConryExtractor_2_passed输出失败Feature_Type ConordeExtractor_2_Failed Factory_Def * TestFactory Factory_Name ComentteExtractor_2_passed Input Feature_Type ConnoryExtractor_2_passed Testextractor_2_passed Test @Dimension()== 2输出通过feature_type comnityextractor_2_output @zvalue(“”)@coorder(x,全部,“ “{}。x, FLATTEN_AGGREGATE,是的)@Coordinate (y),“ “{} .y,flatten_aggregate,no)@coordord(z,全部,” “{} .z,flatten_aggregate,no)@dimension(2)输出失败feature_type conordingextractor_2_output @coorder(x,全部,” “{}。x, FLATTEN_AGGREGATE,是的)@Coordinate (y),“ “{} .y,flatten_aggregate,no)@coordord(z,全部,” “{}还是z, FLATTEN_AGGREGATE) FACTORY_DEF * TestFactory FACTORY_NAME CoordinateExtractor_2_FAILED INPUT FEATURE_TYPE CoordinateExtractor_2_FAILED TEST @Dimension() == 2 OUTPUT PASSED FEATURE_TYPE CoordinateExtractor_2_FAILED_PASSED OUTPUT FAILED FEATURE_TYPE CoordinateExtractor_2_OUTPUT "_x" @Coordinate(x,"0",FLATTEN_AGGREGATE,YES) "_y" @Coordinate(y,"0",FLATTEN_AGGREGATE,NO) "_z" @Coordinate(z,"0",FLATTEN_AGGREGATE,NO) FACTORY_DEF * TestFactory FACTORY_NAME CoordinateExtractor_2_FAILED_PASSED INPUT FEATURE_TYPE CoordinateExtractor_2_FAILED_PASSED TEST "" == "" OUTPUT PASSED FEATURE_TYPE CoordinateExtractor_2_OUTPUT "_x" @Coordinate(x,"0",FLATTEN_AGGREGATE,YES) "_y" @Coordinate(y,"0",FLATTEN_AGGREGATE,NO) OUTPUT FAILED FEATURE_TYPE CoordinateExtractor_2_OUTPUT "_x" @Coordinate(x,"0",FLATTEN_AGGREGATE,YES) "_y" @Coordinate(y,"0",FLATTEN_AGGREGATE,NO) @SupplyAttributes("_z","") # ------------------------------------------------------------------------- # Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ set safeName "[regsub -all {[^a-zA-Z0-9]} {01_clipped_inside} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] FACTORY_DEF {*} InspectorFactory FACTORY_NAME 01_clipped_inside_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE Clipper_INSIDE_0_PMBiwD96aMs= GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY { } GROUP_ATTRIBUTE_PREFIX { 01_clipped_inside } 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 01_clipped_inside_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 _clipped,varchar 255. Mode Record Store_scanned_metadata record_directly_to_disk是max_features_to_record win32 2000000#------------------------------------------------------------------- # Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR INCLUDE [ set safeName "[regsub -all {[^a-zA-Z0-9]} {03__clipper_original} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] FACTORY_DEF {*} InspectorFactory FACTORY_NAME 03__clipper_original_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA= GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY { } GROUP_ATTRIBUTE_PREFIX { 03__clipper_original } 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 03__clipper_original_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 MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 # ------------------------------------------------------------------------- FACTORY_DEF * GQueryFactory FACTORY_NAME GeometryCoercer INPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c= GQUERY "@EvaluateExpression(FDIV,STRING_ENCODED,for 地质 几何学 在哪里 地质 count 父母::几何 = 0 返回 数字 地质 fme_id ,几何铲形)“动作coere_geometry参数fme_line baseName几何图形刮刀输出结果_type geometrycoercer_coerced#------------------------------------------------------------- expory_def {*} overlayfactory factory_name pointonlineOverlayer输入行Feature_type GeometryCoerCer_CoerCed输入点feature_type tester_passed_0_m1wqjkih4e0 =公差0重叠_count_attribute“_overlaps”deagrege_input是merge_attrs“no”attr_accum_mode“ “attr_conflict_res” “incoming_prefix” “ 列表名称 ” “list_attrs_to_include { list_attrs_to_include_mode. candidate_list_name“ “candidate_list_attrs_to_include { } candidate_list_attrs_to_include_mode. 模式完整overlay_type point_on_line输出线Feature_type pointonlineoverlayer_line#----------------------------------------------------------------------------------------------一个list_attrs_to_include { list_attrs_to_include_mode. direction_name“ “lines_as_segments否认为_node_elevation no connect_z_mode first_wins break_connection_across_sets是输出线feature_type linecombiner_line#-------------------------------------------------------------------------- Factory_def * choppingFactory factory_name chopper_3输入feature_type linecombiner_line mode vertex max_vertices“1“约_length” “remnant_attribute”“chop_polygons Reject_invalid_geom是Deaggrege_Input Deaggregate输出切碎的Feature_type Chopper_3_Chopped#-----------------------------------------------------------------------------创建这个变形例将使用的domainname。#因为@count本身将评估表达式来计算#域,我们不需要通过包含[Set DomainPrefix {}的每个功能的TCL中的任何内容。if {{local} == {local}} {set domainprefix [fme_encodeText {counter_}];};将“宏计数器_full_domain $ {domainprefix}计数器”。] Factory_def * executefunctionFactory factory_name country_reptor or commancy_parm_evalization single_pass uppers_dype chopper_3_chopped function_definition @count(拒绝_with_flag,fme_encoded,$(counter_full_domain),“1”)结果_attribute“_count”输出完整的feature_type countruptuptourputt recateed feature_type计数器_ factory_def * teefactory factory_name“计数器 变压器输出Nuker“输入Feature_type计数器_ # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory INPUT FEATURE_TYPE Counter_OUTPUT TEST "Specify Coordinate" == "All Coordinates" OUTPUT PASSED FEATURE_TYPE CoordinateExtractor_PASSED OUTPUT FAILED FEATURE_TYPE CoordinateExtractor_FAILED FACTORY_DEF * TestFactory FACTORY_NAME CoordinateExtractor_PASSED INPUT FEATURE_TYPE CoordinateExtractor_PASSED TEST @Dimension() == 2 OUTPUT PASSED FEATURE_TYPE CoordinateExtractor_OUTPUT @ZValue("") @Coordinate(x,ALL," “{}。x, FLATTEN_AGGREGATE,是的)@Coordinate (y),“ “{} .y,flatten_aggregate,no)@coordord(z,全部,” "{}.z,FLATTEN_AGGREGATE,NO) @Dimension(2) OUTPUT FAILED FEATURE_TYPE CoordinateExtractor_OUTPUT @Coordinate(x,ALL," “{}。x, FLATTEN_AGGREGATE,是的)@Coordinate (y),“ “{} .y,flatten_aggregate,no)@coordord(z,全部,” “{} .z,flatten_aggregate,no)factory_def * testfactory factory_name connessextractor_failed输入feature_type contentextractor_failed test @dimension()== 2输出传递Feature_type connordextractor_failed_pa​​ssed输出失败feature_type conordeExtractor_output”_x“@coords(x,”0“,flatten_aggregate,flatten_aggregate,flatten_aggregate“_y”@coorder(y,“0”,flatten_aggregate,no)factory_def * testfactory factory_name connessextractor_failed_pa​​ssed输入feature_type contentextractor_failed_pa​​ssed test“”==“”输出传递Feature_type comenteExtractor_output“_x”@coords(x,“0”,flatten_aggregate,flatten_aggregate)“_y”@coorde(y,“0”,flatten_aggregate,no)输出失败feature_type conryenteExtractor_output“_x”@coords(x,“0”,flatten_aggregate,是)“_y”@coorde(y,“0”,flatten_aggregate,不) # - - - - - - - - - - - - - - - - - - - - - - ----------------------------{ {属性}== {geom_build} && { } == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && { } == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && { } == {lineSfromopointss}} {puts“macro featuremerger_reference_info geom_build_lines_from_points”;} elsef {{attributes} == {geom_and_attrs} && { } == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && { } == {聚合}} {puts“macro featuremerger_reference_info geom_and_attr_build_aggregates”;} elsef {{attributes} == {geom_and_attrs} && { } == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] FACTORY_DEF {*} ReferenceFactory FACTORY_NAME FeatureMerger INPUT REFERENCER FEATURE_TYPE CoordinateExtractor_OUTPUT INPUT REFERENCEE FEATURE_TYPE CoordinateExtractor_2_OUTPUT REFERENCE_INFO $(FeatureMerger_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED, Value _X ,featuremerger)@EvaluateExpression(FDIV,String_Encoded, Value _X ,featuremerger)自动@evaluateExpression(FDIV,String_Encoded, Value _Y. ,featuremerger)@EvaluateExpression(FDIV,String_Encoded, Value _Y. ,featuremerger)auto attr_accum_mode“hange_conflict”attr_conflict_res“请求者_f_conflict”ignore_nulls“no”handle_null_missing_keys_like_fme2013 no list_attrs_to_include { list_attrs_to_include_mode. merge_attributes是manage_fme_type yes模式完成process_duplicate_reference否参考_first no jeck_invalid_geom是cyperence_tolerance 输出完整功能_type featuremerger_merged输出不完整的feature_type featuremerger_unmerged_requestor#--------------------------------------------------------------- Factory_def * vertexcreatorfactory factory_name vertexcreator输入feature_type featuremerger_merged模式替换索引“ " CONTINUE_ON_ERROR YES XVAL "@EvaluateExpression(FDIV,FLOAT, Value _X ,顶点)“YVAL”@EvaluateExpression(FDIV,Float, Value _Y. ,顶点)“zval”@EvaluateExpression(FDIV,Float, Value _Z. ,顶点)“输出输出Feature_type Vertexcreator_output#------------------------------------------------------------------------------------------------------------------sorter_sorted#--------------------------------------------------------------------------------- Factory_def {*} connectionFactory factory_name linebuilder输入feature_type sorter_sorted account_input_attrs一个list_attrs_to_include { list_attrs_to_include_mode. remove_duplicates没有输出多边形feature_type linebuilder_polygon#--------------------------------------------------------------------------#假设是已经设置和创建的工作空间临时规范。请参阅contreolyefs.cpp - contreolyefs :: writevisualizertempdir default_macro workspace_temp_dir包括[set saf亚搏在线eName'[regsub -all {[^ a-za-z0-9]} {00_clipped_modified} _] _ [expr round(rand()* 1000000)] _[时钟点击-milliseconds]“;把“宏Safe_ffs_亚搏在线name $ safeName”放了;] FACTORY_DEF {*} InspectorFactory FACTORY_NAME 00_clipped_modified_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE LineBuilder_POLYGON GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY {} GROUP_ATTRIBUTE_PREFIX {00_clipped_modified} RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING输出结果FEATURE_TYPE __viewme__#现在将所有功能集成在录像机,改变他们#功能类型变压器的名称,以便它们查看了默认情况下默认_MacroSisureIzer_Feature_file $(workspace_temp_dir)/ $(safeSt_ffs_name).亚搏在线ffs default_macro visualizer_create_spatial_index no#[pr#45549]数据检查器将限制它在win32上读取的最大功能数量,因此我们将相应地限制数量#特征我们使用max_features_to_record指令录制。FACTORY_DEF * RecorderFactory FACTORY_NAME 00_clipped_modified_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)“Inspector”$(Visualizer_Create_spatial_Index)“fsc_schema _overlaps,varchar 255. ,_count,varchar 255. ,_x,varchar 255. ,_y,varchar 255. ,_clipped,varchar 255. ,_match_id,varchar 255. ,_z,varchar 255. Mode Record Store_scanned_metadata record_directly_to_disk是max_features_to_record win32 2000000#------------------------------------------------------------------------------------------------------输出路由功能_type *输出not_routed feature_type __nuke_me__ @ tcl2(“fme_statmessage 818059 [fme_getattribute fme_template_feature_feature_feature_type] 818060 818061 fme_warn”)#---------------------------------------------------------------- Factory_def * teefactoryfactory_name“最终输出nuker”输入feature_type __nuke_me__#--------------------------------------------------------------------------------- Factory_def * creationfactory factory_name visualizer processor create_at_end输出feature_type __nukeme__ @tcl(“如果[文件存在{$(workspace_temp_dir)}] {set文件[glob -nocompline -directory {$(workspace_temp_dir)} -tAils * .ffs];if {[llength $ files] == 1} {set thefile {$(workspace_temp_dir)/};附加到文件[Lindex $文件0];eval fme_execute system \ 173 \ 042 $(fme_home_unix)/ fmedatainspector \ 042 --visualizer --single-应用程序 - 关闭--no-source-prompt -f ffs \ 042 $ thefile \ 042&\ 175;} elsef {[llength $ files] == 0} {catch {file delest -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 FACTORY_NAME VisualizerCleaner INPUT FEATURE_TYPE __NUKEME__