# ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! # ! FME_PYTHON_VERSION 27 # !START_HEADER # !NULL WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST_DATASET NULL #!END_WB_HEADER # !START_WB_HEADER # !END_WB_HEADER # !END_HEADER LOG_FILENAME”(FME_MF_DIR) CLIPPER_ISSUE美元。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_FILTER_MASK -1 # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME CLIPPER_ISSUE 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 - {[,]} {$ (WORKSPACE_NAME)} {_} wsname;设置gVisualizerTemp $gVisualizerTemp/${wsname}_[时钟格式[时钟秒]-格式%H%M%S];设置“宏WORKSPACE_TEMP_DIR $gVisualizerTemp”;宏VISUALIZER_FEATURE_FILE $ (WORKSPACE_TEMP_DIR) /检查员。ffs MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- Tcl2 proc Geometry1_CoordSysRemover {} { global FME_CoordSys;设置FME_CoordSys {};宏Geometry1_COORDS {{几何对象}=={几何对象}}{放置{MACRO Geometry1_XML *}}}{{几何对象}== {3D坐标列表}}{放置{宏几何1_2d3d 3D_GEOMETRY}}包括[if{{几何对象}== {3D坐标列表}}{放置{宏几何1_2d3d 3D_GEOMETRY};{{Geometry Object} == {2D Min/Max Box}} {set comment{我们需要把COORDS minX minY maxX maxY转换成一个完整的多边形坐标列表};设置splitcods [split]字符串修剪{ }]];如果{[llength $ splitcods] > 4} {set trimmedCoords {};如果{$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $splitCoords] != 4} {error {Geometry1: 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];放入“MACRO Geometry1_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY”;放置{MACRO Geometry1_2D3D 2D_GEOMETRY};创建工厂FACTORY_NAME Geometry1_XML_Creator CREATE_AT_END无输出 xml ? version = 1.0 编码= US_ASCII 独立的= 没有 吗? 几何 尺寸= 2 几何 )FACTORY_DEF $ (Geometry1_CLASSIC) CreationFactory FACTORY_NAME Geometry1_CLASSIC_Creator (Geometry1_2D3D) (Geometry1_COORDS) CREATE_AT_END没有美元输出FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Geometry1_Cloner输入FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE“_creation_instance”输出FEATURE_TYPE Geometry1_CREATED @Tcl2 (Geometry1_CoordSysRemover) @CoordSys () fme_feature_type Geometry1“@EvaluateExpression (ATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIV、几何、多边形 604277.459899998 135590.249900001 604270.159899998 135558.649900001 604309.559899998 135546.849900001 604316.16 135559.95 604370.059899998 135531.149900001 604362.134401768 135510.260176189 604354.959899998 135491.349900001 六十万四千三百五十九点一一二七一七四零六 135488.825504841号 604367.14989998号 135483.939900001 604392.989899998 十三万五千四百七十五点四四九九零零零零一 六十万四千四百零二点六六九八九九九九八 十三万五千四百七十四点一九九九零零零零一 六十万四千四百一十五点二一九八九九九九八 135472.869900001 604424.739899998 十三万五千四百七十一点九零九九零零零零一 六十万四千四百三十二点二六九八九九九九八 十三万五千四百七十二点一九九九零零零零一 604441.729899998号 135470.209900001号 604462.329899998 十三万五千四百六十六点五八九九零零零零一 604482.05049998 135463.006200001年 604482.055199998号 135463.024100001号 六十万四千四百八十二点八六 135465.78个 604490.13号 十三万五千五百一十九点二九 604497.09号 十三万五千五百七十三点五二 六十万四千五百零五点七 十三万五千六百三十七点七九 六十万四千五百零八点四四 十三万五千六百五十八点九六 604508.032599998号 十三万五千六百五十九点一零八三零零零零一 六十万四千四百七十点二九九八九九九九八 十三万五千六百七十二点五三九九零零零零一 604468.99989998号 135672.99900001 六十万四千四百六十五点三九九八九九九九八 十三万五千六百七十五点五九九九零零零零一 604446.901899998 十三万五千六百八十三点二九九四零零零零一 604421.499899998号 135694.099900001 六十万四千四百一十六点二二九八九九九九八 135696.409900001 六十万四千四百零六点七五九八九九九九八 135697.209900001号 604399.759899998个 135697.609900001 604393.66元 十三万五千六百九十七点九三 604389.977699998 十三万五千六百二十点零五六零零零零零一 六十万四千三百五十四点三五九八九九九九八 十三万五千六百三十九点九四九九零零零零一 604305.485399998号 135667.409800001 六十万四千三百零四点零五九八九九九九八 十三万五千六百六十一点零四九九零零零零一 604304.459899998 十三万五千六百六十一点零四九九零零零零一 604305.159899998 十三万五千六百六十点七四九九零零零零一 604305.159899998 十三万五千六百六十一点零四九九零零零零一 六十万四千三百零五点零五九八九九九九八 十三万五千六百六十一点四四九九零零零零一 六十万四千三百零五点四五九八九九九九八 135662.249900001 604305.759899998 135662.549900001 604306.259899998 十三万五千六百六十二点七四九九零零零零一 六十万四千三百零六点九五九八九九九九八 135662.849900001 六十万四千三百零七点五五九八九九九九八 135662.849900001 604308.059899998 十三万五千六百六十二点七四九九零零零零一 604308.559899998 135662.549900001 六十万四千三百零八点九五九八九九九九八 135662.14990001 604309.259899998 十三万五千六百六十一点七四九九零零零零一 六十万四千三百零九点三五九八九九九九八 十三万五千六百六十点四四九九零零零零一 六十万四千三百零九点三五九八九九九九八 135660.049900001 604309.659899998 十三万五千六百五十九点一四九九零零零零一 六十万四千三百零九点八五九八九九九九八 十三万五千六百五十八点四四九九零零零零一 604310.359899998 十三万五千六百五十七点六四九九零零零零一 604310.959899998 135656.849900001 六十万四千三百一十一点六五九八九九九九八 十三万五千六百五十六点一四九九零零零零一 六十万四千三百一十二点四五九八九九九九八 135655.549900001 六十万四千三百一十三点三五九八九九九九八 135655.14990001 604316.759899998 135653.349900001 604317.259899998 135653.049900001 六十万四千三百一十八点四五九八九九九九八 135652.349900001 604318.959899998 135652.049900001 604320.259899998个 135651.549900001 六十万四千三百二十二点二五九八九九九九八 135650.649900001 六十万四千三百二十三点七五九八九九九九八 135649.949900001 六十万四千三百二十四点六五九八九九九九八 十三万五千六百四十九点五四九九零零零零一 604324.959899998 十三万五千六百四十九点三四九九零零零零一 六十万四千三百二十五点九五九八九九九九八 十三万五千六百四十九点零四九九零零零零一 604327.759899998个 135648.349900001 六十万四千三百二十八点零五九八九九九九八 十三万五千六百四十八点二四九九零零零零一 六十万四千三百二十九点八五九八九九九九八 135647.449900001 604330.559899998 十三万五千六百四十七点一四九九零零零零一 604331.559899998 135646.449900001 六十万四千三百三十二点四五九八九九九九八 135645.849900001 六十万四千三百三十三点七五九八九九九九八 135645.249900001 604337.059899998 十三万五千六百四十三点二四九九零零零零一 六十万四千三百三十八点一五九八九九九九八 十三万五千六百四十二点六四九九零零零零一 604339.359899998个 135641.849900001 604339.859899998个 十三万五千六百四十一点四四九九零零零零一 604340.659899998 135640.749900001 604343.059899998 135639.649900001 604344.059899998 135639.14990001 604345.859899998 十三万五千六百三十八点四四九九零零零零一 六十万四千三百四十六点六五九八九九九九八 135637.949900001 六十万四千三百四十八点一五九八九九九九八 135637.049900001 604350.659899998个 十三万五千六百三十四点八四九九零零零零一 六十万四千三百五十一点四五九八九九九九八 十三万五千六百三十四点一四九九零零零零一 604353.059899998 135632.649900001 604353.359899998 135632.349900001 六十万四千三百五十四点七五九八九九九九八 135630.649900001 604356.059899998号 十三万五千六百二十八点九四九九零零零零一 六十万四千三百五十六点一五九八九九九九八 十三万五千六百二十八点六四九九零零零零一 六十万四千三百五十六点一五九八九九九九八 135628.449900001 604356.659899998个 135627.849900001 604357.059899998 135627.349900001 六十万四千三百五十七点一五九八九九九九八 135627.249900001 604357.859899998个 十三万五千六百二十六点九四九九零零零零一 六十万四千三百五十八点二五九八九九九九八 十三万五千六百二十六点七四九九零零零零一 604359.259899998个 十三万五千六百二十六点三四九九零零零零一 六十万四千三百六十点一五九八九九九九八 十三万五千六百二十五点八四九九零零零零一 六十万四千三百六十一点六五九八九九九九八 十三万五千六百二十五点零四九九零零零零一 六十万四千三百六十二点三五九八九九九九八 十三万五千六百二十四点八四九九零零零零一 六十万四千三百六十二点八五九八九九九九八 十三万五千六百二十四点五四九九零零零零一 604363.359899998 十三万五千六百二十四点零四九九零零零零一 六十万四千三百六十三点九五九八九九九九八 十三万五千六百二十三点零四九九零零零零一 六十万四千三百六十四点二五九八九九九九八 135621.849900001 六十万四千三百六十四点四五九八九九九九八 135621.549900001 604364.659899998 135620.549900001 604364.759899998 十三万五千六百一十九点五四九九零零零零一 604364.759899998 135618.849900001 六十万四千三百六十四点三五九八九九九九八 135617.14990001 六十万四千三百六十三点六五九八九九九九八 135615.549900001 604363.559899998个 135615.249900001号 六十万四千三百六十二点八五九八九九九九八 十三万五千六百一十三点六四九九零零零零一 604362.059899998 十三万五千六百一十二点二四九九零零零零一 六十万四千三百六十一点六五九八九九九九八 十三万五千六百一十一点六四九九零零零零一 六十万四千三百六十一点二五九八九九九九八 135610.949900001 604360.359899998 135610.049900001 六十万四千三百五十九点五五九八九九九九八 十三万五千六百零九点六四九九零零零零一 六十万四千三百五十八点六五九八九九九九八 十三万五千六百零九点三四九九零零零零一 六十万四千三百五十七点七五九八九九九九八 135609.14990001 604357.059899998 十三万五千六百零九点零四九九零零零零一 六十万四千三百五十五点九五九八九九九九八 135609.14990001 六十万四千三百五十四点八五九八九九九九八 十三万五千六百零九点三四九九零零零零一 六十万四千三百五十四点零五九八九九九九八 十三万五千六百零九点六四九九零零零零一 604353.059899998 135610.049900001 604352.059899998号 135610.649900001 六十万四千三百五十一点九五九八九九九九八 135610.749900001 604351.259899998个 十三万五千六百一十一点二四九九零零零零一 604350.659899998个 十三万五千六百一十一点八四九九零零零零一 604350.459899998个 十三万五千六百一十二点二四九九零零零零一 604399.659899998 十三万五千六百一十三点六四九九零零零零一 604349.359899998 135614.049900001 六十万四千三百四十八点九五九八九九九九八 十三万五千六百一十四点四四九九零零零零一 六十万四千三百四十八点四五九八九九九九八 十三万五千六百一十四点七四九九零零零零一 六十万四千三百四十八点一五九八九九九九八 135614.849900001 六十万四千三百四十七点四五九八九九九九八 135614.949900001 六十万四千三百四十六点六五九八九九九九八 135614.849900001 604345.859899998 十三万五千六百一十四点五四九九零零零零一 604343.759899998个 135613.049900001 六十万四千三百四十三点二五九八九九九九八 十三万五千六百一十二点七四九九零零零零一 604340.759899998个 135610.849900001 604340.459899998个 135610.749900001 604339.859899998个 135610.349900001 604399.659899998 135610.049900001 604339.059899998 十三万五千六百零九点四四九九零零零零一 六十万四千三百三十八点三五九八九九九九八 十三万五千六百零九点三四九九零零零零一 604337.759899998个 十三万五千六百零九点三四九九零零零零一 604337.159899998 十三万五千六百零九点四四九九零零零零一 六十万四千三百三十六点四五九八九九九九八 十三万五千六百零九点七四九九零零零零一 604336.259899998个 十三万五千六百零九点七四九九零零零零一 604335.559899998个 十三万五千六百零九点六四九九零零零零一 604334.859899998 十三万五千六百零九点六四九九零零零零一 604332.659899998 135610.949900001 604332.059899998 十三万五千六百一十一点二四九九零零零零一 604329.959899998 135612.549900001 604328.459899998 135613.449900001 604326.559899998 135614.949900001 604325.359899998 135615.549900001 604324.859899998 135615.949900001 六十万四千三百二十三点七五九八九九九九八 135616.849900001 604322.359899998 135617.849900001 604321.059899998 135618.549900001 604317.459899998 135620.749900001 604317.159899998 135620.849900001 604315.359899998 135621.249900001 604314.659899998 135621.249900001 604313.859899998 135621.149900001 604313.159899998 135621.049900001 604312.659899998 135620.849900001 604311.959899998 135620.449900001 604310.959899998 135619.949900001 604310.159899998 135619.449900001 六十万四千三百零八点九五九八九九九九八 135618.949900001 604308.559899998 135618.749900001 六十万四千三百零七点五五九八九九九九八 135618.149900001 604307.259899998 135617.949900001 604306.359899998 135617.249900001 604304.259899998 135615.149900001 604302.259899998 十三万五千六百一十二点七四九九零零零零一 604300.159899998 135610.549900001 604297.959899998 135607.749900001 604297.459899998 135607.049900001 604296.759899998 135606.449900001 604296.059899998 135605.949900001 604295.759899998 135605.749900001 604295.059899998 135605.449900001 604294.359899998 135605.249900001 604293.559899998 135605.149900001 604288.459899998 135599.649900001 604277.459899998 135590.249900001 ,FEATURE_TYPE)” FACTORY_DEF * BranchingFactory FACTORY_NAME “Geometry1_CREATED分支器-1 20” INPUT FEATURE_TYPE Geometry1_CREATED TARGET_FACTORY “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” 的Passed FEATURE_TYPE * @RemoveAttributes( “Geometry1_CREATED分支器-1 20” .BranchingFactory.Count)#------------------------------------------------------------------------- Tcl2 proc Geometry2_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO Geometry2_XML NOT_ACTIVATED MACRO Geometry2_CLASSIC NOT_ACTIVATED MACRO Geometry2_2D3D 2D_GEOMETRY MACRO Geometry2_COORDS INCLUDE [如果{{几何对象} == {几何对象}} {{放MACRO Geometry2_XML *}}] INCLUDE [如果{{几何对象} == {2D坐标列表}} {{放MACRO Geometry2_2D3D 2D_GEOMETRY};放{MACRO Geometry2_CLASSIC *}}] INCLUDE [如果{{几何对象} == {三维坐标列表}} {{放MACRO Geometry2_2D3D 3D_GEOMETRY};看跌期权{MACRO Geometry2_CLASSIC *}}]有[如果{{几何对象} == {2D最小/最大框}} {集评论{我们需要把COORDS这是其minX MINY maxX的美星为坐标的完整列表多边形};设置splitcods [split]字符串修剪{ }]];如果{[llength $ splitcods] > 4} {set trimmedCoords {};如果{$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $ splitCoords] = 4!} {{错误Geometry2:坐标列表中,预计将四位数字为 '疯丫头MINY MAXX MAXY' 的空格分隔列表 - ` 的是无效的};};设置minX [lindex $splitCoords 0];设置MINY [LINDEX $ splitCoords 1];设置maxX [lindex $splitCoords 2];设置maxY [lindex $splitCoords 3];提出 “宏观Geometry2_COORDS $ $了minX $ MINY $其minX美星$ maxX的$ $美星$ maxX的$ MINY $了minX MINY”;放{MACRO Geometry2_2D3D 2D_GEOMETRY};看跌期权{MACRO Geometry2_CLASSIC *}}] FACTORY_DEF $(Geometry2_XML)CreationFactory FACTORY_NAME Geometry2_XML_Creator CREATE_AT_END没有输出FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, xml ? version = 1.0 编码= US_ASCII 独立的= 没有 吗? 几何 尺寸= 2 几何 )FACTORY_DEF $(Geometry2_CLASSIC)CreationFactory FACTORY_NAME Geometry2_CLASSIC_Creator $(Geometry2_2D3D)$(Geometry2_COORDS)CREATE_AT_END无输出FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Geometry2_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1个COPY_NUMBER_ATTRIBUTE “_creation_instance” 输出FEATURE_TYPE Geometry2_CREATED @ TCL2(Geometry2_CoordSysRemover)@CoordSys()fme_feature_type Geometry2 "@EvaluateExpression(ATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIV,geometry,POLYGON 604270.1599 135558.6499 604309.5599 135546.8499 604316.16 135559.95 604370.0599 135531.1499 604362.1344 135510.2602 604354.9599 135491.3499 604359.1127 135488.8255 604367.1499 135483.9399 604392.9899 135475.4499 604419.697 135471.2019 604482.0505 135463.0062 604482.0552 135463.0241 六十万四千四百八十二点八六 135465.78个 604490.13号 十三万五千五百一十九点二九 604497.09号 十三万五千五百七十三点五二 六十万四千五百零五点七 十三万五千六百三十七点七九 六十万四千五百零八点四四 十三万五千六百五十八点九六 604508.0326 135659.1083 604470.2999 135672.5399 604468.9999 135672.9999 604465.3999 135675.5999 604446.9019 135683.2994 604421.4999 135694.0999 604416.2299 135696.4099 604406.7599 135697.2099 604399.7599 135697.6099 604393.66元 十三万五千六百九十七点九三 604389.9777 135620.056 604354.3599 135639.9499 604305.4854 135667.4098 604304.0599 135661.0499 604304.4599 135661.0499 604305.1599 135660.7499 604305.1599 135661.0499 604305.0599 135661.4499 604305.4599 135662.2499 604305.7599 135662.5499 604306.2599 135662.7499 604306.9599 135662.8499 604307.5599 135662.8499 604308.0599 135662.7499 604308.5599 135662.5499 604308.9599 135662.1499 604309.2599 135661.7499 604309.3599 135660.4499 604309.3599 135660.0499 604309.6599 135659.1499 604309.8599 135658.4499 604310.3599 135657.6499 604310.9599 135656.8499 604311.6599 135656.1499 604312.4599 135655.5499 604313.3599 135655.1499 604316.7599 135653.3499 604317.2599 135653.0499 604318.4599 135652.3499 604318.9599 135652.0499 604320.2599 135651.5499 604322.2599 135650.6499 604323.7599 135649.9499 604324.6599 135649.5499 604324.9599 135649.3499 604325.9599 135649.0499 604327.7599 135648.3499 604328.0599 135648.2499 604329.8599 135647.4499 604330.5599 135647.1499 604331.5599 135646.4499 604332.4599 135645.8499 604333.7599 135645.2499 604337.0599 135643.2499 604338.1599 135642.6499 604339.3599 135641.8499 604339.8599 135641.4499 604340.6599 135640.7499 604343.0599 135639.6499 604344.0599 135639.1499 604345.8599 135638.4499 604346.6599 135637.9499 604348.1599 135637.0499 604350.6599 135634.8499 604351.4599 135634.1499 604353.0599 135632.6499 604353.3599 135632.3499 604354.7599 135630.6499 604356.0599 135628.9499 604356.2599 135628.6499 604356.2599 135628.4499 604356.6599 135627.8499 604357.0599 135627.3499 604357.1599 135627.2499 604357.8599 135626.9499 604358.2599 135626.7499 604359.2599 135626.3499 604360.1599 135625.8499 604361.6599 135625.0499 604362.3599 135624.8499 604362.8599 135624.5499 604363.3599 135624.0499 604363.9599 135623.0499 604364.2599 135621.8499 604364.4599 135621.5499 604364.6599 135620.5499 604364.7599 135619.5499 604364.7599 135618.8499 604364.3599 135617.1499 604363.6599 135615.5499 604363.5599 135615.2499 604362.8599 135613.6499 604362.0599 135612.2499 604361.6599 135611.6499 604361.2599 135610.9499 604360.3599 135610.0499 604359.5599 135609.6499 604358.6599 135609.3499 604357.7599 135609.1499 604357.0599 135609.0499 604355.9599 135609.1499 604354.8599 135609.3499 604354.0599 135609.6499 604353.0599 135610.0499 604352.0599 135610.6499 604351.9599 135610.7499 604351.2599 135611.2499 604350.6599 135611.8499 604350.4599 135612.2499 604349.6599 135613.6499 604349.3599 135614.0499 604348.9599 135614.4499 604348.4599 135614.7499 604348.1599 135614.8499 604347.4599 135614.9499 604346.6599 135614.8499 604345.8599 135614.5499 604343.7599 135613.0499 604343.2599 135612.7499 604340.7599 135610.8499 604340.4599 135610.7499 604339.8599 135610.3499 604339.6599 135610.0499 604339.0599 135609.4499 604338.3599 135609.3499 604337.7599 135609.3499 604337.1599 135609.4499 604336.4599 135609.7499 604336.2599 135609.7499 604335.5599 135609.6499 604334.8599 135609.6499 604332.6599 135610.9499 604332.0599 135611.2499 604329.9599 135612.5499 604328.4599 135613.4499 604326.5599 135614.9499 604325.3599 135615.5499 604324.8599 135615.9499 604323.7599 135616.8499 604322.3599 135617.8499 604321.0599 135618.5499 604317.4599 135620.7499 604317.1599 135620.8499 604315.3599 135621.2499 604314.6599 135621.2499 604313.8599 135621.1499 604313.1599 135621.0499 604312.6599 135620.8499 604311.9599 135620.4499 604310.9599 135619.9499 604310.1599 135619.4499 604308.9599 135618.9499 604308.5599 135618.7499 604307.5599 135618.1499 604307.2599 135617.9499 604306.3599 135617.2499 604304.2599 135615.1499 604302.2599 135612.7499 604300.1599 135610.5499 604297.9599 135607.7499 604297.4599 135607.0499 604296.7599 135606.4499 604296.0599 135605.9499 604295.7599 135605.7499 604295.0599 135605.4499 604294.3599 135605.2499 604293.5599 135605.1499 604288.4599 135599.6499 604277.4599 135590.2499 604270.1599 135558.6499 ,FEATURE_TYPE)” FACTORY_DEF * BranchingFactory FACTORY_NAME “Geometry2_CREATED分支器-1 25” INPUT FEATURE_TYPE Geometry2_CREATED TARGET_FACTORY “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” 的Passed FEATURE_TYPE * @RemoveAttributes( “Geometry2_CREATED分支器-1 25” .BranchingFactory.Count)#------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * # ------------------------------------------------------------------------- # First determine which function we are going to be using -- we can do # this statically at parse time for efficiency sake MACRO GeometryReplacer_2_SetTempAttr MACRO GeometryReplacer_2_Function MACRO GeometryReplacer_2_RemoveTempAttr MACRO GeometryReplacer_2_RemoveSourceAttr INCLUDE [ set sourceText {@EvaluateExpression(FDIV,STRING_ENCODED, 几何 ,GeometryReplacer_2)};设置decodedText [FME_DecodeText “$ sourceText”];如果![正则表达式{@EvaluateExpression \([^)] * STRING_ENCODED,@值\(([^()] *)\)[^()] * \)} “$ decodedText” 虚拟geomSrcAttr] {看跌期权“MACRO GeometryReplacer_2_SetTempAttr @SupplyAttributes(编码,__ __ GeometryReplacerTemp,\ “$ sourceText \”)“;提出 “MACRO GeometryReplacer_2_RemoveTempAttr @RemoveAttributes(__ GeometryReplacerTemp__)”;设置geomSrcAttr __GeometryReplacerTemp__;} ELSEIF {{是} {==是}} {放 “MACRO GeometryReplacer_2_RemoveSourceAttr @RemoveAttributes(\” $ geomSrcAttr \ “)”;};如果{{} WKT == {fmebinary}} {提出 “宏观GeometryReplacer_2_Function @Geometry(FROM_ATTRIBUTE_BINARY,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {fmehex}} {把 “MACRO GeometryReplacer_2_Function @Geometry(FROM_ATTRIBUTE_BINARY_HEX,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {fmexml}} {把 “MACRO GeometryReplacer_2_Function @Geometry(FROM_ATTRIBUTE,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {fmexmlencoded}} {把 “MACRO GeometryReplacer_2_Function @Geometry(FROM_ENCODED_STRING,&\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {折线}} {把 “MACRO GeometryReplacer_2_Function @Geometry(FROM_ATTRIBUTE_POLYLINE,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {WKT}} {把 “MACRO GeometryReplacer_2_Function @OGCGeometry(from_attribute,WKT,\” $ geomSrcAttr \ “FLOAT_64)”;} elseif的{{WKT} == {} WKB || {wkt} == {wkbhex} } { puts "MACRO GeometryReplacer_2_Function @OGCGeometry(from_attribute,wkt,\"$geomSrcAttr\")";} elseif的{{WKT} == {}以GeoJSON || {wkt} == {ESRIJSON} } { puts "MACRO GeometryReplacer_2_Function @JSONGeometry(FROM_ATTRIBUTE,wkt,\"$geomSrcAttr\")";} elseif的{{WKT} == {的GeoRSS}} {看跌期权 “MACRO GeometryReplacer_2_Function @GeoRSSGeometry(FROM_ATTRIBUTE,\” $ geomSrcAttr \ “)”;} elseif的{{WKT} == {KML}} {看跌期权 “MACRO GeometryReplacer_2_Function @KMLGeometry(FROM_ATTRIBUTE,\” $ geomSrcAttr \ “)”;} ELSEIF {{} WKT == {GML}} {提出 “宏观GeometryReplacer_2_Function @GMLGeometry(FROM_ATTRIBUTE,\” $ geomSrcAttr \”, ) “;} elseif的{{WKT} == {地理散列}} {把 ”MACRO GeometryReplacer_2_Function @GeoHash(FROM_ATTRIBUTE,\“ $ geomSrcAttr \”, )“;} elseif的{{WKT} == {} ogeosms || {WKT} == {} geosms || {WKT} == {地理}} {把 ”MACRO GeometryReplacer_2_Function @OGCGeometry(from_attribute,WKT,\“ $geomSrcAttr \ “)”;} elseif的{{WKT} == {MGRS}} {看跌期权“MACRO GeometryReplacer_2_Function @MGRS(FROM_MGRS, ,\“@ EvaluateExpression(FDIV,STRING_ENCODED, 几何 ,GeometryReplacer_2)\ “)”} ELSEIF {{} WKT == {MSSQL}} {提出 “宏观GeometryReplacer_2_Function @SerializeGeometry(from_attribute,WKT,\” $ geomSrcAttr \”, )“;};] FACTORY_DEF * TeeFactory FACTORY_NAME GeometryReplacer_2 INPUT FEATURE_TYPE Geometry2_CREATED OUTPUT FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___ fme_rejection_code ___,fme_rejection_code)$(GeometryReplacer_2_SetTempAttr)$(GeometryReplacer_2_Function)$(GeometryReplacer_2_RemoveTempAttr)FACTORY_DEF * TestFactory中FACTORY_NAME GeometryReplacer_2_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT FAILED FEATURE_TYPE GeometryReplacer_2_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) $(GeometryReplacer_2_RemoveSourceAttr) FACTORY_DEF * TeeFactory FACTORY_NAME "GeometryReplacer_2 OUTPUT Splitter" INPUT FEATURE_TYPE GeometryReplacer_2_OUTPUT OUTPUT FEATURE_TYPE GeometryReplacer_2_OUTPUT_0_wp2r9EHpYkI= OUTPUT FEATURE_TYPE GeometryReplacer_2_OUTPUT_1_lJDfXDgL5TQ= OUTPUT FEATURE_TYPE GeometryReplacer_2_OUTPUT_2_SOqnB3Nzqzs= # ------------------------------------------------------------------------- # Set the directive to add all the meta-attributes to the features. # We do this so users see all possible information in the viewed # features. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename # 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 grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO 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]} {geometry2} _]_[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 geometry2_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME geometry2_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 geometry2_FeatureDirector INPUT FEATURE_TYPE GeometryReplacer_2_OUTPUT_0_wp2r9EHpYkI= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE geometry2___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE geometry2___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME geometry2___FeatureDirector1 INPUT FEATURE_TYPE geometry2___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE geometry2___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE geometry2___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME geometry2_VectorSetterUpper INPUT FEATURE_TYPE geometry2___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 geometry2_fc1400fa_d4f0_4967_8226_5b6d20b28eb44_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ “”;} elseif的{[串等于{NO_THINNING} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {LASTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;};} FACTORY_DEF * TeeFactory FACTORY_NAME geometry2___PointCloudThinner INPUT FEATURE_TYPE geometry2___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @ TCL2( “geometry2_fc1400fa_d4f0_4967_8226_5b6d20b28eb44_thinPointCloud”)TCL2 PROC geometry2_fc1400fa_d4f0_4967_8226_5b6d20b28eb44_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {设定useDI [字符串等于-nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{$ useDI!} {FME_Execute ApplyRasterRotation双线性;};设置doResample [字符串等于{NoReduction} {重新取样}];设置doSubset [字符串等于{NoReduction} {子集}];集doBounds [字符串等于{NoReduction} {BoundingBoxOnly}];如果{$ doBounds} {FME_Execute GeometryType fme_polygon;} {ELSEIF $ doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这样做是因为我们要调用@RasterProperties,我们要确保它不会覆盖所有现有属性。};设置kAttrPrefix “”;集allNames [FME_AttributeNames];foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$newname$oldname;};执行RASTERPORPERTIES RASTER;如果{$doresample}{设置oldnumcols[fme_getattribute_num_columns];设置oldNumRows[FME_GetAttribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置旧间距[fme_getattribute_spacing_y];设置kminnumcells 32;设置kMaxNumCells 512;设置注释{如果两个维度都大于最小的Num单元,则至少只有一个大于最大值。};如果{$oldnumcells>$kminnumcells&&$oldnumcols>$kminnumcells&&($oldnumrows>$kmaxnumcells$oldnumcols>$kmaxnumcells)}{设置newspacingx 1.0;设置newspacingy 1.0;如果{$OLDNAMRES> $OLDNUMCORS}{SET注释{如果我们的行多于列,则需要选择一个间隔,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kmaxnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];设置注释{现在我们需要检查这样做是否会导致列低于最小值。如果是这样的话,选择间距,这样我们就只能降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果{$newnumcols<$kminnumcells}{设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];};}否则{设置注释{这与上述情况相同,只是行和列的角色是相反的。};设置newSpacingX[expr 1.0*$oldNumCols*$oldSpacingX/$kMaxNumCells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];设置newNumRows[expr$oldNumRows*$oldSpacingY/$newSpacingY];如果{$newnumrows<$kminnumcells}{设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kminnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];};};fme_执行重采样栅格单元大小$newspacingx$newspacingy nearest neighbor;};}elseif{$dosubset}{set comment{获取某些可能是属性或常量的字符串的值。请注意,我们传入了正在使用的属性前缀,因为如果一个确实是一个属性,那么它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasterNumRows[FME_GetAttribute_num_rows];设置rasternumcols[fme_getattribute_num_columns];设置注释{仅当指定的开始位置实际在光栅内时才执行子设置。};如果{$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols}{设置注释{现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果{[expr$subsetstartrow+$subsetnumrows]>$rasternumrows}{设置subsetnumrows[expr$rasternumrows-$subsetstartrow];};如果{[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols}{设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};执行substraster$subsetstartrow$subsetnumrows$subsetstartcol$subsetnumcols;};};set comment{删除@raserproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_execute removeattributes fme_regexp_match{^};foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$oldname$newname;};};}FACTORY_DEF*TeeFactory FACTORY_NAME geometry2_RasterSetterUpper输入功能_TYPE geometry2_uuuuuuurasterfeatures_uuuutype viewme_uuuu@Tcl2(“geometry2_fc1400fa_d4f0_4967_8226_5b6d20b28eb44_prepareRaster{ } { } { } { }“)现在将所有功能路由到记录器中,将它们的功能类型更改为转换器名称,以便它们能够很好地查看geometry2 fc1400fau d4f0 4967 u8226 u5b6d20b28eb44 uvis FEAT type更改正在可视化的功能的功能类型数据处理程序将最大限度地限制它在Win32上读取的特性的最大数量。(45549),因此,我们将相应地限制我们在这里使用MAX-features-TO-record指令记录的特性的数量工厂名称:geometry2.u recorder.recorder.recorder.recorder.recorder.recorder.recorder.recorder.recorder.factory.factory.factory.geometry2.u.geometry2.u.geometry2.u.geometry2.u.geometry2.u.geometry2.u.geo亚搏在线metry2.u.geometry2.u.u.geometry2.u.geometry2.u.def.recorder.recorder.factory.factory.u.geometry2.u.geometry2.u.u.geometry2.u.u.recorder.recorder.u.recordfeature_file)“创建空间索引”“$(visualizer_create_space_index)”检查器“$(visualizer_create_space_index)”fsc_schema_creation_实例,varchar 255个 模式记录RECORD_DIRECTLY_TO_DISK是的MAX_FEATURES_TO_RECORD WIN32 2000000 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #首先我们要确定哪些功能使用,我们可以在解析时间#这个静态效率为了宏GeometryReplacer_SetTempAttr宏GeometryReplacer_Function宏GeometryReplacer_RemoveTempAttr宏GeometryReplacer_RemoveSourceAttr包括[设置sourceText {@EvaluateExpression (FDIV STRING_ENCODED, 几何 ,GeometryReplacer)};设置decodedText [FME_DecodeText “$ sourceText”];[regexp {@EvaluateExpression\([^)]*STRING_ENCODED,@Value\(([^() *)\),[^() * *)} "$decodedText" dummy geomSrcAttr] {put "MACRO GeometryReplacer_SetTempAttr @SupplyAttributes(ENCODED, geometryreplacertemp__,\"$sourceText\");输入“MACRO GeometryReplacer_RemoveTempAttr @RemoveAttributes(geometryreplacertemp__)”;设置geomSrcAttr __GeometryReplacerTemp__;{放置“宏GeometryReplacer_RemoveSourceAttr @RemoveAttributes(\“$geomSrcAttr”)”;};如果{wkt} == {fmebinary}}{放置“宏GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_BINARY,\"$geomSrcAttr\")”;{放置“宏GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_BINARY_HEX,\"$geomSrcAttr\")”;{放置“宏GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE,\"$geomSrcAttr\")”;{将"宏GeometryReplacer_Function @Geometry(FROM_ENCODED_STRING,&\"$geomSrcAttr\")";{放置“宏GeometryReplacer_Function @Geometry(FROM_ATTRIBUTE_POLYLINE,\"$geomSrcAttr\")”;{将宏GeometryReplacer_Function @OGCGeometry(from_attribute,wkt,\"$geomSrcAttr\",FLOAT_64)";{put "MACRO GeometryReplacer_Function @OGCGeometry(from_attribute,wkt,\"$geomSrcAttr\");{放置“宏GeometryReplacer_Function @JSONGeometry(FROM_ATTRIBUTE,wkt,\"$geomSrcAttr\")”;{放置“宏GeometryReplacer_Function @GeoRSSGeometry(FROM_ATTRIBUTE,\"$geomSrcAttr\")”;{放置“宏GeometryReplacer_Function @KMLGeometry(FROM_ATTRIBUTE,\"$geomSrcAttr\")”;{将"MACRO GeometryReplacer_Function @GMLGeometry(FROM_ATTRIBUTE,\"$geomSrcAttr\", )”;} elseif {{wkt} == {geohash} } { puts "MACRO GeometryReplacer_Function @GeoHash(FROM_ATTRIBUTE,\"$geomSrcAttr\", )”;} elseif {{wkt} == {ogeosms} || {wkt} == {geosms} || {wkt} == {geo} } { puts "MACRO GeometryReplacer_Function @OGCGeometry(from_attribute,wkt,\"$geomSrcAttr\")"; } elseif {{wkt} == {mgrs}} { puts "MACRO GeometryReplacer_Function @MGRS(FROM_MGRS, ,\“@ EvaluateExpression(FDIV,STRING_ENCODED, 几何 GeometryReplacer) \”)” } elseif {{wkt} == {mssql} } { puts "MACRO GeometryReplacer_Function @SerializeGeometry(from_attribute,wkt,\"$geomSrcAttr\", )”;};] FACTORY_DEF * TeeFactory FACTORY_NAME GeometryReplacer INPUT FEATURE_TYPE Geometry1_CREATED OUTPUT FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) $(GeometryReplacer_SetTempAttr) $(GeometryReplacer_Function) $(GeometryReplacer_RemoveTempAttr) FACTORY_DEF * TestFactory FACTORY_NAME GeometryReplacer_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT FAILED FEATURE_TYPE GeometryReplacer_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) $(GeometryReplacer_RemoveSourceAttr) FACTORY_DEF * TeeFactory FACTORY_NAME "GeometryReplacer OUTPUT Splitter" INPUT FEATURE_TYPE GeometryReplacer_OUTPUT OUTPUT FEATURE_TYPE GeometryReplacer_OUTPUT_0_+owScOks/CU= OUTPUT FEATURE_TYPE GeometryReplacer_OUTPUT_1_ipNhmtb51K4= OUTPUT FEATURE_TYPE GeometryReplacer_OUTPUT_2_y7B+rRraL5o= # ------------------------------------------------------------------------- INCLUDE [ if {($(FME_BUILD_NUM) < 5669) || [FME_ComponentIsLicensed -factory RasterClippingFactory]} { puts "MACRO RASTER_CLIPPER_IN *"; } else { puts "MACRO RASTER_CLIPPER_IN NOT_THIS_TIME"; } ] FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_ClipperCloner INPUT FEATURE_TYPE GeometryReplacer_OUTPUT_1_ipNhmtb51K4= INPUT FEATURE_TYPE Clipper_ClipperCloner_DUMMY 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___ FACTORY_DEF * TestFactory FACTORY_NAME Clipper_ClippeeFilter INPUT FEATURE_TYPE GeometryReplacer_2_OUTPUT_1_lJDfXDgL5TQ= INPUT FEATURE_TYPE Clipper_ClippeeFilter_DUMMY 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 "HANDLE_CONFLICT" ATTR_CONFLICT_RES "CLIPPEE_IF_CONFLICT" CLIPPER_PREFIX " “PRESERVE_CLIPPEE_EXTENTS OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper输出内部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输入加密FEATURE_TYPE Clipper___ClippersForVector___输入CLIPPEE FEATURE_TYPE Clipper___VectorOrSolidClippees___输入剪贴功能类型CLIPPEE FEATURE_TYPE clipper_rasterclippeesmultilip YES CONNECT_Z_MODE FIRST_WINS CLIPPEE_ON_BOUNDARY “DO_NOT_AGGREGATE OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper LINES_AS_SEGMENTS内部没有模式完成输出FEATURE_TYPE Clipper_INSIDE”_clipped“没有输出CLIPPED_INSIDE FEATURE_TYPE Clipper_INSIDE”_clipped“是的输出OUTSIDE_NO_CLIPPER FEATURE_TYPE Clipper___ClippeeForSolid___输出EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2 (“FME_LogMessage fme_warn 917351加密”)输出NONPOLY_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2 (“FME_LogMessagefme_warn 917352加密”)FACTORY_DEF * SolidIntersectionFactory FACTORY_NAME Clipper_Solid输入加密FEATURE_TYPE Clipper___ClippersForSolid___输入CLIPPEE FEATURE_TYPE Clipper___ClippeeForSolid___ MULTICLIP是的CLIPPEE_ON_BOUNDARY MERGE_CLIPPER_ATTRIBUTES内部没有ATTR_ACCUM_MODE”HANDLE_CONFLICT“ATTR_CONFLICT_RES CLIPPEE_IF_CONFLICT“CLIPPER_PREFIX” “DO_NOT_AGGREGATE OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper输出内部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 * TeeFactory FACTORY_NAME Clipper_Nuker输入FEATURE_TYPE Clipper__delete__ @Log(“冒犯特性是:”)#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #设置指令所有通过meta属性添加到功能。#我们这样做是为了让用户在查看的#特性中看到所有可能的信息。READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename # 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 grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO 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]} {Clipper_Inside} _]_[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 Clipper_Inside_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_Inside_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 Clipper_Inside_FeatureDirector INPUT FEATURE_TYPE Clipper_INSIDE TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Clipper_Inside___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Clipper_Inside___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME Clipper_Inside___FeatureDirector1 INPUT FEATURE_TYPE Clipper_Inside___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Clipper_Inside___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Clipper_Inside___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_Inside_VectorSetterUpper INPUT FEATURE_TYPE Clipper_Inside___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ fme_color "0,0,0" fme_fill_color "0.666667,1,0.498039" # 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 Clipper_Inside_b076e242_e479_408f_b829_5386c93e55914_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\" \ “”;} elseif的{[串等于{NO_THINNING} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {LASTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;};}FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_Inside___PointCloudThinner输入FEATURE_TYPE Clipper_Inside___PointCloudFeatures___输出FEATURE_TYPE __viewme__ @Tcl2 (Clipper_Inside_b076e242_e479_408f_b829_5386c93e55914_thinPointCloud) fme_color“0, 0, 0”Tcl2 proc Clipper_Inside_b076e242_e479_408f_b829_5386c93e55914_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols}{设置useDI(字符串相等查看nocase {$ (FME_VIEWER_APP)} {fmedatainspector});如果{$ useDI!} {FME_Execute ApplyRasterRotation双线性;};设置doResample [字符串等于{NoReduction} {重新取样}];设置doSubset [字符串等于{NoReduction} {子集}];集doBounds [字符串等于{NoReduction} {BoundingBoxOnly}];如果{$ doBounds} {FME_Execute GeometryType fme_polygon;} {ELSEIF $ doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这样做是因为我们要调用@RasterProperties,我们要确保它不会覆盖所有现有属性。};设置kAttrPrefix “”;集allNames [FME_AttributeNames];foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$newname$oldname;};执行RASTERPORPERTIES RASTER;如果{$doresample}{设置oldnumcols[fme_getattribute_num_columns];设置oldNumRows[FME_GetAttribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置旧间距[fme_getattribute_spacing_y];设置kminnumcells 32;设置kMaxNumCells 512;设置注释{如果两个维度都大于最小的Num单元,则至少只有一个大于最大值。};如果{$oldnumcells>$kminnumcells&&$oldnumcols>$kminnumcells&&($oldnumrows>$kmaxnumcells$oldnumcols>$kmaxnumcells)}{设置newspacingx 1.0;设置newspacingy 1.0;如果{$OLDNAMRES> $OLDNUMCORS}{SET注释{如果我们的行多于列,则需要选择一个间隔,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kmaxnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];设置注释{现在我们需要检查这样做是否会导致列低于最小值。如果是这样的话,选择间距,这样我们就只能降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果{$newnumcols<$kminnumcells}{设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];};}否则{设置注释{这与上述情况相同,只是行和列的角色是相反的。};设置newSpacingX[expr 1.0*$oldNumCols*$oldSpacingX/$kMaxNumCells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];设置newNumRows[expr$oldNumRows*$oldSpacingY/$newSpacingY];如果{$newnumrows<$kminnumcells}{设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kminnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];};};fme_执行重采样栅格单元大小$newspacingx$newspacingy nearest neighbor;};}elseif{$dosubset}{set comment{获取某些可能是属性或常量的字符串的值。请注意,我们传入了正在使用的属性前缀,因为如果一个确实是一个属性,那么它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasterNumRows[FME_GetAttribute_num_rows];设置rasternumcols[fme_getattribute_num_columns];设置注释{仅当指定的开始位置实际在光栅内时才执行子设置。};如果{$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols}{设置注释{现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果{[expr$subsetstartrow+$subsetnumrows]>$rasternumrows}{设置subsetnumrows[expr$rasternumrows-$subsetstartrow];};如果{[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols}{设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};执行substraster$subsetstartrow$subsetnumrows$subsetstartcol$subsetnumcols;};};set comment{删除@raserproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_execute removeattributes fme_regexp_match{^};foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$oldname$newname;};};2 . clipper_inside_b076e242_e479_408f_b829_5386c9e55914_prepareeraster } { } { } { #现在将所有特性路由到记录器中,将它们的#特性类型更改为转换器名称,这样它们就可以很好地查看# Clipper_Inside_b076e242_e479_408f_b829_5386c93e55914_VIS_FEAT_TYPE更改了正在显示的特性的特性类型#。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 Clipper_Inside_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Clipper_Inside_b076e242_e479_408f_b829_5386c93e55914_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个 、_clipped varchar 255个 模式录制RECORD_DIRECTLY_TO_DISK是MAX_FEATURES_TO_RECORD WIN32 2000000#------------------------------------------------------------------------- FACTORY_DEF * OverlayFactory FACTORY_NAME AreaOnAreaOverlayer INPUT POLYGON FEATURE_TYPE GeometryReplacer_2_OUTPUT_2_SOqnB3Nzqzs= INPUT POLYGON FEATURE_TYPE GeometryReplacer_OUTPUT_2_y7B+rRraL5o= ACCUMULATE_ATTRIBUTES ONE CONNECT_Z_MODE FIRST_WINS OVERLAP_COUNT_ATTRIBUTE _overlaps MODE COMPLETE OUTPUT POLYGON FEATURE_TYPE AreaOnAreaOverlayer_AREA # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME Tester INPUT FEATURE_TYPE AreaOnAreaOverlayer_AREA TEST @EvaluateExpression(FDIV,STRING_ENCODED, _overlaps ,测试仪)> 1 ENCODED BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE Tester_PASSED#-------------------------------------------------------------------------#设置指令添加所有的元属性的特征。#我们这样做,所以用户看到观察#特征的所有可能的信息。READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename#假设是工作区临时目录已被设置和创建的。见controldefs.cpp - ControlDefs :: writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR有[组grpByAttrs {};如果{[字符串长度$ grpByAttrs]> 0} {如果{[字符串第一 “@EvaluateExpression” $ grpByAttrs] == 0} {把 “MACRO CATMAC _ $ grpByAttrs”;}其他{设定catter “”;设置逗号“”;的foreach ATTR $ {grpByAttrs设置catter “$ catter $ @逗号值(\” $ ATTR \ “)”;设置逗号 “_”;};提出 “宏观CATMAC _ @:连接($ catter)”;}}其他{提出 “宏观CATMAC”;};设置sa亚搏在线feName “[regsub -all {[^ A-ZA-Z0-9]} {Overlapping_Area} _] _ [EXPR轮(RAND()* 1000000)] _ [时钟点击-milliseconds]”;提出 “宏观SAFE_F亚搏在线FS_NAME $ safeName”;]#作出这样的FFS文件将住在临时目录中。FACTORY_DEF * CreationFactory FACTORY_NAME Overlapping_Area_DirCreator输出FEATURE_TYPE __nukeme__ @ TCL2( “捉{文件的mkdir {$(WORKSPACE_TEMP_DIR)}}”)FACTORY_DEF * TeeFactory FACTORY_NAME Overlapping_Area_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__#发送光栅,点云和载体功能下降不同的路径准备#他们 viewing FACTORY_DEF * TestFactory FACTORY_NAME Overlapping_Area_FeatureDirector INPUT FEATURE_TYPE Tester_PASSED TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Overlapping_Area___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Overlapping_Area___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME Overlapping_Area___FeatureDirector1 INPUT FEATURE_TYPE Overlapping_Area___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Overlapping_Area___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Overlapping_Area___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME Overlapping_Area_VectorSetterUpper INPUT FEATURE_TYPE Overlapping_Area___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.这应该允许这种变压器具有#桌面授权使用,即使ThinPointCloud需要专业。TCL2 PROC Overlapping_Area_cfb3f9ee_8818_450d_80bc_9981ec45461b1_thinPointCloud {} {如果{[串等于{NO_THINNING} {KEEPNPOINT}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {LASTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;};} FACTORY_DEF * TeeFactory FACTORY_NAME Overlapping_Area___PointCloudThinner INPUT FEATURE_TYPE Overlapping_Area___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @ TCL2( “Overlapping_Area_cfb3f9ee_8818_450d_80bc_9981ec45461b1_thinPointCloud”)TCL2 PROC Overlapping_Area_cfb3f9ee_8818_450d_80bc_9981ec45461b1_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} {设定useDI [字符串等于-nocase {$(FME_VIEWER_APP)} {fmedatainspector}];如果{$ useDI!} {FME_Execute ApplyRasterRotation双线性;};设置doResample [字符串等于{NoReduction} {重新取样}];设置doSubset [字符串等于{NoReduction} {子集}];集doBounds [字符串等于{NoReduction} {BoundingBoxOnly}];如果{$ doBounds} {FME_Execute GeometryType fme_polygon;} {ELSEIF $ doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这样做是因为我们要调用@RasterProperties,我们要确保它不会覆盖所有现有属性。};设置kAttrPrefix “”;集allNames [FME_AttributeNames];foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$newname$oldname;};执行RASTERPORPERTIES RASTER;如果{$doresample}{设置oldnumcols[fme_getattribute_num_columns];设置oldNumRows[FME_GetAttribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置旧间距[fme_getattribute_spacing_y];设置kminnumcells 32;设置kMaxNumCells 512;设置注释{如果两个维度都大于最小的Num单元,则至少只有一个大于最大值。};如果{$oldnumcells>$kminnumcells&&$oldnumcols>$kminnumcells&&($oldnumrows>$kmaxnumcells$oldnumcols>$kmaxnumcells)}{设置newspacingx 1.0;设置newspacingy 1.0;如果{$OLDNAMRES> $OLDNUMCORS}{SET注释{如果我们的行多于列,则需要选择一个间隔,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kmaxnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];设置注释{现在我们需要检查这样做是否会导致列低于最小值。如果是这样的话,选择间距,这样我们就只能降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果{$newnumcols<$kminnumcells}{设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];};}否则{设置注释{这与上述情况相同,只是行和列的角色是相反的。};设置newSpacingX[expr 1.0*$oldNumCols*$oldSpacingX/$kMaxNumCells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];设置newNumRows[expr$oldNumRows*$oldSpacingY/$newSpacingY];如果{$newnumrows<$kminnumcells}{设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kminnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];};};fme_执行重采样栅格单元大小$newspacingx$newspacingy nearest neighbor;};}elseif{$dosubset}{set comment{获取某些可能是属性或常量的字符串的值。请注意,我们传入了正在使用的属性前缀,因为如果一个确实是一个属性,那么它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasterNumRows[FME_GetAttribute_num_rows];设置rasternumcols[fme_getattribute_num_columns];设置注释{仅当指定的开始位置实际在光栅内时才执行子设置。};如果{$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols}{设置注释{现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果{[expr$subsetstartrow+$subsetnumrows]>$rasternumrows}{设置subsetnumrows[expr$rasternumrows-$subsetstartrow];};如果{[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols}{设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};执行substraster$subsetstartrow$subsetnumrows$subsetstartcol$subsetnumcols;};};set comment{删除@raserproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_execute removeattributes fme_regexp_match{^};foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$oldname$newname;};};@Tcl2(“overlapping_area_cfb3f9ee_8818_450d_80bc_9981ec4561b1_preperaster{”) } { } { } { 现在将所有特性路由到记录器中,将它们的# feature类型更改为transformer名称,这样它们就可以很好地查看# Overlapping_Area_cfb3f9ee_8818_450d_80bc_9981ec45461b1_VIS_FEAT_TYPE更改了正在显示的特性的特性类型#。DEFAULT_MACRO Overlapping_Area_cfb3f9ee_8818_450d_80bc_9981ec45461b1_VIS_FEAT_TYPE Overlapping_Area$(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 Overlapping_Area_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Overlapping_Area_cfb3f9ee_8818_450d_80bc_9981ec45461b1_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个 、_overlaps varchar 255个 模式记录RECORD_DIRECTLY_TO_DISK是的MAX_FEATURES_TO_RECORD WIN32 2000000 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #设置指令所有通过meta属性添加到功能。#我们这样做,所以用户看到观察#特征的所有可能的信息。READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename#假设是工作区临时目录已被设置和创建的。见controldefs.cpp - ControlDefs :: writeVisualizerTempDir DEFAULT_MACRO WORKSPACE_TEMP_DIR有[组grpByAttrs {};如果{[字符串长度$ grpByAttrs]> 0} {如果{[字符串第一 “@EvaluateExpression” $ grpByAttrs] == 0} {把 “MACRO CATMAC _ $ grpByAttrs”;}其他{设定catter “”;设置逗号“”;的foreach ATTR $ {grpByAttrs设置catter “$ catter $ @逗号值(\” $ ATTR \ “)”;设置逗号 “_”;};提出 “宏观CATMAC _ @:连接($ catter)”;}}其他{提出 “宏观CATMAC”;};设置sa亚搏在线feName "[regsub -all {[^a-zA-Z0-9]} {geometry1} _]_[expr round(rand() * 1000000)]_[时钟点击-毫秒]";提出 “宏观SAFE_F亚搏在线FS_NAME $ safeName”;]#作出这样的FFS文件将住在临时目录中。(“catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}”)point cloud and vector features down different paths to prepare # them for viewing FACTORY_DEF * TestFactory FACTORY_NAME geometry1_FeatureDirector INPUT FEATURE_TYPE GeometryReplacer_OUTPUT_0_+owScOks/CU= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE geometry1___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE geometry1___RasterFeatures___ FACTORY_DEF * TestFactory FACTORY_NAME geometry1___FeatureDirector1 INPUT FEATURE_TYPE geometry1___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE geometry1___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE geometry1___PointCloudFeatures___ # Vector features simply may get their colors overridden FACTORY_DEF * TeeFactory FACTORY_NAME geometry1_VectorSetterUpper INPUT FEATURE_TYPE geometry1___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.这应该允许这种变压器具有#桌面授权使用,即使ThinPointCloud需要专业。如果{[string = {no_细化}{KEEPNPOINT}]} {FME_Execute ThinPointCloud no_细化“\” \ “”;} elseif的{[串等于{NO_THINNING} {MAXNUMPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {FIRSTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;} elseif的{[串等于{NO_THINNING} {LASTNPOINTS}]} {FME_Execute ThinPointCloud NO_THINNING “\” \ “”;};}FACTORY_DEF * TeeFactory FACTORY_NAME geometry1___PointCloudThinner输入FEATURE_TYPE geometry1___PointCloudFeatures___输出FEATURE_TYPE __viewme__ @Tcl2 (geometry1_56e2964d_f8b0_4013_8134_9437ee2cc0704_thinPointCloud) Tcl2 proc geometry1_56e2964d_f8b0_4013_8134_9437ee2cc0704_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols}{设置useDI(字符串相等查看nocase {$ (FME_VIEWER_APP)} {fmedatainspector});如果{$ useDI!} {FME_Execute ApplyRasterRotation双线性;};设置doResample [字符串等于{NoReduction} {重新取样}];设置doSubset [字符串等于{NoReduction} {子集}];集doBounds [字符串等于{NoReduction} {BoundingBoxOnly}];如果{$ doBounds} {FME_Execute GeometryType fme_polygon;} {ELSEIF $ doResample || $ do子集}{set comment {First,我们需要给所有属性加上前缀。这样做是因为我们要调用@RasterProperties,我们要确保它不会覆盖所有现有属性。};设置kAttrPrefix “”;集allNames [FME_AttributeNames];foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$newname$oldname;};执行RASTERPORPERTIES RASTER;如果{$doresample}{设置oldnumcols[fme_getattribute_num_columns];设置oldNumRows[FME_GetAttribute_num_rows];设置oldspacingx[fme_getattribute_spacing_x];设置旧间距[fme_getattribute_spacing_y];设置kminnumcells 32;设置kMaxNumCells 512;设置注释{如果两个维度都大于最小的Num单元,则至少只有一个大于最大值。};如果{$oldnumcells>$kminnumcells&&$oldnumcols>$kminnumcells&&($oldnumrows>$kmaxnumcells$oldnumcols>$kmaxnumcells)}{设置newspacingx 1.0;设置newspacingy 1.0;如果{$OLDNAMRES> $OLDNUMCORS}{SET注释{如果我们的行多于列,则需要选择一个间隔,将行数减少到我们选择的最大值。};设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kmaxnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];设置注释{现在我们需要检查这样做是否会导致列低于最小值。如果是这样的话,选择间距,这样我们就只能降到最小值(而不是过去)。};设置newnumcols[expr$oldnumcols*$oldspacingx/$newspacingx];如果{$newnumcols<$kminnumcells}{设置newspacingx[expr 1.0*$oldnumcols*$oldspacingx/$kminnumcells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];};}否则{设置注释{这与上述情况相同,只是行和列的角色是相反的。};设置newSpacingX[expr 1.0*$oldNumCols*$oldSpacingX/$kMaxNumCells];设置newSpacingY[expr 1.0*$newSpacingX/$oldSpacingX*$oldSpacingY];设置newNumRows[expr$oldNumRows*$oldSpacingY/$newSpacingY];如果{$newnumrows<$kminnumcells}{设置newspacingy[expr 1.0*$oldnumrows*$oldspacingy/$kminnumcells];设置newSpacingX[expr 1.0*$newSpacingY/$oldSpacingY*$oldSpacingX];};};fme_执行重采样栅格单元大小$newspacingx$newspacingy nearest neighbor;};}elseif{$dosubset}{set comment{获取某些可能是属性或常量的字符串的值。请注意,我们传入了正在使用的属性前缀,因为如果一个确实是一个属性,那么它实际上不会是字符串中的确切名称(因为我们重命名了上面的所有属性)。};设置rasterNumRows[FME_GetAttribute_num_rows];设置rasternumcols[fme_getattribute_num_columns];设置注释{仅当指定的开始位置实际在光栅内时才执行子设置。};如果{$subsetStartRow<$rasterNumRows&&$subsetStartCol<$rasterNumCols}{设置注释{现在将子集绑定到光栅的大小,这样我们就不会创建填充。};如果{[expr$subsetstartrow+$subsetnumrows]>$rasternumrows}{设置subsetnumrows[expr$rasternumrows-$subsetstartrow];};如果{[expr$subsetStartCol+$subsetNumCols]>$rasterNumCols}{设置subsetNumCols[expr$rasterNumCols-$subsetStartCol];};执行substraster$subsetstartrow$subsetnumrows$subsetstartcol$subsetnumcols;};};set comment{删除@raserproperties添加的所有属性,并从实际属性中删除前缀。我们假设它们都以下划线开头。};fme_execute removeattributes fme_regexp_match{^};foreach oldName$allNames{设置newName$kAttrPrefix;追加newName$oldName;fme_renameattribute$oldname$newname;};};@Tcl2(" geometry1_56e2964d_f8b0_4013_8134_9437ee2cc0704_准备者{ } { } { } { #现在将所有特性路由到记录器中,将它们的#特性类型更改为transformer名称,这样它们就可以很好地查看# geometry1_56e2964d_f8b0_4013_8134_9437ee2cc0704_VIS_FEAT_TYPE更改要显示的特性的特性类型#。DEFAULT_MACRO geometry1_56e2964d_f8b0_4013_8134_vis_feat_type geometry1$(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 geometry1_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(geometry1_56e2964d_f8b0_4013_8134_9437ee2cc0704_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个 Win32,MyStAutoReSuto ToRead Win32,2000000,N-------------------------------------------------------------------FaseYy-DEF*TraceFrimeFrimeAlgyNoLy“目的地特征类型路由相关器”CordPyPARMY评价单程输入特性-Type路由功能_TYPE*输出不_ROUTED功能_TYPE_unuke_ume_uuu@Tcl2(“FME_StatMessage 818059[FME_GetAttribute FME_template_ufeature_utype]818060 818061 FME_uwarn])ා-----------------------------FACTORY_DEF*TeeFactory FACTORY_uname“Final OUTPUT Nuker”输入功能_utype_unuke_ume#--------------------------FasyY-DEF*CeaTeCudioAtOutEnter StuturyType 1。-------------------------文件[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 filesnext{};set lastfile{}foreach{fileName}[lsort$files]{set fileNoExt[string trimrright$fileName{.ffs}];if[regexp{(.)*[0-9]*$}$fileNoExt wholething fileNoExtBase]{if{$fileNoExtBase==$lastfile}{continue};set lastfile$fileNoExt;lappend fileNoExt$fileNoExt}eval FME_Execute System\173\042$(FME_HOME_UNIX)/fmedatainspector\042--可视化工具--单个应用程序--关闭时删除--无源提示-d{$(WORKSPACE_TEMP_DIR)}-a ffs-f ffs$filesnext&\175;};};)“工厂定义*三工厂输入功能”类型__