#!#! #! #! #!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #! #!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#!#!#!#!#! #!#! #!#!#!#! #!#! #!#! #!#! #! #!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#! #!#!#!#! #!#! #!#! #!#! #!#!#!GUI IGNORE SourceDataset_DGNV8_1,_IN_UNITS_DGNV8_1,_XPNDCELL_DGNV8_1,EXPAND_UNNAMED_CELLS_DGNV8_1,_PRESERVE_INSERTS_DGNV8_1,_TEXTTAGS_DGNV8_1,_DROP_COMPLEX_DGNV8_1,SPLIT_MULTITEXT_DGNV8_1,PRESERVE_UNNAMEDCELL_INSERTS_DGNV8_1,EXPLODE_DIMENSION_ELEM_DGNV8_1,READ_XREF_FILES_DGNV8_1,USE_XREF_PARENT_MODEL_DGNV8_1,READ_XREF_UPTO_FIRST_LVL_DGNV8_1,READ_XREFS_AS_ELEMENTS_DGNV8_1,APPLY_WORLD_FILE_DGNV8_1,REMOVE_DUPLICATES_DGNV8_1,SEARCH_ENVELOPE_COORDINATE_SYSTEM_DGNV8_1,_UOR_SCALE_DGNV8_1,_UORS_PER_SUB_DGNV8_1,_SUBS_PER_MASTER_DGNV8_1,_UOR_GLOBAL_ORIGIN_X_DGNV8_1,_UOR_GLOBAL_ORIGIN_Y_DGNV8_1,_UOR_GLOBAL_ORIGIN_Z_DGNV8_1,_PRESERVE_CURVES_DGNV8_1,_ELEVATION_SHIFT_FACTOR_DGNV8_1,_CURVE_VERTICES_DGNV8_1,_TRIM_DOWN_TAGS_DGNV8_1,DestDataset_SQLITE3FDO_1,SQLITE3FDO_OUT_OVERWRITE_FILE_SQLITE3FDO_1,_WRITER_MODE_SQLITE3FDO_1 DEFAULT_MACRO SourceDataset_DGNV8 $(FME_MF_DIR)MajorRoads.dgn GUI的多文件SourceDataset_DGNV8 Design_Files(* DGN)| * .dgn | All_files(*。*)| *。*资料来源宾利的MicroStation设计文件(s):default_macro destdataset_sqlite3fdo $(fme_mf_dir)test.db gui filename destdataset_sqlite3fdo sqlite3_database_files(*。sl3; *。db)| * .sl3; *。db | sqlite3_database_files(*。sl3)| * .sl3 | sqlite3_database_files(*。db)| * .db | all_files(*。*)| *。*目的地sqlite3 spatial(fdo)数据库文件:包括tcl proc __fme_expandmacros {text {maxlevels 100}} {if {$ maxlevels <= 0} {return $ text;设置模式[加入{{\ $} {\([^()$] * \)}} {}]设置索引[Regexp -inline -all -indices $模式$ text]如果[llength $ indices] {foreach对[LEREVERSE $ INDICES] {Lassign $配对开始结束设置替换{}设置替换$ :: fme_macrovalues([字符串范围$ text [expr $ start + 2] [expr $端 - 1]]设置文本[string replace $文字$开始$结束$替换]} return [__fme_expandmacros $ text [expr $ maxlevels - 1]]} return $ text} proc __fme_expandenvvars {text {maxlevels 100}} {if {$ maxlevels <= 0} {return $ text;设置模式[加入{{\ $} {\ {[^ \ {} $] * \}} {}]设置索引[Regexp -inline -all -wices $ pattern $ text]如果[llength $ indices]{foreach pair [lasighte $ indices] {lassign $ biaptent结束设置替换{}设置替换$ :: env([字符串范围$ text [expr $ start + 2] [expr $端 - 1])设置文本[字符串替换$ text $ start $结束$ replace]} return [__fme_expandenvvars $ text [expr $ maxlevels - 1]]} return $ text} proc __fme_evalandencodemacro {macroname} {set macRoval {} catch {set macraver [__fme_expandmacros $ :: fme_macrevalues($ macroname)]} catch {set macRoval [__fme_expandenvvars $ macRoval]} return [fme_encodeText $ macRoval]} End_include包括[Puts“宏sourceDataSet_dgnv8__fmeencodeded__ [__fme_evalandencodemaccro sourceDataSet_dgnv8]”;]包括[puts“宏istdataset_sqlite3fdo__fmeencoded______fme_evalandencodemacro destdataset_sqlite3fdo]”;]包括[如果{{$(sourceataSet_dgnv8)} == {}} {puts_real {参数'sourceatataSet_dgnv8'必须给出一个值。}; exit 1; }; ] INCLUDE [ if {{$(DestDataset_SQLITE3FDO)} == {}} { puts_real {Parameter 'DestDataset_SQLITE3FDO' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE DGNV8 READER_KEYWORD DGNV8_1 READER_GEN_DIRECTIVES _DROP_COMPLEX,NO,_MERGE_SCHEMAS,YES,PRESERVE_UNNAMEDCELL_INSERTS,NO,_IGDS_FRAMME,NO,_IN_UNITS,IGDS_MASTER_UNITS,APPLY_WORLD_FILE,NO,_XPNDCELL,NO,EXPAND_UNNAMED_CELLS,NO,_UOR_GLOBAL_ORIGIN_Y,,SPLIT_MULTITEXT,NO,_TEXTTAGS,NO,READ_XREF_UPTO_FIRST_LVL,NO,USE_XREF_PARENT_MODEL,NO,_USE_LEVEL_NAMES,yes,EXPLODE_DIMENSION_ELEM,NO,_UOR_GLOBAL_ORIGIN_X,,_IGDS_MSLINKS,NO,READ_XREF_FILES,NO,METAFILE,dgnv8Names,_PRESERVE_INSERTS,NO,OVERRIDE_GLOBAL_ORIGIN,NO WRITER_TYPE SQLITE3FDO WRITER_KEYWORD SQLITE3FDO_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "DGNV8_1" #! END_WB_HEADER #! START_SOURCE_HEADER DGNV8 DGNV8_1 # ============================================================================ # The following GUI line prompts for a file to be used as the # source of the Microstation design file. # The user input is stored in a macro, which is then used to define # the dataset to be read. # 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_DGNV8_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER DGNV8 DGNV8_1 DEFAULT_MACRO SourceDataset_DGNV8_1 $(SourceDataset_DGNV8) GUI MULTIFILE SourceDataset_DGNV8_1 Design_Files(*.dgn)|*.dgn|All_files(*.*)|*.* Source Bentley MicroStation Design File(s): # ============================================================================ # The following line controls how all the FME coordinates read from the # design file will be interpreted. # Valid values IGDS_MASTER_UNITS -- FME coordinates are treated as Master Units # IGDS_SUB_UNITS -- FME coordinates are treated as Sub Units # IGDS_UORS -- FME coordinates are treated as UORs DEFAULT_MACRO _IN_UNITS_DGNV8_1 IGDS_MASTER_UNITS GUI CHOICE _IN_UNITS_DGNV8_1 IGDS_MASTER_UNITS%IGDS_SUB_UNITS%IGDS_UORS Input Units: # By default, we'll just go with master units and not prompt DGNV8_1_UNITS $(_IN_UNITS_DGNV8_1) # ============================================================================ # The following line controls whether or not cell elements are to be # expanded by the FME as it reads the source file. # DEFAULT_MACRO _XPNDCELL_DGNV8_1 NO GUI CHOICE _XPNDCELL_DGNV8_1 YES%NO Expand Named Cells: # By default, we'll just expand the cells DGNV8_1_EXPAND_CELLS $(_XPNDCELL_DGNV8_1) # The following line controls whether or not unnamed cell elements are to be # expanded by the FME as it reads the source file. # DEFAULT_MACRO EXPAND_UNNAMED_CELLS_DGNV8_1 NO GUI CHOICE EXPAND_UNNAMED_CELLS_DGNV8_1 YES%NO Expand Unnamed Cells: # By default, we do not expand unnamed cells DGNV8_1_EXPAND_UNNAMED_CELLS $(EXPAND_UNNAMED_CELLS_DGNV8_1) # Ask if the cell insert points should be preserved -- this only matters # if cells are being expanded DEFAULT_MACRO _PRESERVE_INSERTS_DGNV8_1 NO GUI CHOICE _PRESERVE_INSERTS_DGNV8_1 YES%NO Preserve Named Cell Insert Points: DGNV8_1_PRESERVE_CELL_INSERTS $(_PRESERVE_INSERTS_DGNV8_1) # ============================================================================ # The following line controls whether or not tag elements are to be # output as text by the FME as it reads the source file. # DEFAULT_MACRO _TEXTTAGS_DGNV8_1 NO GUI CHOICE _TEXTTAGS_DGNV8_1 YES%NO Output Tags As Text: # Changed the default behavior to NO (PR#15786) DGNV8_1_TAGS_AS_TEXT $(_TEXTTAGS_DGNV8_1) # ============================================================================ # The following line controls whether or not complex elements are dropped # while we are reading # #We don't expose _SPLIT_COMPLEX_CHAINS anymore as it is now deprecated since the introduction #of rich geometry #Restored _SPLIT_COMPLEX_CHAINS as of May 10, 2009 DEFAULT_MACRO _DROP_COMPLEX_DGNV8_1 NO GUI CHOICE _DROP_COMPLEX_DGNV8_1 YES%NO Drop Complex Chains/Shape: # By default, we won't drop the complex chain DGNV8_1_SPLIT_COMPLEX_CHAINS $(_DROP_COMPLEX_DGNV8_1) # ============================================================================ # The following line controls whether or not complex chain element linkages # are propagated up to the header element from the members -- only applies # when we are NOT dropping complex elements # #We don't expose _PROPAGATE_CHAIN_ELEMENT_LINKAGES anymore as it is now deprecated since the introduction #of rich geometry #GUI CHOICE _PROPAGATE YES%NO Propagate Chain Member Linkages: # By default, we'll won't propagate the linkages #DEFAULT_MACRO _PROPAGATE NO #DEFAULT_MACRO _PROPAGATE #__ #DGNV8_PROPAGATE_CHAIN_ELEMENT_LINKAGES $(_PROPAGATE_DGNV8_1) # Should we split multi text DEFAULT_MACRO SPLIT_MULTITEXT_DGNV8_1 NO GUI CHOICE SPLIT_MULTITEXT_DGNV8_1 YES%NO Split multi text: #By default we split multi text DGNV8_1_SPLIT_MULTITEXT $(SPLIT_MULTITEXT_DGNV8_1) #By default we do not output unnamed cell insert points DEFAULT_MACRO PRESERVE_UNNAMEDCELL_INSERTS_DGNV8_1 NO GUI CHOICE PRESERVE_UNNAMEDCELL_INSERTS_DGNV8_1 YES%NO Preserve Unnamed Cell Insert Points: DGNV8_1_PRESERVE_UNNAMEDCELL_INSERTS $(PRESERVE_UNNAMEDCELL_INSERTS_DGNV8_1) #By default we explode dimension elements into its pieces DEFAULT_MACRO EXPLODE_DIMENSION_ELEM_DGNV8_1 NO GUI CHOICE EXPLODE_DIMENSION_ELEM_DGNV8_1 YES%NO Drop Dimensions: DGNV8_1_EXPLODE_DIMENSION_ELEM $(EXPLODE_DIMENSION_ELEM_DGNV8_1) #By default we don't read reference files DEFAULT_MACRO READ_XREF_FILES_DGNV8_1 NO GUI CHOICE READ_XREF_FILES_DGNV8_1 YES%NO Read Elements From Reference Files: DGNV8_1_READ_XREF_FILES $(READ_XREF_FILES_DGNV8_1) #By default we use xref's parent model when reading reference files DEFAULT_MACRO USE_XREF_PARENT_MODEL_DGNV8_1 NO GUI CHOICE USE_XREF_PARENT_MODEL_DGNV8_1 YES%NO Use Reference's Parent Model (V8 only): DGNV8_1_USE_XREF_PARENT_MODEL $(USE_XREF_PARENT_MODEL_DGNV8_1) #By default we read all the nested levels DEFAULT_MACRO READ_XREF_UPTO_FIRST_LVL_DGNV8_1 NO GUI CHOICE READ_XREF_UPTO_FIRST_LVL_DGNV8_1 YES%NO Read Reference Up To First Level: DGNV8_1_READ_XREF_UPTO_FIRST_LVL $(READ_XREF_UPTO_FIRST_LVL_DGNV8_1) #By default we read reference files as xref elements DEFAULT_MACRO READ_XREFS_AS_ELEMENTS_DGNV8_1 YES GUI CHOICE READ_XREFS_AS_ELEMENTS_DGNV8_1 YES%NO Read File References As Elements: DGNV8_1_READ_XREFS_AS_ELEMENTS $(READ_XREFS_AS_ELEMENTS_DGNV8_1) DEFAULT_MACRO READ_ELEMENT_TYPE_68_DGNV8_1 NO DGNV8_1_READ_ELEMENT_TYPE_68 $(READ_ELEMENT_TYPE_68_DGNV8_1) # ============================================================================ # Indicate if we are to use level names or level numbers as the feature type # This is something that is only set when a mapping file or workspace header # is originally generated. It should not be modified afterwards. DGNV8_1_USE_LEVEL_NAMES yes # ============================================================================ # PR#10117 - Indicate whether we want to apply world files (.wld) when reading in the features. DEFAULT_MACRO APPLY_WORLD_FILE_DGNV8_1 NO GUI CHOICE APPLY_WORLD_FILE_DGNV8_1 YES%NO Apply World File (.wld): DGNV8_1_APPLY_WORLD_FILE $(APPLY_WORLD_FILE_DGNV8_1) # ============================================================================ # PR#10553 - Set the boolean to yes if want to remove duplicate points. # Metafile default is NO but code default is YES for backwards compatibility DEFAULT_MACRO REMOVE_DUPLICATES_DGNV8_1 No GUI CHOICE REMOVE_DUPLICATES_DGNV8_1 Yes%No Remove duplicate points: DGNV8_1_REMOVE_DUPLICATES $(REMOVE_DUPLICATES_DGNV8_1) # PR:31021 # Include this file in workbench source preamble section to enable the ability # to specify a coordinate system for search envelope processing # =========================================================================== DEFAULT_MACRO SEARCH_ENVELOPE_COORDINATE_SYSTEM_DGNV8_1 GUI OPTIONAL COORDSYS SEARCH_ENVELOPE_COORDINATE_SYSTEM_DGNV8_1 Search Envelope Coordinate System: DGNV8_1_SEARCH_ENVELOPE_COORDINATE_SYSTEM "$(SEARCH_ENVELOPE_COORDINATE_SYSTEM_DGNV8_1)" # =========================================================================== DEFAULT_MACRO _UOR_SCALE_DGNV8_1 GUI OPTIONAL FLOAT _UOR_SCALE_DGNV8_1 UOR to FME Feature Coordinate Units scale factor: DGNV8_1_UOR_SCALE $(_UOR_SCALE_DGNV8_1) DEFAULT_MACRO _UORS_PER_SUB_DGNV8_1 GUI OPTIONAL FLOAT _UORS_PER_SUB_DGNV8_1 UORS PER SUB UNIT: DGNV8_1_UORS_PER_SUB $(_UORS_PER_SUB_DGNV8_1) DEFAULT_MACRO _SUBS_PER_MASTER_DGNV8_1 GUI OPTIONAL FLOAT _SUBS_PER_MASTER_DGNV8_1 SUBS PER MASTER UNIT: DGNV8_1_SUBS_PER_MASTER $(_SUBS_PER_MASTER_DGNV8_1) DEFAULT_MACRO _UOR_GLOBAL_ORIGIN_X_DGNV8_1 GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_X_DGNV8_1 UOR X Global Origin: DGNV8_1_UOR_GLOBAL_ORIGIN_X $(_UOR_GLOBAL_ORIGIN_X_DGNV8_1) DEFAULT_MACRO _UOR_GLOBAL_ORIGIN_Y_DGNV8_1 GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_Y_DGNV8_1 UOR Y Global Origin: DGNV8_1_UOR_GLOBAL_ORIGIN_Y $(_UOR_GLOBAL_ORIGIN_Y_DGNV8_1) DEFAULT_MACRO _UOR_GLOBAL_ORIGIN_Z_DGNV8_1 GUI OPTIONAL FLOAT _UOR_GLOBAL_ORIGIN_Z_DGNV8_1 UOR Z Global Origin: DGNV8_1_UOR_GLOBAL_ORIGIN_Z $(_UOR_GLOBAL_ORIGIN_Z_DGNV8_1) # Allow complex chains to be returned as single feature. If this is turned on, # special handling must be done with the feature returned because for each complex # chain encountered, an aggregate with several parts of potentially different # geometries may be returned. The Workbench cannot handle this currently, so a # custom mapping file would be required. # DEFAULT_MACRO _AGGREGATE_COMPLEX_CHAINS NO # GUI OPTIONAL CHOICE _AGGREGATE_COMPLEX_CHAINS YES%NO Handle Complex Chains as Single Elements: # DGNV8_AGGREGATE_COMPLEX_CHAINS $(_AGGREGATE_COMPLEX_CHAINS_DGNV8_1) # Should we preserve the curves? DEFAULT_MACRO _PRESERVE_CURVES_DGNV8_1 NO GUI OPTIONAL CHOICE _PRESERVE_CURVES_DGNV8_1 YES%NO Preserve curves: DGNV8_1_PRESERVE_CURVES $(_PRESERVE_CURVES_DGNV8_1) # Value of elevation shift factor DEFAULT_MACRO _ELEVATION_SHIFT_FACTOR_DGNV8_1 GUI OPTIONAL FLOAT _ELEVATION_SHIFT_FACTOR_DGNV8_1 Elevation Shift Factor: DGNV8_1_ELEVATION_SHIFT_FACTOR $(_ELEVATION_SHIFT_FACTOR_DGNV8_1) # Value of number of curve vertices DEFAULT_MACRO _CURVE_VERTICES_DGNV8_1 GUI OPTIONAL INTEGER _CURVE_VERTICES_DGNV8_1 Number of interpolated curve vertices: DGNV8_1_CURVE_VERTICES $(_CURVE_VERTICES_DGNV8_1) # Should we strip off tag information DEFAULT_MACRO _TRIM_DOWN_TAGS_DGNV8_1 NO GUI OPTIONAL CHOICE _TRIM_DOWN_TAGS_DGNV8_1 YES%NO Strip off Tag Information: DGNV8_1_TRIM_DOWN_TAGS $(_TRIM_DOWN_TAGS_DGNV8_1) DGNV8_1_DATASET "$(SourceDataset_DGNV8_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "SQLITE3FDO_1" #! END_WB_HEADER #! START_DEST_HEADER SQLITE3FDO SQLITE3FDO_1 # ===================================================================== # The following GUI line prompts for a directory to be used as the # the destination for the SQLite3 files. The user input is stored in # a macro, which is then used to define the dataset to be written. #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_SQLITE3FDO_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER SQLITE3FDO SQLITE3FDO_1 DEFAULT_MACRO DestDataset_SQLITE3FDO_1 $(DestDataset_SQLITE3FDO) GUI FILENAME DestDataset_SQLITE3FDO_1 SQLite3_Database_Files(*.sl3;*.db)|*.sl3;*.db|SQLite3_Database_Files(*.sl3)|*.sl3|SQLite3_Database_Files(*.db)|*.db|All_files(*.*)|*.* Destination SQLite3 Spatial (FDO) Database File: DEFAULT_MACRO _SQLITE3FDO_IdentityColumnName_SQLITE3FDO_1 PRIMARYINDEX DEFAULT_MACRO _SQLITE3FDO_GeometryColumnName_SQLITE3FDO_1 Geometry DEFAULT_MACRO _SQLITE3FDO_OverwriteTable_SQLITE3FDO_1 NO SQLITE3FDO_1_EXTENT_TYPE Static DEFAULT_MACRO SQLITE3FDO_OUT_OVERWRITE_FILE_SQLITE3FDO_1 Yes SQLITE3FDO_1_OVERWRITE_FILE "$(SQLITE3FDO_OUT_OVERWRITE_FILE_SQLITE3FDO_1)" GUI CHECKBOX SQLITE3FDO_OUT_OVERWRITE_FILE_SQLITE3FDO_1 Yes%No Overwrite File DEFAULT_MACRO _WRITER_MODE_SQLITE3FDO_1 INSERT GUI CHOICE _WRITER_MODE_SQLITE3FDO_1 INSERT%UPDATE%DELETE Writer Mode: SQLITE3FDO_1_WRITER_MODE $(_WRITER_MODE_SQLITE3FDO_1) SQLITE3FDO_1_DATASET "$(DestDataset_SQLITE3FDO_1)" #! END_DEST_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)DGNToSqlite.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_GEOMETRY_HANDLING Enhanced FME_STROKE_MAX_DEVIATION 0 LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_DGNV8_1 DGNV8_1 DEFAULT_MACRO DATASET_KEYWORD_SQLITE3FDO_1 SQLITE3FDO_1 # ------------------------------------------------------------------------- DGNV8_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME DGNToSqlite MACRO FME_VIEWER_APP fmeview # ------------------------------------------------------------------------- INCLUDE [ if {[info exists 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_CREATE_SPATIAL_INDEX YES # ------------------------------------------------------------------------- DGNV8_1_DEF Roads igds_level "" igds_level_comment "" igds_level_color "" igds_level_style "" igds_level_weight "" # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ Roads yes "" no # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Unexpected Input Remover" INPUT FEATURE_TYPE * TEST @Lookup(___KnownFeatureTypes___,@FeatureType()) == yes OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(DGNV8,FME_GENERIC,PRESERVE_GEOMETRY) DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "AttributePacker INPUT Input Collector" INPUT FEATURE_TYPE Roads OUTPUT FEATURE_TYPE AttributePacker_INPUT MACRO AttributePacker_WORKSPACE_NAME AttributePacker MACRO $(AttributePacker_WORKSPACE_NAME)_XFORMER_NAME AttributePacker MACRO $(AttributePacker_WORKSPACE_NAME)_TRANSFORMER_GROUP MACRO $(AttributePacker_WORKSPACE_NAME)___COMPOUND_PARAMETERS MACRO $(AttributePacker_WORKSPACE_NAME)_FILTER igds_ MACRO $(AttributePacker_WORKSPACE_NAME)_PACKED igds_packed INCLUDE TCL proc __FME_ExpandMacros {text {maxlevels 100}} { if { $maxlevels <= 0 } { return $text; } set pattern [join {{\$} {\([^()$]*\)}} {}] set indices [regexp -inline -all -indices $pattern $text] if [llength $indices] { foreach pair [lreverse $indices] { lassign $pair start end set replacement {} set replacement $::FME_MacroValues([string range $text [expr $start + 2] [expr $end - 1]]) set text [string replace $text $start $end $replacement] } return [__FME_ExpandMacros $text [expr $maxlevels - 1]] } return $text } proc __FME_ExpandEnvVars {text {maxlevels 100}} { if { $maxlevels <= 0 } { return $text; } set pattern [join {{\$} {\{[^\{\}$]*\}}} {}] set indices [regexp -inline -all -indices $pattern $text] if [llength $indices] { foreach pair [lreverse $indices] { lassign $pair start end set replacement {} set replacement $::env([string range $text [expr $start + 2] [expr $end - 1]]) set text [string replace $text $start $end $replacement] } return [__FME_ExpandEnvVars $text [expr $maxlevels - 1]] } return $text } proc __FME_EvalAndEncodeMacro {macroName} { set macroVal {} catch { set macroVal [__FME_ExpandMacros $::FME_MacroValues($macroName)] } catch { set macroVal [__FME_ExpandEnvVars $macroVal] } return [FME_EncodeText $macroVal] } END_INCLUDE INCLUDE [ puts "MACRO $(AttributePacker_WORKSPACE_NAME)_XFORMER_NAME__FMEENCODED__ [__FME_EvalAndEncodeMacro $(AttributePacker_WORKSPACE_NAME)_XFORMER_NAME]" ; ] INCLUDE [ puts "MACRO $(AttributePacker_WORKSPACE_NAME)_TRANSFORMER_GROUP__FMEENCODED__ [__FME_EvalAndEncodeMacro $(AttributePacker_WORKSPACE_NAME)_TRANSFORMER_GROUP]" ; ] INCLUDE [ puts "MACRO $(AttributePacker_WORKSPACE_NAME)___COMPOUND_PARAMETERS__FMEENCODED__ [__FME_EvalAndEncodeMacro $(AttributePacker_WORKSPACE_NAME)___COMPOUND_PARAMETERS]" ; ] INCLUDE [ puts "MACRO $(AttributePacker_WORKSPACE_NAME)_FILTER__FMEENCODED__ [__FME_EvalAndEncodeMacro $(AttributePacker_WORKSPACE_NAME)_FILTER]" ; ] INCLUDE [ puts "MACRO $(AttributePacker_WORKSPACE_NAME)_PACKED__FMEENCODED__ [__FME_EvalAndEncodeMacro $(AttributePacker_WORKSPACE_NAME)_PACKED]" ; ] INCLUDE_CUSTOM_TRANSFORMER AttributePacker FACTORY_DEF * TeeFactory FACTORY_NAME "AttributePacker OUTPUT Output Renamer/Nuker" INPUT FEATURE_TYPE AttributePacker_OUTPUT OUTPUT FEATURE_TYPE AttributePacker_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "AttributePacker_OUTPUT -> Roads Correlator" INPUT FEATURE_TYPE AttributePacker_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ @Transform(FME_GENERIC,SQLITE3FDO) @SupplyAttributes(__wb_out_feat_type__,Roads) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Final Output Feature Type Router" INPUT FEATURE_TYPE * TEST @Value(__wb_out_feat_type__) != "" OUTPUT PASSED FEATURE_TYPE * @FeatureType(@Value(__wb_out_feat_type__)) OUTPUT FAILED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 {@Value(fme_template_feature_type)} 818060 818061 fme_warn") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ # ------------------------------------------------------------------------- SQLITE3FDO_1_DEF Roads fdo_type fdo_line fdo_identity_column PRIMARYINDEX fdo_writer_mode INHERIT_FROM_WRITER fdo_geometry_column Geometry fdo_overwrite_table NO igds_packed blob