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

Clipping rectangle

" POSITION="122.71066621380481 264.90062353004464" TOP_LEFT="122.71066621380481 264.90062353004464" BOTTOM_RIGHT="594.71066621380487 265.90062353004464" BOUNDING_RECT="122.71066621380481 264.90062353004464 472 -1" ORDER="500000000000016" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="5">
#!

Break everything into lines

" POSITION="1588.5161251612517 226.25456254562548" TOP_LEFT="1588.5161251612517 226.25456254562548" BOTTOM_RIGHT="2018.5161251612517 227.25456254562548" BOUNDING_RECT="1588.5161251612517 226.25456254562548 430 -1" ORDER="500000000000017" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="11">
#!

Select the highest elevation

" POSITION="3322.4566683762073 124.11188397598269" TOP_LEFT="3322.4566683762073 124.11188397598269" BOTTOM_RIGHT="3752.4566683762073 125.11188397598269" BOUNDING_RECT="3322.4566683762073 124.11188397598269 430 -1" ORDER="500000000000020" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="19">
#!

Extrude area

" POSITION="4103.6496564965646 122.50412504125049" TOP_LEFT="4103.6496564965646 122.50412504125049" BOTTOM_RIGHT="4533.6496564965646 123.50412504125049" BOUNDING_RECT="4103.6496564965646 122.50412504125049 430 -1" ORDER="500000000000021" FOLLOW_ANCHOR="true" INFO_NODE="false" COLOUR="1,1,0.78431372549019607,0.19607843137254902" SIZE_POLICY="10" ANCHORED_NODE="25">
#!#!
#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#! #!#! #!#! #!#! #!#!
FME_PYTHON_VERSION 27 GUI忽略SourceDataset_ESRISHAPE_1,ESRISHAPE_IN_READER_PARAMETERS_ESRISHAPE_1,ESRISHAPE_IN_ENCODING_ESRISHAPE_1,ESRISHAPE_IN_USE_SEARCH_ENVELOPE_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1,ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1,ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1,ESRISHAPE_IN_ADVANCED_ESRISHAPE_1,ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1,ESRISHAPE_IN_GEOMETRY_ESRISHAPE_1,ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1,ESRISHAPE_IN_MEASURES_AS_Z_ESRISHAPE_1,ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1,ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1,ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1 DEFAULT_MACRO SourceDataset_ESRISHAPE $(FME_MF_DIR)c05_t1362.shp GUI多文件SourceDataset_ESRISHAPE形状文件(* SHP)| * .SHP | Compressed_Shapefiles(* SHZ)| * .shz | All_Files(*)| *资料来源ESRI的shape文件(S):INCLUDE [如果{{$(SourceDataset_ESRISHAPE)} {==}} {puts_real {参数 'SourceDataset_ESRISHAPE' 必须被给出的值};出口1;};]#!START_HEADER#!START_WB_HEADER READER_TYPE MULTI_READER MULTI_READER_TYPE {0} ESRISHAPE MULTI_READER_KEYWORD {0} ESRISHAPE_1 MULTI_READER_GEN_DIRECTIVES {0} SEARCH_ENVELOPE_MINY,0,高级,, CLIP_TO_ENVELOPE,NO,TRIM_PRECEDING_SPACES,是的,SEARCH_ENVELOPE_MAXY,0,SIMPLE_DONUT_GEOMETRY,简单,ESRISHAPE_EXPOSE_FORMAT_ATTRS ,, SEARCH_ENVELOPE_MINX,0,UPPER_CASE_ATTR_NAMES,无编码,, DISSOLVE_HOLES,不,_MERGE_SCHEMAS,YES,EXPOSE_ATTRS_GROUP ,, USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM ,, NUMERIC_TYPE_ATTRIBUTE_HANDLING,STANDARD_TYPES,REPORT_BAD_GEOMETRY,没有,CHECK_NUMERIC_FIELDS,是的,SEARCH_ENVELOPE_MAXX,0,MEASURES_AS_Z,不,几何形状,WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET空#!END_WB_HEADER#! START_WB_HEADER MACRO WB_KEYWORD "ESRISHAPE_1" #! END_WB_HEADER #! START_SOURCE_HEADER ESRISHAPE ESRISHAPE_1 # ============================================================================ # The following GUI line prompts for the source shapefiles # The dataset this mapping file was generated from was: #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {{$(SourceDataset)} != ""} { \ puts {DEFAULT_MACRO SourceDataset_ESRISHAPE_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER ESRISHAPE ESRISHAPE_1 DEFAULT_MACRO SourceDataset_ESRISHAPE_1 $(SourceDataset_ESRISHAPE) GUI MULTIFILE SourceDataset_ESRISHAPE_1 Shapefiles(*.shp)|*.shp|Compressed_Shapefiles(*.shz)|*.shz|All_Files(*)|* Source Esri Shapefile(s): # ===================================================================== # Provide some control over what attributes have the user-selected # encoding applied. Normally all attributes are updated after being # read, but the following lines exclude from this treatment all # attributes whose names start with fme_ or shape_. ESRISHAPE_1_UNENCODED_ATTR_PREFIX fme_ shape_ #Added default value for dissolve holes so that default for DI is consistent with workbench DEFAULT_MACRO ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1 no ESRISHAPE_1_DISSOLVE_HOLES "$(ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1)" DEFAULT_MACRO ESRISHAPE_IN_READER_PARAMETERS_ESRISHAPE_1 GUI OPTIONAL DISCLOSUREGROUP ESRISHAPE_IN_READER_PARAMETERS_ESRISHAPE_1 ESRISHAPE_IN_UPPER_CASE_ATTR_NAMES%ESRISHAPE_IN_ENCODING_ESRISHAPE_1%ESRISHAPE_IN_NUMERIC_TYPE_ATTRIBUTE_HANDLING Reader Parameters # ============================================================================ # Determines whether the attribute names should be uppercased, or whether they # should stay as specified in the shapefile. Once the mapping file/workspace # has been generated, the value for this keyword should not be changed. DEFAULT_MACRO ESRISHAPE_IN_UPPER_CASE_ATTR_NAMES_ESRISHAPE_1 No ESRISHAPE_1_UPPER_CASE_ATTR_NAMES "$(ESRISHAPE_IN_UPPER_CASE_ATTR_NAMES_ESRISHAPE_1)" # ============================================================================ # The following keyword allows the user to choose what encoding to # use for reading the shapefile, overrides dbf file LDID or .cpg # file if present. DEFAULT_MACRO ESRISHAPE_IN_ENCODING_ESRISHAPE_1 ESRISHAPE_1_ENCODING "$(ESRISHAPE_IN_ENCODING_ESRISHAPE_1)" GUI OPTIONAL ENCODING ESRISHAPE_IN_ENCODING_ESRISHAPE_1 ANSI%SYSTEM%BIG5%EUC%HKBIG5%ISO%OEM%SJIS%UTF-8%CP437%CP708%CP720%CP737%CP775%CP850%CP852%CP855%CP857%CP860%CP861%CP862%CP863%CP864%CP865%CP866%CP869%CP874%CP932%CP936%CP950%CP1250%CP1251%CP1252%CP1253%CP1254%CP1255%CP1256%CP1257%CP1258%ISO8859-1%ISO8859-2%ISO8859-3%ISO8859-4%ISO8859-5%ISO8859-6%ISO8859-7%ISO8859-8%ISO8859-9%ISO-8859-11%ISO8859-13%ISO8859-15%WINDOWS-874 Character Encoding # ============================================================================ # Determines whether numeric attributes should be interpreted as binary or as # bound number fields (ActualDBFrepresentation) DEFAULT_MACRO ESRISHAPE_IN_NUMERIC_TYPE_ATTRIBUTE_HANDLING_ESRISHAPE_1 STANDARD_TYPES ESRISHAPE_1_NUMERIC_TYPE_ATTRIBUTE_HANDLING "$(ESRISHAPE_IN_NUMERIC_TYPE_ATTRIBUTE_HANDLING_ESRISHAPE_1)" #Note: Using the search envelope requires the shape index files (.sbnand.sbx) DEFAULT_MACRO ESRISHAPE_IN_EXPOSE_ATTRS_GROUP_ESRISHAPE_1 ESRISHAPE_1_EXPOSE_ATTRS_GROUP "$(ESRISHAPE_IN_EXPOSE_ATTRS_GROUP_ESRISHAPE_1)" # Include this file in source setting section to add native search envelope processing # Zero as a default means we don't do any search -- this makes workbench happier DEFAULT_MACRO ESRISHAPE_IN_USE_SEARCH_ENVELOPE_ESRISHAPE_1 NO ESRISHAPE_1_USE_SEARCH_ENVELOPE "$(ESRISHAPE_IN_USE_SEARCH_ENVELOPE_ESRISHAPE_1)" GUI ACTIVEDISCLOSUREGROUP ESRISHAPE_IN_USE_SEARCH_ENVELOPE_ESRISHAPE_1 ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1%ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1%ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1%ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1%ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1%ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1%ESRISHAPE_IN_SEARCH_METHOD%ESRISHAPE_IN_SEARCH_METHOD_FILTER%ESRISHAPE_IN_SEARCH_ORDER%ESRISHAPE_IN_SEARCH_FEATURE%ESRISHAPE_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope # =========================================================================== GUI LOOKUP ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1 ,0 default_macro esrishape_in_search_envelope minx_esrishape_1 0 esrishape_1_search_envelope "$(esrishape_in_search_envelope minx_esrishape_1)"GUI可选浮ESRISHAPE_IN_SEARCH_ENVELOPE_MINX_ESRISHAPE_1最小X : # =========================================================================== GUI查找ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1 ,0 default_macro esrishape_in_search_envelope miny_esrishape_1 0 esrishape_1_search_envelope "$(esrishape_in_search_envelope miny_esrishape_1)"GUI可选浮ESRISHAPE_IN_SEARCH_ENVELOPE_MINY_ESRISHAPE_1最低Y : # =========================================================================== GUI查找ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1 ,0 default_macro esrishape_in_search_envelope maxx_esrishape_1 0 esrishape_1_search_envelope "$(esrishape_in_search_envelope e_maxx_esrishape_1)"GUI可选浮ESRISHAPE_IN_SEARCH_ENVELOPE_MAXX_ESRISHAPE_1最大X : # =========================================================================== GUI查找ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1 ,0 default_macro esrishape_in_search_envelope maxy_esrishape_1 0 esrishape_1_search_envelope "$(esrishape_in_search_envelope maxy_esrishape_1)"GUI可选浮ESRISHAPE_IN_SEARCH_ENVELOPE_MAXY_ESRISHAPE_1最大Y : # =========================================================================== GUI查找ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1 , default_macro esrishape_in_search_envele_coordinate_system_esrishape_1 esrishape_1_search_envelope "$(esrishape_in_search_envele_coordinate_system_esrishape_1)"GUI可选COORDSYS ESRISHAPE_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_ESRISHAPE_1搜索信封坐标系统 : # =========================================================================== GUI查找ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1 ,NO DEFAULT_MACRO ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1 NO ESRISHAPE_1_CLIP_TO_ENVELOPE “$(ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1)” GUI可选复选框ESRISHAPE_IN_CLIP_TO_ENVELOPE_ESRISHAPE_1 YES%没有剪辑以搜索信封DEFAULT_MACRO ESRISHAPE_IN_CHECK_NUMERIC_FIELDS_ESRISHAPE_1是ESRISHAPE_1_CHECK_NUMERIC_FIELDS “$(ESRISHAPE_IN_CHECK_NUMERIC_FIELDS_ESRISHAPE_1)” DEFAULT_MACRO ESRISHAPE_IN_ADVANCED_ESRISHAPE_1 GUI可选DISCLOSUREGROUP ESRISHAPE_IN_ADVANCED_ESRISHAPE_1 ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1%ESRISHAPE_IN_GEOMETRY_ESRISHAPE_1高级DEFAULT_MACRO ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1是ESRISHAPE_1_TRIM_PRECEDING_SPACES“$(ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1)” GUI CHOICE ESRISHAPE_IN_TRIM_PRECEDING_SPACES_ESRISHAPE_1是%不修剪前的空格DEFAULT_MACRO ESRISHAPE_IN_GEOMETRY_ESRISHAPE_1 GUI可选DISCLOSUREGROUP ESRISHAPE_IN_GEOMETRY_ESRISHAPE_1 ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1%ESRISHAPE_IN_MEASURES_AS_Z_ESRISHAPE_1%ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1%ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1几何#============================================================================#选项可以使用简单的圆环几何创建,这是比#独创快method, but less meticulous at detecting and correcting # geometric anomalies (i.e.holeswithinholes) DEFAULT_MACRO ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1 simple ESRISHAPE_1_SIMPLE_DONUT_GEOMETRY "$(ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1)" GUI LOOKUP_CHOICE ESRISHAPE_IN_SIMPLE_DONUT_GEOMETRY_ESRISHAPE_1 "\"Orientation Only\",simple"%"\"Orientation and Spatial Relationship\",complex" Donut Geometry Detection # ============================================================================ # The following GUI line sets whether measure values in the shapefiles should # be treated as elevations. DEFAULT_MACRO ESRISHAPE_IN_MEASURES_AS_Z_ESRISHAPE_1 no ESRISHAPE_1_MEASURES_AS_Z "$(ESRISHAPE_IN_MEASURES_AS_Z_ESRISHAPE_1)" GUI CHOICE ESRISHAPE_IN_MEASURES_AS_Z_ESRISHAPE_1 yes%no Treat Measures as Elevation # ============================================================================ # The following keyword sets whether the reader dissolves holes in donuts. ESRISHAPE_1_DISSOLVE_HOLES "$(ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1)" GUI CHOICE ESRISHAPE_IN_DISSOLVE_HOLES_ESRISHAPE_1 yes%no Dissolve Adjacent Holes # ============================================================================ # The following keyword sets whether bad geometry should be reported via # the shape_geometry_error{} list attribute. DEFAULT_MACRO ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1 no ESRISHAPE_1_REPORT_BAD_GEOMETRY "$(ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1)" GUI CHOICE ESRISHAPE_IN_REPORT_BAD_GEOMETRY_ESRISHAPE_1 yes%no Report Geometry Anomalies # =========================================================================== DEFAULT_MACRO ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1 ESRISHAPE_1_NETWORK_AUTHENTICATION "$(ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1)" GUI OPTIONAL AUTHENTICATOR ESRISHAPE_IN_NETWORK_AUTHENTICATION_ESRISHAPE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication # ============================================================================ DEFAULT_MACRO ESRISHAPE_IN_ATTRIBUTE_READING_ESRISHAPE_1 ALL ESRISHAPE_1_ATTRIBUTE_READING "$(ESRISHAPE_IN_ATTRIBUTE_READING_ESRISHAPE_1)" # ============================================================================ ESRISHAPE_1_GENERATE_FME_BUILD_NUM 18295 ESRISHAPE_1_DATASET "$(SourceDataset_ESRISHAPE_1)" #! END_SOURCE_HEADER #! START_WB_HEADER #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)extrudecoutours.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto FME_GEOMETRY_HANDLING Enhanced FME_STROKE_MAX_DEVIATION 0 LOG_TIMINGS YES LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_ESRISHAPE_1 ESRISHAPE_1 # ------------------------------------------------------------------------- ESRISHAPE_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME extrudecoutours 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 # ------------------------------------------------------------------------- ESRISHAPE_1_DEF c05_t1362 SHAPE_GEOMETRY shape_polyline GEO_OID number(11,0) ELEVATION number(11,0) CODE number(11,0) TILE char(7) # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS MULTI_READER_KEYWORD $(DATASET_KEYWORD_ESRISHAPE_1) INPUT FEATURE_TYPE * ROUTE ESRISHAPE ESRISHAPE_1::c05_t1362 multi_reader_keyword,$(DATASET_KEYWORD_ESRISHAPE_1) TO FME_GENERIC ::c05_t1362 ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * ESRISHAPE_1_MERGE_DEF ESRISHAPE_1::c05_t1362 EXACT c05_t1362 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "c05_t1362 (ESRISHAPE_1) Splitter" INPUT FEATURE_TYPE c05_t1362 OUTPUT FEATURE_TYPE c05_t1362_ESRISHAPE_1 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 { }]];如果{[llength $splitCoords] > 4} {set trimmedCoords {};foreach item $splitCoords {if {$item != {}} {lappend trimmedCoords $item}};设置splitCoords trimmedCoords美元;};如果{[llength $splitCoords] != 4} {error {Creator:坐标列表应该是一个以空格分隔的列表,包含4个数字,如'minx miny maxx max ' - ' 的是无效的};};设置minX [lindex $splitCoords 0];set minY [lindex $splitCoords 1]; / /设置lindex $splitCoords 1set maxX [lindex $splitCoords 2]; / /设置索引set maxY [lindex $splitCoords 3]; / /设置maxY"MACRO creatator_coords $minX $minY $minX $max $maxX $max $maxX $minY $minX $minY";{MACRO Creator_2D3D 2D_GEOMETRY};{MACRO Creator_CLASSIC *}}] FACTORY_DEF $(Creator_XML) CreationFactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING, xml ? version = 1.0 编码= US_ASCII 独立的= 没有 几何 多边形 x = 2161866 y = 1325053 x = 2163855 y = 1325053 x = 2163855 y = 1326421 x = 2161866 y = 1326421 x = 2161866 y = 1325053 多边形 几何 )FACTORY_DEF $(Creator_CLASSIC)CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D)$(Creator_COORDS)CREATE_AT_END无输出FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ @ TCL2(Creator_CoordSysRemover)@CoordSys()NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE “_creation_instance” 输出FEATURE_TYPE Creator_CREATED fme_feature_type造物主FACTORY_DEF * TeeFactory FACTORY_NAME “创建者创建分配器” INPUT FEATURE_TYPE Creator_CREATED OUTPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c = OUTPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA = FACTORY_DEF * BranchingFactory FACTORY_NAME “Creator_CREATED_0_GJAgmIF9G6c =分支器-1 7” INPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c = TARGET_FACTORY “$(WB_CURRENT_CONTEXT)_CREATOR_BRANCH_TARGET” MAXIMUM_COUNT无输出PASSED FEATURE_TYPE *FACTORY_DEF * BranchingFactory FACTORY_NAME “Creator_CREATED_1_Exx7idfjvCA = -1分支器13” INPUT FEATURE_TYPE克雷亚来r_CREATED_1_Exx7idfjvCA= 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 * TeeFactory FACTORY_NAME 2DForcer INPUT FEATURE_TYPE c05_t1362_ESRISHAPE_1 OUTPUT FEATURE_TYPE 2DForcer_2D @Dimension(2) # ------------------------------------------------------------------------- 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_0_GJAgmIF9G6c= is emtpy, we don't get every feature # sent into this factory. FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_ClipperCloner INPUT FEATURE_TYPE Creator_CREATED_0_GJAgmIF9G6c= 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 2DForcer_2D is emtpy, we don't get every feature # sent into this factory. FACTORY_DEF * TestFactory FACTORY_NAME Clipper_ClippeeFilter INPUT FEATURE_TYPE 2DForcer_2D 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" NO OUTPUT CLIPPED_INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" yes OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper") OUTPUT REJECTED FEATURE_TYPEClipper_ FACTORY_DEF {*} ClippingFactory FACTORY_NAME Clipper_Vector INPUT CLIPPER FEATURE_TYPE clipper___clipperforvector___ INPUT CLIPPEE FEATURE_TYPE Clipper___VectorOrSolidClippees___ INPUT CLIPPEE FEATURE_TYPE Clipper___RasterClippees___ MULTICLIP YES CONNECT_Z_MODE Missing_val_mode compute_nans compute_measures_mode continuous measures_and_z_from clippee 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 LINES_AS_SEGMENTS内部没有模式完成CLEANING_TOLERANCE没有输出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 Clipper") OUTPUT NONPOLY_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917352 Clipper") OUTPUT REJECTED FEATURE_TYPE Clipper_ . FACTORY_DEF * SolidIntersectionFactory FACTORY_NAME Clipper_Solid INPUT CLIPPER FEATURE_TYPE clipper__clippersforsolid ___ INPUT CLIPPEE FEATURE_TYPE clipper__clippeforsolid ___ MULTICLIP YES CLIPPEE_ON_BOUNDARY INSIDE MERGE_CLIPPER_ATTRIBUTES NO ATTR_ACCUM_MODE " “ATTR_CONFLICT_RES” “CLIPPER_PREFIX” " DO_NOT_AGGREGATE NO OUTPUT_NO_CLIPPERS_AS_OUTSIDE OUTSIDE_NO_CLIPPERS_ATTR _fme_no_clipper OUTPUT INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" NO OUTPUT Clipper_INSIDE FEATURE_TYPE Clipper_INSIDE "_clipped" yes OUTPUT EXTRA_CLIPPER FEATURE_TYPE Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917351 Clipper") OUTPUT REJECTED FEATURE_TYPEClipper_ FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_Nuker INPUT FEATURE_TYPE Clipper__delete__ @Log("故障特性是:")DEFAULT_MACRO _wb_bypass_terminate No FACTORY_DEF * TeeFactory FACTORY_NAME Clipper_ . 输入FEATURE_TYPE Clipper_ FEATURE_TYPE * @Abort(ENCODED, Clipper 输出 一个 拒绝了 特征。 继续 翻译 特性 拒绝了 改变 工作空间 参数 翻译 拒绝了 功能 处理 继续 翻译 ) # ------------------------------------------------------------------------- 包括(如果{({}= ={是的})}{{宏SELFINTERSECTIONFACTORY *};{MACRO INTERSECTIONINPUT INPUT FEATURE_TYPE __tointer__};} else {puts {MACRO SELFINTERSECTIONFACTORY忽略};{MACRO INTERSECTIONINPUT INPUT FEATURE_TYPE Clipper_INSIDE INPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA=};};[FACTORY_DEF $(SELFINTERSECTIONFACTORY) IntersectionFactory FACTORY_NAME Intersector_Self INPUT FEATURE_TYPE Clipper_INSIDE INPUT FEATURE_TYPE Creator_CREATED_1_Exx7idfjvCA= IGNORE_NODE_HEIGHTS YES selfintersection_only MODE COMPLETE DEAGGREGATE_INPUT YES REJECT_INVALID_GEOM YES OUTPUT SEGMENT FEATURE_TYPE __tointer__ OUTPUT REJECTED .FEATURE_TYPE Intersector_ FACTORY_DEF {*} IntersectionFactory FACTORY_NAME Intersector_ALL $(INTERSECTIONINPUT) OVERLAP_COUNT_ATTRIBUTE "_overlap " SEGMENT_COUNT_ATTRIBUTE "_segments" ACCUMULATE_ATTRIBUTES "ONE" ACCUMULATE_COLLINEAR_ATTRIBUTES "ONE" LIST_ATTRS_TO_INCLUDE { } LIST_ATTRS_TO_INCLUDE_MODE DIRECTION_NAME” “单独_collinear_segments no compute_measures_mode连续节点_number_attr”_node_number“累积_node_attributes”一个“Ignore_node_heights是模式完成Deaggrege_Inputs Yes Recopt_Invalid_Geom Yes Output_Collaped Cleaning_Tolerance None输出段Feature_type InterSector_Intersed输出拒绝Feature_type intersector_ DEFAULT_MACRO _wb_bypass_terminate No FACTORY_DEF * tefactory FACTORY_NAME Intersector_ . DEFAULT_MACRO _wb_bypass_terminate No FACTORY_DEF * tefactory FACTORY_NAME Intersector_ . DEFAULT_MACRO _wb_bypass_terminate 输入FEATURE_TYPE Intersector_ 输出失败FEATURE_TYPE * @Abort(ENCODED, Intersector 输出 一个 拒绝了 特征。 继续 翻译 特性 拒绝了 改变 工作空间 参数 翻译 拒绝了 功能 处理 继续 翻译 ) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME AreaBuilder_GeomFilter_1 INPUT FEATURE_TYPE Intersector_INTERSECTED INPUT FEATURE_TYPE AreaBuilder_GeomFilter_DUMMY TEST &fme_type == "fme_arc" TEST &fme_type == "fme_ellipse" boolean操作符或输出通过FEATURE_TYPEAreaBuilder___ValidGeoms_1___ OUTPUT FAILED FEATURE_TYPE AreaBuilder___InvalidGeoms_1___ FACTORY_DEF * TestFactory FACTORY_NAME AreaBuilder_GeomFilter_2 INPUT FEATURE_TYPE AreaBuilder_GeomFilter_2 INPUT FEATURE_TYPE AreaBuilder_GeomFilter_2 TEST @GlobalVariable(fme_get_mapping_file_flag_keyword_FME_USE_RICH_GEOMETRY) == yes BOOLEAN_OPERATOR AND OUTPUT PASSED FEATURE_TYPEAreaBuilder___ValidGeoms___输出失败FEATURE_TYPE AreaBuilder___InvalidGeoms_1___ FACTORY_DEF * TestFactory FACTORY_NAME AreaBuilder_GeomFilter_3输入FEATURE_TYPE AreaBuilder___InvalidGeoms_1___测试@Tcl2(“FME_Coordinates numCoords”)> = 2 BOOLEAN_OPERATOR和输出通过FEATURE_TYPE AreaBuilder___ValidGeoms___ FEATURE_TYPE输出失败areabuilder__invalidgeoms ___ INCLUDE [if {("NONE" == "NONE") || (" ") " == "0")} {puts "MACRO AreaBuilder_IS_ENABLE NOT_THIS_TIME";} else {puts "MACRO AreaBuilder_IS_ENABLE *";}] #如果tolerance为0则跳过此步骤FACTORY_DEF $(AreaBuilder_IS_ENABLE) SnappingFactory FACTORY_NAME AreaBuilder_SNAPPER INPUT FEATURE_TYPE areabuilder__validgeoms___ SNAP_TYPE NONE EXTEND_LINES_TO_SNAP NEVER SAVE_SHORT_LINES No OUTPUT snap snap FEATURE_TYPE AreaBuilder___ValidGeoms___ OUTPUT unused FEATURE_TYPE AreaBuilder___ValidGeoms___ FACTORY_DEF {*} PolygonFactory FACTORY_NAME AreaBuilder_polygonizer INPUT FEATURE_TYPE AreaBuilder___ValidGeoms___REPORT_PROGRESS LIST_NAME "_components{}" LIST_ATTRS_TO_INCLUDE {ELEVATION} LIST_ATTRS_TO_INCLUDE_MODE SELECTED DIRECTION_NAME "direction" LINES_AS_SEGMENTS No ALLOW_CYCLES No REJECT_INVALID_GEOM Yes DEAGGREGATE_INPUT Deaggregate ACCUMMULATE_ATTRIBUTES One OUTPUT POLYGON FEATURE_TYPE __poly___ OUTPUT REJECTED FEATURE_TYPE AreaBuilder_ . 包括(如果{(“是”= =“是的”)| |(“是”= =“是的”)| |(“是”= =“是的”)}{所说的“宏观DONUT_FACTORY_IN{*}”;"MACRO TEE_FACTORY_IN NOT_THIS_TIME";} else {"MACRO DONUT_FACTORY_IN NOT_THIS_TIME";"MACRO TEE_FACTORY_IN *";}] FACTORY_DEF $(DONUT_FACTORY_IN) DonutFactory FACTORY_NAME area abuilder_donutizer INPUT FEATURE_TYPE ___POLY___ CONNECT_Z_MODE FIRST_WINS LINES_AS_SEGMENTS No DROP_HOLES No TAG_HOLES No SPLIT_INPUT_DONUTS AREA_BUILDER_HELPER_MODE MERGE_INCOMING_ATTR YES ATTR_ACCUM_MODE "One" HOLE_LIST _components{} LIST_ATTRS_TO_INCLUDE {ELEVATION}LIST_ATTRS_TO_INCLUDE_MODE SELECTED MODE COMPLETE OUTPUT DONUT FEATURE_TYPE AreaBuilder_AREA @RemoveAttributes(tagged_hole) OUTPUT POLYGON FEATURE_TYPE AreaBuilder_AREA @RemoveAttributes(tagged_hole) OUTPUT REJECTED FEATURE_TYPE AreaBuilder_AREA @RemoveAttributes(fme_rejection_code) FACTORY_DEF $(TEE_FACTORY_IN) TeeFactory FACTORY_NAMEAreaBuilder_router INPUT FEATURE_TYPE ___POLY___ OUTPUT FEATURE_TYPE AreaBuilder_AREA FACTORY_DEF * TeeFactory FACTORY_NAME AreaBuilder_WarnInvalids INPUT FEATURE_TYPE AreaBuilder___InvalidGeoms___ OUTPUT FEATURE_TYPE AreaBuilder_ fme_rejection_code INVALID_GEOMETRY_VERTICES DEFAULT_MACRO _WB_BYPASS_TERMINATION没有FACTORY_DEF * TeeFactory FACTORY_NAME AreaBuilder_ 输入FEATURE_TYPE AreaBuilder_ FEATURE_TYPE * @Abort(ENCODED, AreaBuilder 输出 一个 拒绝了 特征。 继续 翻译 特性 拒绝了 改变 工作空间 参数 翻译 拒绝了 功能 处理 继续 翻译 ) # ------------------------------------------------------------------------- Tcl2设置ListSorterRenamedAttrPrefix ________ Tcl2 proc ListSorter_sort{}{设置评论{=注意:下面的算法不支持嵌套列表。};全球ListSorterRenamedAttrPrefix;regsub \“{}。* $ \ " {_components{}。海拔}\“\”listBaseNoBrace;regsub \“{}。* $ \ " {_components{}。海拔}\ \{\“listBase;regsub \“{}。*$\" {_components{}.ELEVATION} \"\" listName; set listBaseLen [string length $listBase]; set listNameLen [expr $listBaseLen - 1]; set listValueExtension [string replace {_components{}.ELEVATION} 0 $listBaseLen {}]; set kMissingSidecarAttrSuffix {._________WAS_MISSING_________________}; set kCloseBrace \"\}\"; set kAnyOtherCharacters {*}; set COMMENT { = To resolve PR 46315 (and friends), lets make a first pass to determine the maximum index number = in the list. And then we'll go through and make sure we have a KEY value for each of those. We'll track = what "keys" we added so that at the end we can REMOVE them so they stay MISSING. }; set maxElementCount 0; set attributeNames [FME_AttributeNames]; set listRegExp $listBaseNoBrace; append listRegExp "\{(\[0-9\]+)\}"; foreach attr $attributeNames { if { [regexp $listRegExp $attr dummy subExpr] == 1 } { if { [expr $subExpr > $maxElementCount] } { set maxElementCount $subExpr; }; }; }; set curElement 0; set COMMENT { = So now that we have the max # of elements, lets whip through and make sure we have an actual element for = each of the "key" parts of the list we want to sort. If we don't, we'll make an element there with an empty = value. Note that we can't easily separate and sort NULL < missing < empty, but we'll live with that = shortcoming in here as long as it is documented. }; while { $curElement <= $maxElementCount } { set elementBasePattern $listBase$curElement$kCloseBrace$kAnyOtherCharacters; if { [lsearch -glob $attributeNames $elementBasePattern] != -1 } { set COMMENT {We found that there is at least some kind of element at this index in the list so we need to ensure there is a key element at this index}; set COMMENT {Minimum float is taken from std::numeric_limits ::最低()cppreference网页}。Set IndexKeyElementAttr $ $ listbase $ curelement $ kclosebace $ listvalueextension;设置indexKeyElementSidecarAttr $ listBase $ curElement $ kCloseBrace $ kMissingSidecarAttrSuffix;如果 { ![FME_AttributeExists $ indexKeyElementAttr]} {集COMMENT {键值属性是不存在的。所以让我们把它放在};如果{{-real} == {}} {集COMMENT {做字符串比较,以便空字符串};FME_SetAttribute $ indexKeyElementAttr {};}其他{集COMMENT {做数字比较,以便最低浮};FME_SetAttribute $ indexKeyElementAttr -3.40282e + 38; }; FME_SetAttribute $indexKeyElementSidecarAttr {FME_MISSING_VAL}; } elseif { {-real} != {} && [FME_IsAttributeNull $indexKeyElementAttr] } { set COMMENT {attribute exists and we are doing numeric comparisons set null values to min float so they pass the lsort}; FME_SetAttribute $indexKeyElementSidecarAttr {FME_NULL_VALUE}; FME_SetAttribute $indexKeyElementAttr -3.40282e+38; } elseif { {-real} != {} && [FME_GetAttribute $indexKeyElementAttr] == {} } { set COMMENT {attribute exists and we are doing numeric comparisons set empty values to min float so they pass the lsort}; FME_SetAttribute $indexKeyElementSidecarAttr {}; FME_SetAttribute $indexKeyElementAttr -3.40282e+38; }; }; incr curElement; }; set COMMENT { = For each attribute "listattr{ } .count" and all related attributes = "listattr{ ,创建一个表单列表= {$listattr{ } .count } =,并将列表附加到toSort,并为关联数组listExtensions( )。=迭代属性时,将所有此类属性重命名为=“________列表{ 让它们不碍事,以后更容易清理。=注意,我们是手动提取索引和扩展名,而不是使用正则表达式,因为}更有效;设置toSort {};foreach attr [FME_AttributeNames] {set attrStart [string range $attr 0 $listNameLen]; / /设置属性if {$attrStart == $listBase} {set braceEnd [string first \} $attr $listBaseLen]; / /设置一个大括号set index [string range $attr $listBaseLen [expr $braceEnd - 1]]; / /设置索引set extension [string range $attr [expr $braceEnd + 1] end]; / /设置扩展名lappend listExtensions美元(美元指数)扩展;如果{$extension == $listValueExtension} {lappend toSort [list [FME_GetAttribute $attr] $index]};FME_RenameAttribute“ListSorterRenamedAttrPrefix美元attr”美元attr; set renamedAttrs($ListSorterRenamedAttrPrefix$attr) 1; } }; set COMMENT { = Sort the {$listattr{ }通过索引0 (attr值)};set sortedList [lsort -real -递减-index 0 $toSort];设置destIndex 0;set COMMENT{=对于sortedList中的每个列表,遍历列表,重命名= "________listattr{" “为=” listattr { “}; foreach配对$ sortedlist {set ElementNum [Lindex $配对1];设置Newattrbase”$ listName \ {$ destIndex \}“;设置oldattrbase”$ listname \ {$ exportnum \}“; foreach extension $ listextensions($ ElementNum){fme_renameattribute“$ newattrbase $ extension”$ listsorterrenamedattrefix $ oldattrbase $扩展“;未命名重命名($ listsorterrenamedattrstrprefix $ oldattrbase $扩展);}; incr destIndex};设置注释{=如果任何属性重命名为上面的临时名称,那么而且它们=不包含我们正在排序的结构扩展,它们=仍然存在于功能上,必须清除。}; foreach remainingattr [array names重命名rss] {fme_unsetattributes $ remaingattr};设置注释{= =最后,通过和任何丢失的,空或空键值并适当地设置。我们将保留他们的=并行列表结构的朋友,但我们需要将移动的键还原到其原始状态:丢失,空白或空=};设置Curelement 0;虽然{$ curelement <= $ maxelementcount} {set indexkeyelementsidecarattr $ listbase $ curelement $ kclosebrace $ kmissidecarattrsuffix;if {[fme_attributeexists $ indexkeyEledeCeCarattr]} {set注释{sor to sidecar属性和key属性也};Set IndexKeyElementAttr $ $ listbase $ curelement $ kclosebace $ listvalueextension;设置值[fme_getattribute $ indexkeyEledeCarattr];如果{$ value == {fme_null_value}} {fme_setattributenull $ IndexKeyElementAttr; } elseif { $value == {FME_MISSING_VAL} } { FME_UnsetAttributes $indexKeyElementAttr; } else { FME_SetAttribute $indexKeyElementAttr {}; }; FME_UnsetAttributes $indexKeyElementSidecarAttr; }; incr curElement; }; } FACTORY_DEF * TeeFactory FACTORY_NAME ListSorter INPUT FEATURE_TYPE AreaBuilder_AREA OUTPUT FEATURE_TYPE ListSorter_OUTPUT @Tcl2("ListSorter_sort") # ------------------------------------------------------------------------- INCLUDE [ if { ({VERTICAL} == {SPECIFIED}) } { puts {MACRO Extruder_func @GeometryType(REJECTABLE, fme_extrusion_exact," "," "," ”)};} else {MACRO Extruder_func @GeometryType(REJECTABLE, fme_extrusion_exact,0.0,0.0,0.0,"@EvaluateExpression(FDIV,FLOAT, 价值 _components 0 .ELEVATION -794 * 2、挤出机)”、“垂直”)};}] FACTORY_DEF * TeeFactory FACTORY_NAME挤出机输入FEATURE_TYPE ListSorter_OUTPUT输出FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes (FME_STRICT, ___fme_rejection_code___ fme_rejection_code) $ (Extruder_func) FACTORY_DEF * TestFactory FACTORY_NAME Extruder_Rejector输入FEATURE_TYPE ___TOREJECTOR___测试@ value (fme_rejection_code) = = "输出通过FEATURE_TYPE extruder_extrude @RenameAttributes(FME_STRICT,fme_rejection_code, __fme_rejection_code___)输出失败的FEATURE_TYPE Extruder_ @RemoveAttributes(__fme_rejection_code___) DEFAULT_MACRO _WB_BYPASS_TERMINATION No FACTORY_DEF * TeeFactory FACTORY_NAME Extruder_ 输入FEATURE_TYPE Extruder_ FEATURE_TYPE * @Abort(ENCODED, extr挤出机 输出 一个 拒绝了 特征。 继续 翻译 特性 拒绝了 改变 工作空间 参数 翻译 拒绝了 功能 处理 继续 翻译 )#--------------------------------------------------------------------- #--#假设是研发和创建的工作空间TEMP DIR。请参阅controledefs.cpp - controlyefs :: writevisualizertempdir default_macro workspace_temp_dir包括[set safe亚搏在线Name] [Regsub -All {[^ a-za-z0-9]} {extruder_extruded} _] _ [expr round(rand()* 1000000)] _[时钟点击-milliseconds]“;把“宏Safe_ffs_亚搏在线name $ safeName”放了;] FACTORY_DEF {*} InspectorFactory FACTORY_NAME Extruder_Extruded_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE Extruder_EXTRUDED GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY {} GROUP_ATTRIBUTE_PREFIX {Extruder_Extruded} RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING输出结果FEATURE_TYPE __viewme__#现在将所有功能集成在录像机,改变他们#功能类型变压器的名称,以便它们很好地查看DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/ $(SAFE_FFS_NAME)亚搏在线.ffs DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO#[PR#45549]数据检查器将限制#它读取WIN32,所以我们将相应限制的数目的特征的最大数量#特征我们使用max_features_to_record指令录制。FACTORY_DEF * RecorderFactory FACTORY_NAME Extruder_Extruded_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 _creation_instance,varchar 255. 、GEO_OID varchar 255. 、海拔、varchar 255. 、代码、varchar 255. 、瓷砖、varchar 255. 、_clipped varchar 255. 、_overlaps varchar 255. 、_segments varchar 255. 模式记录STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK是的MAX_FEATURES_TO_RECORD WIN32 2000000 # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME“目的地功能类型路由相关器”COMMAND_PARM_EVALUATION FEATURE_TYPE * FEATURE_TYPE_ATTRIBUTE SINGLE_PASS输入__wb_out_feat_type__输出路由FEATURE_TYPE *输出NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2(“FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type) 818060 818061 fme_warn ") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME输入FEATURE_TYPE“最终输出核武器”__nuke_me __ # ------------------------------------------------------------------------- FACTORY_DEF * CreationFactory CREATE_AT_END输出FEATURE_TYPE __NUKEME__ @TCL(“如果[文件存在{$ (WORKSPACE_TEMP_DIR)}]{设置文件[水珠-nocomplain目录{$ (WORKSPACE_TEMP_DIR)}反面* .ffs];如果{[llength $files] == 1} {set theFile {$(WORKSPACE_TEMP_DIR)/};添加文件[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 \042$theFile\042 & \175;} else {[llength $files] == 0} {catch {file delete -force {$(WORKSPACE_TEMP_DIR)}};} else {set filesNoExt {};设置lastfile {};foreach {fileName} [lsort $files] {set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__