location of points
" POSITION="740.632 -1201.01" TOP_LEFT="740.632 -1201.01" BOTTOM_RIGHT="739.632 -1200.01" BOUNDING_RECT="740.632 -1201.01 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="16">flight Numbers
" POSITION="1366.51 -1201.01" TOP_LEFT="1366.51 -1201.01" BOTTOM_RIGHT="1365.51 -1200.01" BOUNDING_RECT="1366.51 -1201.01 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="17">Counties
" POSITION="1123.76 -896.26" TOP_LEFT="1123.76 -896.26" BOTTOM_RIGHT="1122.76 -895.26" BOUNDING_RECT="1123.76 -896.26 -1 -1" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.196078" SIZE_POLICY="8" COMMENT_TYPE="REGULAR" ANCHORED_NODE="22">This transformer accepts any features, but features that don't have area geometry will not be used.
Every resulting point will hold attributes that are held by an input area feature containing the point spatially.
If a point is contained by two or more areas in a same group (i.e. the areas are overlapping), the attributes will be migrated from any one of them.
Note:
This is an experimental transformer. Before adding it to your workspace, check enough whether the implementation is suitable to your purpose.
The implementation has been inspired by this thread in FME Community Answers.
Stratified random point in FME
http://fmepedia.safe.com/CommunityAnswers?id=906a0000000d3suAAA
" legal_terms_conditions="Copyright (c) 2014 pragmatica inc.
Permission is granted to anyone, free of charge, to use, modify and distribute the object code form of this transformer for any purpose, subject to the following restrictions:
1) The origin of this transformer and associated FME(R) software must not be misrepresented.
2) This transformer may only be used in conjunction with a validly licensed copy of FME software.
THIS SOFTWARE IS PROVIDED BY PRAGMATICA INC. "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PRAGMATICA INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
" view_position="672 567" zoom_scale="100" requirements_keyword="none" is_visible="false" fmx_attribute_propogation_mode="AUTO" requirements="FME 2014 SP3+
" fme_document_guid="f43efd25-5719-4db2-abd9-7f56543c38fb" doc_dynamic_input_attrs="0" fme_process_group_by="" usage="Parameters
Group By:
Select attributes that should be used to group input features.
Number of Points:
Specify the number of points to be created.
If you specified the "Group By" parameter, this parameter means the number of points per a group.
Otherwise, it means the total number of points to be created.
" category="Pragmatica" history="2014-09-20,TakashiDensity of points for each box belonging to same group will be approximately identical.
" POSITION="294 -686" TOP_LEFT="294 -686" BOTTOM_RIGHT="1195 -794" BOUNDING_RECT="294 -686 901 108" ORDER="5e+14" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.784314,0.192157" SIZE_POLICY="10" COMMENT_TYPE="REGULAR" ANCHORED_NODE="0">1.0编码= US_ASCII独立的= 没有? 几何学 多边形 行 罗 x = -1y = -1罗 x = 1y = -1罗 x = 1y = 1罗 x = -1y = 1罗 x = -1y = -1行 多边形 几何学 )FACTORY_DEF $(Creator_2_CLASSIC)CreationFactory FACTORY_NAME Creator_2_CLASSIC_Creator $(Creator_2_2D3D)$(Creator_2_COORDS)CREATE_AT_END无输出FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_2_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 OUTPUT FEATURE_TYPE Creator_2_CREATED @ TCL2(Creator_2_CoordSysRemover)@CoordSys()fme_feature_type Creator_2 FACTORY_DEF * TeeFactory FACTORY_NAME“Creator_2 CREATED分配器” INPUT FEATURE_TYPE Creator_2_CREATED OUTPUT FEATURE_TYPE Creator_2_CREATED_0_YoZgL8R6ba0 = OUTPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG + 6re7QA = FACTORY_DEF * BranchingFactory FACTORY_NAME “Creator_2_CREATED_0_YoZgL8R6ba0 =分支器-1 10” INPUT FEATURE_TYPE Creator_2_CREATED_0_YoZgL8R6ba0 = TARGET_FACTORY “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” OUTPUT PASSED FEATURE_TYPE * @RemoveAttributes(”Creator_2_CREATED_0_YoZgL8R6ba0 =分支器-1 10" .BranchingFactory.Count)FACTORY_DEF * BranchingFactory FACTORY_NAME“Creator_2_CREATED_1_ejQG + 6re7QA = -1分支器23" INPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG + 6re7QA = TARGET_FACTORY “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” 的Passed FEATURE_TYPE * @RemoveAttributes( “Creator_2_CREATED_1_ejQG + 6re7QA = -1分支器23” .BranchingFactory.Count)#------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * # ------------------------------------------------------------------------- GlobalVariable Tiler_NUM_TO_CREATE 0 INCLUDE [ if {($(FME_BUILD_NUM) < 5669) || [FME_ComponentIsLicensed -factory PointCloudTilingFactory]} { puts "MACRO POINT_CLOUD_TILER_IN *"; } else { puts "MACRO POINT_CLOUD_TILER_IN NOT_THIS_TIME"; } ] FACTORY_DEF * TeeFactory FACTORY_NAME Tiler_CleanUpAttrs INPUT FEATURE_TYPE Creator_2_CREATED_1_ejQG+6re7QA= OUTPUT FEATURE_TYPE Tiler___CleanedUpInput___ @RemoveAttributes("_column","_row") FACTORY_DEF * TestFactory FACTORY_NAME Tiler_ClippeePointCloudFilter INPUT FEATURE_TYPE Tiler___CleanedUpInput___ TEST &fme_type == "fme_point_cloud" OUTPUT PASSED FEATURE_TYPE Tiler___PointCloudTilees___ OUTPUT FAILED FEATURE_TYPE Tiler___OtherTilees___ FACTORY_DEF $(POINT_CLOUD_TILER_IN) PointCloudTilingFactory FACTORY_NAME Tiler_PointCloudTiler INPUT FEATURE_TYPE Tiler___PointCloudTilees___ NUM_HORIZONTAL_TILES "2" NUM_VERTICAL_TILES "2" TILE_COLUMN_ATTRIBUTE "_column" TILE_ROW_ATTRIBUTE "_row" OUTPUT TILES FEATURE_TYPE Tiler_TILED FACTORY_DEF * TeeFactory FACTORY_NAME Tiler_StartSplitter INPUT FEATURE_TYPE Tiler___OtherTilees___ OUTPUT FEATURE_TYPE Tiler__TO_BOUNDS__ OUTPUT FEATURE_TYPE Tiler__TO_CLIPPER_CLIPPEE__ FACTORY_DEF * BoundingBoxFactory FACTORY_NAME Tiler_BoundsByTileSize INPUT FEATURE_TYPE Tiler__TO_BOUNDS__ BOUNDING_BOX_TYPE GRID_POLYGONS GRID_CELL_COUNT "2" "2" GRID_ROW_ATTR "_row" GRID_COL_ATTR "_column" OUTPUT BOUNDING_BOX FEATURE_TYPE Tiler__TO_CLIPPER_CLIPPER__ FACTORY_DEF * ClippingFactory FACTORY_NAME Tiler_Clipper INPUT CLIPPEE FEATURE_TYPE Tiler__TO_CLIPPER_CLIPPEE__ @SupplyAttributes(__Tiler_temp_orientation__, @Orient()) INPUT CLIPPER FEATURE_TYPE Tiler__TO_CLIPPER_CLIPPER__ MULTICLIP YES CLIPPEE_ON_BOUNDARY INSIDE MERGE_CLIPPER_ATTRIBUTES YES MODE COMPLETE CONNECT_Z_MODE IGNORE_AND_MAKE_PATH OUTPUT INSIDE FEATURE_TYPE Tiler__FINISHED__ OUTPUT CLIPPED_INSIDE FEATURE_TYPE Tiler__CLIPPED__ FACTORY_DEF * TeeFactory FACTORY_NAME Tiler_ReorientLHR INPUT FEATURE_TYPE Tiler__CLIPPED__ __Tiler_temp_orientation__ left_hand_rule OUTPUT FEATURE_TYPE Tiler__FINISHED__ @Orient( LEFT_HAND_RULE ) FACTORY_DEF * TeeFactory FACTORY_NAME Tiler_RemoveOrientAttr INPUT FEATURE_TYPE Tiler__FINISHED__ INPUT FEATURE_TYPE Tiler__CLIPPED__ OUTPUT FEATURE_TYPE Tiler_TILED @RemoveAttributes(false,__Tiler_temp_orientation__) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "RandomPointGenerator Area Input Collector" INPUT FEATURE_TYPE Creator_2_CREATED_0_YoZgL8R6ba0= OUTPUT FEATURE_TYPE RandomPointGenerator_Area MACRO RandomPointGenerator_WORKSPACE_NAME RandomPointGenerator MACRO $(RandomPointGenerator_WORKSPACE_NAME)_XFORMER_NAME RandomPointGenerator MACRO $(RandomPointGenerator_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(RandomPointGenerator_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(RandomPointGenerator_WORKSPACE_NAME)_SUB_DOC_NAME RandomPointGenerator MACRO $(RandomPointGenerator_WORKSPACE_NAME)_GROUP_BY MACRO $(RandomPointGenerator_WORKSPACE_NAME)_NUM_POINTS 50 MACRO $(RandomPointGenerator_WORKSPACE_NAME)_MIN_NUM 10 MACRO $(RandomPointGenerator_WORKSPACE_NAME)_DENSIFY_FACTOR 2 DEFAULT_MACRO RandomPointGenerator_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(RandomPointGenerator_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(RandomPointGenerator_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_Area1478100727 Input Splitter" INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Area" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Area" # ------------------------------------------------------------------------- MACRO OUTPUT_AREA_FTYPE not_selected MACRO OUTPUT_AREA_FTYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_AREA MACRO OUTPUT_ELLIPSE_FTYPE not_selected MACRO OUTPUT_ELLIPSE_FTYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_ELLIPSE MACRO OUTPUT_INSTANCE_FTYPE not_selected Lookup $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_RouterTable "" "not_selected" fme_area $(OUTPUT_AREA_FTYPE) fme_ellipse $(OUTPUT_ELLIPSE_FTYPE) MACRO COLLECTION_HANDLING NOT_THIS_TIME MACRO INSTANCE_FILTERING * INCLUDE [ if 0 { puts "MACRO COLLECTION_HANDLING *"; if {看跌期权 “MACRO INSTANCE_FILTERING NOT_THIS_TIME”;};};如果{{$(OUTPUT_INSTANCE_FTYPE)} == “not_selected”} {放 “MACRO INSTANCE_FILTERING NOT_THIS_TIME”;};] FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_InputPassThrough INPUT FEATURE_TYPE “$(RandomPointGenerator_WORKSPACE_NAME)_Area” 输出FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Input___ @Geometry(FIX_FMETYPE_FMEGEOMETRY)FACTORY_DEF $(INSTANCE_FILTERING)TestFactory中FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_InstanceTest INPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Input___TEST @Geometry(IS_GEOMETRY_INSTANCE)== 1 OUTPUT PASSED FEATURE_TYPE $(OUTPUT_INSTANCE_FTYPE)OUTPUT失败FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Input___ FACTORY_DEF $(COLLECTION_HANDLING)TestFactory中FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_CollectionTest INPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Input___测试与fme_type == “fme_collection”OUTPUT失败FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Not_Collection___的Passed FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Collection___ FACTORY_DEF $(COLLECTION_HANDLING)DeaggregateFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_Deagg INPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Collection___ HOMOGENIZE_COLLECTIONS YES YES递推YES SET_FME_TYPE INSTANTIATE_GEOMETRY_INSTANCES_NEW 输出点FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ HomogeneousAggregate___输出线路FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ HomogeneousAggregate___输出面FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ HomogeneousAggregate___输出DONUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ HomogeneousAggregate___产出的总FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ HomogeneousAggregate___ FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_RouterPrepper INPUTFEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ HomogeneousAggregate___ INPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Not_Collection___ INPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___ Input___ OUTPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter ___坦然___$(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_c4692e30_c760_49b7_8f7a_087dc596d55b3_targetFeatureType @Lookup($(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_RouterTable,&fme_type) FACTORY_DEF * TestFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_Router INPUT FEATURE_TYPE $(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter___Prepped___ TEST @Value($(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_c4692e30_c760_49b7_8f7a_087dc596d55b3_targetFeatureType) != "not_selected" OUTPUT PASSED FEATURE_TYPE * @FeatureType(@Value($(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_c4692e30_c760_49b7_8f7a_087dc596d55b3_targetFeatureType)) @RemoveAttributes($(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_c4692e30_c760_49b7_8f7a_087dc596d55b3_targetFeatureType) OUTPUT FAILED FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_ " @RemoveAttributes($(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_c4692e30_c760_49b7_8f7a_087dc596d55b3_targetFeatureType) FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter . 输出Nuker“输入Feature_type”$(RANDOMPOINTGONERATOR_WARTSSPACE_NAME)_geometryFilter_ “#------------------------------------------------------------------ Tcl2 proc $(RandomPointGenerator_WORKSPACE_NAME)_ParameterFetcher_doFetch {} { foreach {name val} {"randompointgenerator.group_by {$($(RandomPointGenerator_WORKSPACE_NAME)_GROUP_BY$encode)}"} { if { [string match {* *} $ val] == 1} {set val [fme_execute evaluate表达{string} $ val {$(randompointgenerator_workspace_name)_parameterfetcher}];} elsef {[string match {* fme_conditional *} $ val] == 1} {set val [fme_execute evaluate表达{string} $ val {$(randompointgenerator_workspace_name)_parameterfetcher}];} else {set val [fme_decodetextorattrttr $ val];};FME_SetAttribute [FME_DecodeText $名称] $ VAL}} FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_ParameterFetcher INPUT FEATURE_TYPE “$(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_AREA” INPUT FEATURE_TYPE “$(RandomPointGenerator_WORKSPACE_NAME)_GeometryFilter_ELLIPSE” 输出FEATURE_TYPE “$(RandomPointGenerator_WORKSPACE_NAME)_ParameterFetcher_OUTPUT” @ TCL2($(randompointgenerator_workspace_name)_parameterfetcher_dofetch)#---------------------------------------------------------------------------------------- tcl2 fme_decode proc concatGroupByAttributeValues 放 值 foreach attr FME_GetAttribute randompointgenerator.group_by拉佩德 值 FME_GetAttribute attr 返回 加入 值 _ MACRO COPIER @Tcl2("") INCLUDE [if {[string length {}] == 0} {puts {MACRO COPIER 1}} MACRO OUTPUTATTR "randompointgenerator. "group_id" INCLUDE [if{[字符串长度{随机点生成器。group_id}] = = 0}{把{宏OUTPUTATTR}} FACTORY_DEF * TeeFactory FACTORY_NAME美元(RandomPointGenerator_WORKSPACE_NAME) _TclCaller输入FEATURE_TYPE " $ (RandomPointGenerator_WORKSPACE_NAME) _ParameterFetcher_OUTPUT“NUMBER_OF_COPIES美元(复印机)输出FEATURE_TYPE RandomPointGenerator_WORKSPACE_NAME _TclCaller_OUTPUT“美元”(OUTPUTATTR)@Tcl2(“concatGroupByAttributeValues ") # ------------------------------------------------------------------------- FACTORY_DEF * SortFactory FACTORY_NAME $ (RandomPointGenerator_WORKSPACE_NAME) _Sorter输入FEATURE_TYPE " $ (RandomPointGenerator_WORKSPACE_NAME) _TclCaller_OUTPUT“SORT_BY randompointgenerator。group_id ALPHA ASCENDING OUTPUT SORTED FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Sorter_SORTED" FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_Sorter_SORTED Splitter" INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Sorter_SORTED" OUTPUT FEATURE_TYPE" $ (RandomPointGenerator_WORKSPACE_NAME) _Sorter_SORTED_0_xVKS7A8AJxE = "输出FEATURE_TYPE”(RandomPointGenerator_WORKSPACE_NAME) _Sorter_SORTED_1_ + dZRsoI37hM美元 =" # ------------------------------------------------------------------------- 包括设置macroLine”宏$ (RandomPointGenerator_WORKSPACE_NAME) _AttributeKeeper_7d6a818c_c1a4_4e93_936d_db85b28d5ebd3_LIST_EXP”;foreach attr [split ""]{设置attr [FME_DecodeText $attr];设置attr [regsub "{}$" $attr "{}.*"];设置attr [regsub -all "{}" $attr "{\[0-9\]+}"];附加macroLine”^ attr美元”;}; puts $macroLine; ] FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Sorter_SORTED_0_xVKS7A8AJxE=" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper_OUTPUT" @KeepAttributes(randompointgenerator.group_id,fme_regexp_match,"^fme_$($(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper_7d6a818c_c1a4_4e93_936d_db85b28d5ebd3_LIST_EXP)") # ------------------------------------------------------------------------- FACTORY_DEF * DeaggregateFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper_OUTPUT" RECURSIVE Yes SPLIT_COMPOSITES No INSTANTIATE_GEOMETRY_INSTANCES_NEW No SET_FME_TYPE Yes OUTPUT POINT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator_DEAGGREGATED" OUTPUT LINE FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator_DEAGGREGATED" OUTPUT POLYGON FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator_DEAGGREGATED" OUTPUT DONUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator_DEAGGREGATED" OUTPUT AGGREGATE FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator_DEAGGREGATED" # ------------------------------------------------------------------------- FACTORY_DEF * TransformFact:3:AreaOnAreaOverlayer FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_AreaOnAreaOverlayer" FACTORY_META_PARAMS TRANSFORMER_NAME:"$(RandomPointGenerator_WORKSPACE_NAME)_AreaOnAreaOverlayer" TRANSFORMER_PARAMS:XFORMER_NAME,$(RandomPointGenerator_WORKSPACE_NAME)_AreaOnAreaOverlayer,TRANSFORMER_GROUP,,PARAMETERS_GROUP,,GRP_BY,randompointgenerator.group_id,OVC_ATTR,,LIST_NAME, PROCESS_GROUP_BY randompointgenerator.group_id MULTI_PROCESS NO_PARALLELISM GROUPS_ARE_ORDERED YES INPUT AREA FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Deaggregator_DEAGGREGATED" OUTPUT AREA FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AreaOnAreaOverlayer_AREA" # ------------------------------------------------------------------------- INCLUDE [ if { ({Plane Area} == {Sloped Area}) } { puts {MACRO $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_func @Area(REJECTABLE,SLOPED_AREAS,"1")}; } else { puts {MACRO $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_func @Area(REJECTABLE,"1")}; } ] FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AreaOnAreaOverlayer_AREA" @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) OUTPUT FEATURE_TYPE ___TOREJECTOR___ "_area1" $($(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_func) FACTORY_DEF * TestFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT FAILED FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_OUTPUT" @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_ “INPUT FEATURE_TYPE” $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_ "输出失败FEATURE_TYPE * @Abort(ENCODED, RandomPointGenerator_AreaCalculator . 输出 一种 拒绝了 功能 .) # ------------------------------------------------------------------------- # 检查是否我们要做最小边界框计算包括(如果{{BB} = = {MINBB}}{把{宏$ (RandomPointGenerator_WORKSPACE_NAME) _BoundingBoxReplacer_BBFunc @Bounds (MIN_BOUNDING,)};} else {MACRO $(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_BBFunc @Bounds(__minx, __maxx, __miny, __max, __minz, __maxz,GEOMETRIC) @Tcl2($(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_9582a8de_031a_455c_af36_512abae87aa33_set_geom_and_type)};}] Tcl2 proc $(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_9582a8de_031a_455c_af36_512abae87aa33_set_geom_and_type {} {if {[FME_Coordinates numCoords] > 0} {FME_Execute RemoveGeometry;set minX [FME_GetAttribute ___MINX]; / /设置minX属性设置minY [FME_GetAttribute __miny];set maxX [FME_GetAttribute __maxx];set maxY [FME_GetAttribute __max]; / /设置maxY属性if {[string is double $minX] && [string is double $maxX]} {set xSame [expr $minX == $maxX]} else {set xSame [string == $minX $maxX]};}if {[string is double $maxY]} {set ySame [expr $minY == $maxY]} else {set ySame [string = $minY $maxY]}; / /设置ySame [expr $minY == $maxY]};FME_Coordinates addCoord $minX $minY; if {$xSame && $ySame} { FME_Execute GeometryType fme_point; FME_SetAttribute fme_type fme_point } elseif {$xSame || $ySame} { FME_Coordinates addCoord $maxX $maxY; FME_Execute GeometryType fme_line; FME_SetAttribute fme_type fme_line } else { FME_Coordinates addCoord $minX $maxY; FME_Coordinates addCoord $maxX $maxY; FME_Coordinates addCoord $maxX $minY; FME_Coordinates addCoord $minX $minY; FME_Execute GeometryType fme_polygon; FME_SetAttribute fme_type fme_area }; FME_UnsetAttributes ___MINX ___MAXX ___MINY ___MAXY ___MINZ ___MAXZ; set width [expr $maxX - $minX]; set length [expr $maxY - $minY]; if {$width > $length} { set temp $length; set length $width; set width $temp; }; if { {} != {} } { FME_SetAttribute {""} $width; }; if { {} != {} } { FME_SetAttribute {""} $length; } } } FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_OUTPUT" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_BOX" @Force2D() $($(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_BBFunc) # ------------------------------------------------------------------------- FACTORY_DEF * TransformFact:11:Dissolver FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver" FACTORY_META_PARAMS TRANSFORMER_NAME:"$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver" TRANSFORMER_PARAMS:XFORMER_NAME,$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver,TRANSFORMER_GROUP,,GROUP_BY,randompointgenerator.group_id,PARAMETERS_GROUP,,DIS_ATTR,,ATTR_ACCUM_GROUP,,ACCUM_INPUT_ATTRS,No,SUM,_area1,AV,,WEIGHT,,LIST_NAME,,PARAMETERS_GROUP_ADVANCED,,NO_OVRLP,No PROCESS_GROUP_BY randompointgenerator.group_id MULTI_PROCESS NO_PARALLELISM GROUPS_ARE_ORDERED YES INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_BOX" OUTPUT AREA FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver_AREA" DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver_ " INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver_ . "输出失败FEATURE_TYPE * @Abort(ENCODED, RandomPointGenerator_Dissolver . 输出 一种 拒绝了 功能 .) # ------------------------------------------------------------------------- # 检查是否我们要做最小边界框计算包括(如果{{BB} = = {MINBB}}{把{宏$ (RandomPointGenerator_WORKSPACE_NAME) _BoundingBoxReplacer_2_BBFunc @Bounds (MIN_BOUNDING,)};} else {MACRO $(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2_BBFunc @Bounds(__minx, __maxx, __miny, __max, __minz, __maxz,GEOMETRIC) @Tcl2($(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2_4e9fb6bb_6c93_43c0_9a85_a77e54fe239b3_set_geom_and_type)};}] Tcl2 proc $(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2_4e9fb6bb_6c93_43c0_9a85_a77e54fe239b3_set_geom_and_type {} {if {[FME_Coordinates numCoords] > 0} {FME_Execute RemoveGeometry;set minX [FME_GetAttribute ___MINX]; / /设置minX属性设置minY [FME_GetAttribute __miny];set maxX [FME_GetAttribute __maxx];set maxY [FME_GetAttribute __max]; / /设置maxY属性if {[string is double $minX] && [string is double $maxX]} {set xSame [expr $minX == $maxX]} else {set xSame [string == $minX $maxX]};}if {[string is double $maxY]} {set ySame [expr $minY == $maxY]} else {set ySame [string = $minY $maxY]}; / /设置ySame [expr $minY == $maxY]};FME_Coordinates addCoord $minX $minY; if {$xSame && $ySame} { FME_Execute GeometryType fme_point; FME_SetAttribute fme_type fme_point } elseif {$xSame || $ySame} { FME_Coordinates addCoord $maxX $maxY; FME_Execute GeometryType fme_line; FME_SetAttribute fme_type fme_line } else { FME_Coordinates addCoord $minX $maxY; FME_Coordinates addCoord $maxX $maxY; FME_Coordinates addCoord $maxX $minY; FME_Coordinates addCoord $minX $minY; FME_Execute GeometryType fme_polygon; FME_SetAttribute fme_type fme_area }; FME_UnsetAttributes ___MINX ___MAXX ___MINY ___MAXY ___MINZ ___MAXZ; set width [expr $maxX - $minX]; set length [expr $maxY - $minY]; if {$width > $length} { set temp $length; set length $width; set width $temp; }; if { {} != {} } { FME_SetAttribute {""} $width; }; if { {} != {} } { FME_SetAttribute {""} $length; } } } FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2 INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Dissolver_AREA" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2_BOX" @Force2D() $($(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2_BBFunc) # ------------------------------------------------------------------------- INCLUDE [ if { ({Plane Area} == {Sloped Area}) } { puts {MACRO $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2_func @Area(REJECTABLE,SLOPED_AREAS,"1")}; } else { puts {MACRO $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2_func @Area(REJECTABLE,"1")}; } ] FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2 INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_BoundingBoxReplacer_2_BOX" @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) OUTPUT FEATURE_TYPE ___TOREJECTOR___ "_area2" $($(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2_func) FACTORY_DEF * TestFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT FAILED FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2_OUTPUT" @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_AreaCalculator_2_ “输入feature_type”$(randompointgenerator_workspace_name)_areacalculator_2_ “输出失败Feature_type * @abort(编码,randompointgenerator_areacalculator_2 输出 一种 拒绝了 功能 .) # ------------------------------------------------------------------------- DEFAULT_MACRO __ (RandomPointGenerator_WORKSPACE_NAME) _StatisticsCalculator_55810dfc_cbc5_498d_82e9_2a5bdd4dc2753_GROUP_BY宏观__美元(RandomPointGenerator_WORKSPACE_NAME) _StatisticsCalculator_55810dfc_cbc5_498d_82e9_2a5bdd4dc2753_GROUP_BY randompointgenerator。group_id DYNAMIC_FUNCTION_CONFIGURATION Python FMEOBJECTS DYNAMIC_FUNCTION_CONFIGURATION Python import StatisticsCalculatorconnectTransformer('$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator',{'GROUP_BY_MACRO':'__$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_55810dfc_cbc5_498d_82e9_2a5bdd4dc2753_GROUP_BY', 'GROUP_BY':'randompointgenerator. ');group_id”、“STATS_ATTRS‘:’_area1 _area2”、“SUM_ATTR‘:’_sum”、“COMPUTE_HISTOGRAM”:“没有”、“HISTO_ATTR‘:’ ”、“PREPEND_ATTR_NAME”:“是的”,没有:没有})”FACTORY_DEF * TeeFactory FACTORY_NAME $ (RandomPointGenerator_WORKSPACE_NAME) _StatisticsCalculator_InputProcessor输入FEATURE_TYPE " $ (RandomPointGenerator_WORKSPACE_NAME) _AreaCalculator_2_OUTPUT“输出FEATURE_TYPE __ORIGINAL__ @Python (StatisticsCalculator.recordFeature, $ (RandomPointGenerator_WORKSPACE_NAME) _StatisticsCalculator) FACTORY_DEF *tefactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME) _statisticscalculator_unneeddinputnuker INPUT FEATURE_TYPE __ORIGINAL__ OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE" FACTORY_DEF * SortFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_CompleteOutputter INPUTFEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__输入FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE"输出排序FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE"@Python(StatisticsCalculator.summarizeStatistics,$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator,__ORIGINAL__) FACTORY_DEF * CreationFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_SummaryCreator CREATE_AT_END NUMBER_TO_CREATE 1$ (RandomPointGenerator_WORKSPACE_NAME) _StatisticsCalculator_SummaryExploder LIST_NAME $ (RandomPointGenerator_WORKSPACE_NAME) _StatisticsCalculator_stats{}模式LEAN_AND_MEAN CLONE_GEOMETRY没有输入FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING __ # -------------------------------------------------------------------------FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_BoundsExtractor INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_StatisticsCalculator_COMPLETE" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_BoundsExtractor_OUTPUT" @Bounds(_xmin,_xmax,_ymin,_ymax------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME $ (RandomPointGenerator_WORKSPACE_NAME) _AttributeCreator_2 ATTRSET_PROPAGATE_MISSING是的输入FEATURE_TYPE ATTR _num_group“$ (RandomPointGenerator_WORKSPACE_NAME) _BoundsExtractor_OUTPUT FME_CONDITIONAL: DEFAULT_VALUE 评估 1.0 * $($(randompointgenerator_workspace_name)_num_points $编码)* 价值 _area2._sum. 价值 _area1._sum 'bool_op;或; composite_test; ;测试 评估 1.0 * $($(randompointgenerator_workspace_name)_num_points $编码)* 价值 _area2._sum. 价值 _area1._sum <$($(randompointgenerator_workspace_name)_min_num)'$($(randompointgenterator_workspace_name)_min_num)'fme_num_conditions2 ___“attr _ratio 评估 双倍的 价值 _area2 价值 _area2._sum. ATTR _width 评估 价值 _xmax - 价值 _xmin ATTR _height 评估 价值 _ymax. - 价值 _ymin. 输出输出FEATURE_TYPE”(RandomPointGenerator_WORKSPACE_NAME) _AttributeCreator_2_OUTPUT美元 " # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $ (RandomPointGenerator_WORKSPACE_NAME) FEATURE_TYPE _ExpressionEvaluator输入"$(RandomPointGenerator_WORKSPACE_NAME)_AttributeCreator_2_OUTPUT" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_ExpressionEvaluator_OUTPUT" "_num" "@EvaluateExpression(FLOAT, int CEIL. $ ((RandomPointGenerator_WORKSPACE_NAME) _DENSIFY_FACTOR编码美元)* 价值 _num_group. * 价值 _比率 ,$(randompointgenerator_workspace_name)_expressionEvaluator)“#--------------------------------------------------------------------- FACTORY_DEF * VertexCreatorFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_VertexCreator INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_ExpressionEvaluator_OUTPUT" MODE REPLACE INDEX 0 CONTINUE_ON_ERROR YES XVAL "@EvaluateExpression(FLOAT, 价值 _xmin 美元(RandomPointGenerator_WORKSPACE_NAME) _VertexCreator)”YVAL“@EvaluateExpression(浮动, 价值 _ymin. ,$(randompointgenerator_workspace_name)_vertexcreator)“输出输出feature_type”$(randompointgenerator_workspace_name)_vertexcreator_output“default_macro _wb_bypass_termination no factory_def * teefactory factory_name”$(randompointgenerator_workspace_name)_vertexcreator_ “输入feature_type”$(randompointgenerator_workspace_name)_vertexCreator_ "输出失败FEATURE_TYPE * @Abort(ENCODED, RandomPointGenerator_VertexCreator . 输出 一种 拒绝了 功能 .) # ------------------------------------------------------------------------- 包括[macroLine“宏(RandomPointGenerator_WORKSPACE_NAME) _AttributeKeeper_2_4c564475_fd0c_4597_a898_3cb9e8ce031b3_LIST_EXP美元”;foreach attr [split ""]{设置attr [FME_DecodeText $attr];设置attr [regsub "{}$" $attr "{}.*"];设置attr [regsub -all "{}" $attr "{\[0-9\]+}"];附加macroLine”^ attr美元”;};把macroLine美元;[FACTORY_DEF * tefactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper_2 INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_VertexCreator_OUTPUT" OUTPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper_2_OUTPUT"@KeepAttributes (randompointgenerator.group_id、_width _height、_num fme_regexp_match,“^ fme_ $(美元_AttributeKeeper_2_4c564475_fd0c_4597_a898_3cb9e8ce031b3_LIST_EXP (RandomPointGenerator_WORKSPACE_NAME) )") # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME$(RandomPointGenerator_WORKSPACE_NAME)_Cloner_CheckCopies INPUT FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_AttributeKeeper_2_OUTPUT" TEST "@EvaluateExpression(FLOAT, 价值 _num 美元(RandomPointGenerator_WORKSPACE_NAME) _Cloner)”TYPE INT ENCODED OUTPUT PASSED FEATURE_TYPE __toOutput__ FACTORY_DEF * TeeFactory FACTORY_NAME $(RandomPointGenerator_WORKSPACE_NAME)_Cloner_Cloner INPUT FEATURE_TYPE __toOutput__ NUMBER_OF_COPIES "@EvaluateExpression(FLOAT, 价值 _num 美元(RandomPointGenerator_WORKSPACE_NAME) _Cloner)”输出FEATURE_TYPE "$(RandomPointGenerator_WORKSPACE_NAME)_Cloner_COPY" DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME "$(RandomPointGenerator_WORKSPACE_NAME)_Cloner_ .