#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! GUI IGNORE SourceDataset_ACAD_1,_EXPAND_BLOCKS_ACAD_1,ACAD_IN_USE_BLOCK_HEADER_LAYER_ACAD_1,ACAD_IN_RESOLVE_ENTITY_COLOR_ACAD_1,_OUTPUT_BLOCKS_AT_START_ACAD_1,_PRESERVE_INSERTS_ACAD_1,_EXPAND_VISIBLE_ACAD_1,_STORE_BULGE_INFO_ACAD_1,_BULGES_AS_ARCS_ACAD_1,_READ_PAPER_SPACE_ACAD_1,ACAD_IN_READ_GROUPS_ACAD_1,_CONVERT_ZERO_LENGTH_ARCS_TO_POINTS_ACAD_1,_OUTPUT_ZERO_LENGTH_LINES_AS_LINES_ACAD_1,_IGNORE_UCS_ACAD_1,_ACADPreserveComplexHatches_ACAD_1,_STORE_SPLINE_DEFS_ACAD_1,_USE_DXF_HEADER_ACAD_1,_ACADResolveDimensions_ACAD_1,SourceDataset_CSV_1,_SKIP_LINES_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,CSV_IN_ENCODING_CSV_1,DestDataset_KML_1,KML_DOCUMENT_NAME_KML_1,KML_DOCUMENT_DESC_KML_1,KML_DOCUMENT_VISIBILITY_KML_1,KML_ATTR_IN_DESCRIPTION_KML_1,KML_HTML_DESCRIPTIONS_KML_1,KML_DETECT_RASTERS_KML_1 DEFAULT_MACRO SourceDataset_ACAD C:\FME Idol\Challenge 2\startSpots.dxf DEFAULT_MACRO SourceDataset_CSV C:\FME Idol\Challenge 2\traces.csv DEFAULT_MACRO DestDataset_KML C:\FME Idol\Challenge 2\myKML.kml INCLUDE [ if {{$(SourceDataset_ACAD)} == {}} { puts_real {Parameter SourceDataset_ACAD must be given a value on the commandline.}; exit 1; }; ] INCLUDE [ if {{$(SourceDataset_CSV)} == {}} { puts_real {Parameter SourceDataset_CSV must be given a value on the commandline.}; exit 1; }; ] INCLUDE [ if {{$(DestDataset_KML)} == {}} { puts_real {Parameter DestDataset_KML must be given a value on the commandline.}; exit 1; }; ] #! START_HEADER #! WORKSPACE_VERSION 1 # ============================================================================ # # This mapping file was generated by FME Workbench # on 09/21/06 16:31:39 for translation between ACAD and KML # # This workspace was generated with FME build 4139 # # You may edit this mapping file to customize its operation. Comments are # placed throughout to assist you. # # Modification History: # # Name Date Description # ================= ======== ============================================= # # # ============================================================================ # ============================================================================ # The following line defines the title presented to the user when this # mapping file is run through the FME GUI. You may modify this # if a more meaningful title would be appropriate. GUI TITLE ACAD to KML Translation # ============================================================================ # The following line names the log file to which useful statistics about # the translation will be written. This line can be uncommented and # updated if you do wish to keep these statistics. # LOG_FILENAME translation.log # LOG_APPEND NO # ============================================================================ # The following line instructs the FME to log any features that do not # match any of the source feature patterns listed further down in # this file. If you are modifying this mapping file, this will be # useful to describe to you exactly which features you are losing # during translation, if the statistics indicate that features are # not being correlated or grouped. Uncorrelated features do not # match any source specification, ungrouped features do not have # any corresponding _DEF line. # FME_DEBUG UNGROUPED UNCORRELATED # ============================================================================ # The following two lines define the type of reader and writer to be # used for this translation. If you want to translate your data # back into its original format, you may make a copy of this file # and switch the reader and writer types. If you rerun the FME, you # will get your original data back again (together with any modifications # you made in the meantime). Note that several formats are NOT # bi-directional (for example, GIF can only be used as a WRITER) # so a reverse translation may not always be possible. #! START_WB_HEADER READER_TYPE MULTI_READER MULTI_READER_TYPE{0} ACAD MULTI_READER_KEYWORD{0} ACAD_1 MULTI_READER_TYPE{1} CSV MULTI_READER_KEYWORD{1} CSV_1 WRITER_TYPE KML WRITER_KEYWORD KML_1 #! END_WB_HEADER #! START_WB_HEADER FACTORY_DEF * BranchingFactory \ FACTORY_NAME "Source Feature Router" \ INPUT FEATURE_TYPE * \ TARGET_FACTORY @Concatenate("Source Catcher ", &multi_reader_id) \ FALLBACK_TARGET_FACTORY "Branching Catcher" #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "ACAD_1" FACTORY_DEF * TeeFactory \ FACTORY_NAME "Source Catcher 0" \ INPUT FEATURE_TYPE * \ OUTPUT FEATURE_TYPE * #! END_WB_HEADER #! START_SOURCE_HEADER ACAD ACAD_1 # ============================================================================ # The following GUI line prompts for a file to be used as the # source of the DWG/DXF translation. # 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: GUI FILENAME SourceDataset_ACAD_1 DWG_Files(*.dwg)/DXF_Files(*.dxf)|*.dwg;*.dxf|DWG_Files(*.dwg)|*.dwg|DXF_Files(*.dxf)|*.dxf|All_Files|*.* ORIGINAL AutoCAD File: # ============================================================================ # And indicate whether or not we are to expand the blocks. DEFAULT_MACRO _EXPAND_BLOCKS_ACAD_1 yes GUI CHOICE _EXPAND_BLOCKS_ACAD_1 yes%no Explode Blocks: # By default, we'll just expand the blocks ACAD_1_RESOLVE_BLOCKS $(_EXPAND_BLOCKS_ACAD_1) # ============================================================================ # PR#9808 - Indicate whether we want to keep the block header layer for the # components when blocks are exploded or place components on their original layers. DEFAULT_MACRO ACAD_IN_USE_BLOCK_HEADER_LAYER_ACAD_1 yes GUI CHOICE ACAD_IN_USE_BLOCK_HEADER_LAYER_ACAD_1 yes%no Use Block Header Layer For Components: # By default, we'll just place the expanded components on the same layer as the block # was placed. This is how we used to do for all these years until July 2006. ACAD_1_USE_BLOCK_HEADER_LAYER $(ACAD_IN_USE_BLOCK_HEADER_LAYER_ACAD_1) # ============================================================================ # PR#9808 - Indicate whether we want to resolve entities color or keep it as ByLayer. DEFAULT_MACRO ACAD_IN_RESOLVE_ENTITY_COLOR_ACAD_1 yes GUI CHOICE ACAD_IN_RESOLVE_ENTITY_COLOR_ACAD_1 yes%no Resolve Entity Color: # By default, we'll resolve entity color because that's how we have been doing # it all along. So to maintain backwards compatibility we'll keep that as default. ACAD_1_RESOLVE_ENTITY_COLOR $(ACAD_IN_RESOLVE_ENTITY_COLOR_ACAD_1) # ============================================================================ DEFAULT_MACRO _OUTPUT_BLOCKS_AT_START_ACAD_1 no GUI CHOICE _OUTPUT_BLOCKS_AT_START_ACAD_1 yes%no Output Blocks at start: ACAD_1_OUTPUT_BLOCKS_AT_START $(_OUTPUT_BLOCKS_AT_START_ACAD_1) # ============================================================================ # 20040204 # Decide if we should handle the user coordinate system (ucs) DEFAULT_MACRO _PRESERVE_INSERTS_ACAD_1 no GUI CHOICE _PRESERVE_INSERTS_ACAD_1 yes%no Preserve insert POINTS: ACAD_1_PRESERVE_INSERTS $(_PRESERVE_INSERTS_ACAD_1) # ============================================================================ # As well, see if we should turn visible attributes into text # entities so they will be visible in the output system DEFAULT_MACRO _EXPAND_VISIBLE_ACAD_1 yes GUI CHOICE _EXPAND_VISIBLE_ACAD_1 yes%no Turn Visible Attributes Into Text: ACAD_1_VISIBLE_ATTRIBUTES_AS_TEXT $(_EXPAND_VISIBLE_ACAD_1) # ============================================================================ # Decide how we should handle bulges DEFAULT_MACRO _STORE_BULGE_INFO_ACAD_1 no GUI CHOICE _STORE_BULGE_INFO_ACAD_1 yes%no Store bulge info: ACAD_1_STORE_BULGE_INFO $(_STORE_BULGE_INFO_ACAD_1) DEFAULT_MACRO _BULGES_AS_ARCS_ACAD_1 no GUI CHOICE _BULGES_AS_ARCS_ACAD_1 yes%no Separate Bulges Into Arcs: ACAD_1_SPLIT_BULGE_ARCS $(_BULGES_AS_ARCS_ACAD_1) # ============================================================================ # Now define a TestFactory which deletes any Insert entities # which do not have any attributes following. If you want to get # rid of these points for any reason then, remove the comments # #FACTORY_DEF * TestFactory # INPUT FEATURE_TYPE * autocad_entity autocad_insert # TEST &autocad_attributes_follow = false # OUTPUT FAILED FEATURE_TYPE * # # ============================================================================ # And indicate whether or not we will read the paper space. DEFAULT_MACRO _READ_PAPER_SPACE_ACAD_1 no GUI CHOICE _READ_PAPER_SPACE_ACAD_1 yes%no Read Paper Space: ACAD_1_READ_PAPER_SPACE $(_READ_PAPER_SPACE_ACAD_1) # ============================================================================ # And indicate whether or not to read groups. DEFAULT_MACRO ACAD_IN_READ_GROUPS_ACAD_1 no GUI CHOICE ACAD_IN_READ_GROUPS_ACAD_1 yes%no Read Groups: ACAD_1_READ_GROUPS $(ACAD_IN_READ_GROUPS_ACAD_1) DEFAULT_MACRO WB_KEYWORD_ACAD_1 "DWG" FACTORY_DEF * TeeFactory \ FACTORY_NAME $(WB_KEYWORD)"RenameAutocadExtendedAttrs" \ INPUT FEATURE_TYPE * \ OUTPUT FEATURE_TYPE * \ @CopyAttributes(autocad_extended_data_list{},extended_data_list{}) \ @CopyAttributes(autocad_extended_data{},extended_data{}) \ @RemoveAttributes(fme_regexp_match,^extended_data) # ============================================================================ # Decide how we should handle zero length arcs DEFAULT_MACRO _CONVERT_ZERO_LENGTH_ARCS_TO_POINTS_ACAD_1 yes GUI CHOICE _CONVERT_ZERO_LENGTH_ARCS_TO_POINTS_ACAD_1 yes%no Convert zero length arcs to points: # By default, we'll convert any zero length arcs we encounter to points ACAD_1_CONVERT_ZERO_LENGTH_ARCS_TO_POINTS $(_CONVERT_ZERO_LENGTH_ARCS_TO_POINTS_ACAD_1) # ============================================================================ # Decide how we should handle zero length lines DEFAULT_MACRO _OUTPUT_ZERO_LENGTH_LINES_AS_LINES_ACAD_1 no GUI CHOICE _OUTPUT_ZERO_LENGTH_LINES_AS_LINES_ACAD_1 yes%no Output zero length lines as lines: # By default, we'll convert any zero length lines we encounter to points ACAD_1_OUTPUT_ZERO_LENGTH_LINES_AS_LINES $(_OUTPUT_ZERO_LENGTH_LINES_AS_LINES_ACAD_1) # ============================================================================ # 20040114 # Decide if we should handle the user coordinate system (ucs) DEFAULT_MACRO _IGNORE_UCS_ACAD_1 no GUI CHOICE _IGNORE_UCS_ACAD_1 yes%no Ignore User Coordinate System (UCS): ACAD_1_IGNORE_UCS $(_IGNORE_UCS_ACAD_1) DEFAULT_MACRO _USE_DXF_HEADER_ACAD_1 ACAD_1_USE_DXF_HEADER "$(_USE_DXF_HEADER_ACAD_1)" DEFAULT_MACRO _ACADPreserveComplexHatches_ACAD_1 no GUI CHOICE _ACADPreserveComplexHatches_ACAD_1 yes%no Preserve Complex Hatches: ACAD_1_PRESERVE_COMPLEX_HATCHES $(_ACADPreserveComplexHatches_ACAD_1) # ============================================================================ # Bring in macros for all the autocad colors INCLUDE "$(FME_HOME)/metafile/autocadColors.fmi" # ============================================================================ # Decide how we should handle splines DEFAULT_MACRO _STORE_SPLINE_DEFS_ACAD_1 yes GUI OPTIONAL CHOICE _STORE_SPLINE_DEFS_ACAD_1 yes%no Store spline definitons: ACAD_1_STORE_SPLINE_DEFS $(_STORE_SPLINE_DEFS_ACAD_1) GUI OPTIONAL FILENAME _USE_DXF_HEADER_ACAD_1 DXF_Files(*.dxf)|*.dxf|All_files(*.*)|*.* Use DXF header: DEFAULT_MACRO _ACADResolveDimensions_ACAD_1 yes GUI CHOICE _ACADResolveDimensions_ACAD_1 yes%no Resolve Dimensions: ACAD_1_RESOLVE_DIMENSIONS $(_ACADResolveDimensions_ACAD_1) #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {"$(SourceDataset)" != ""} { \ puts {DEFAULT_MACRO SourceDataset_ACAD_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER ACAD ACAD_1 DEFAULT_MACRO SourceDataset_ACAD_1 $(SourceDataset_ACAD) ACAD_1_DATASET "$(SourceDataset_ACAD_1)" #! END_SOURCE_HEADER #! START_WB_HEADER FACTORY_DEF * BranchingFactory \ FACTORY_NAME "Source Brancher 0" \ INPUT FEATURE_TYPE * \ @SupplyAttributes(multi_reader_type,ACAD) \ TARGET_FACTORY "Branching Catcher" #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "CSV_1" FACTORY_DEF * TeeFactory \ FACTORY_NAME "Source Catcher 1" \ INPUT FEATURE_TYPE * \ OUTPUT FEATURE_TYPE * #! END_WB_HEADER #! START_SOURCE_HEADER CSV CSV_1 # ============================================================================ # The following GUI line prompts for a directory to be used as the # source of the CSV files. # 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: GUI FILENAME SourceDataset_CSV_1 CSV/Compressed_CSV_Files(*.csv;*.gz)|*.csv;*.gz|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|All_Files(*.*)|*.* Source CSV File(s): # ============================================================================ # Hardcode the settings that were used to generate this mapping file # DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 yes DEFAULT_MACRO _EXTENSION_CSV_1 CSV DEFAULT_MACRO _SKIP_LINES_CSV_1 1 CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) CSV_1_SEPARATOR (",") CSV_1_EXTENSION CSV DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) CSV_1_SEQUENCED no GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: # GUI CHOICE _IN_FIELD_NAMES yes%no Field Names on First Line: GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: # GUI TEXT _IN_SEPARATOR Field Delimiter: # GUI TEXT _EXTENSION Default File Extension: GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: # ===================================================================== # Allows to set one of the character encodings for output file DEFAULT_MACRO CSV_IN_ENCODING_CSV_1 GUI OPTIONAL STRING_OR_CHOICE CSV_IN_ENCODING_CSV_1 UTF-8%UTF-16LE%UTF-16BE%ANSI%BIG5%SJIS%CP437%CP708%CP720%CP737%CP775%CP850%CP852%CP855%CP857%CP860%CP861%CP862%CP863%CP864%CP865%CP866%CP869%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%ISO8859-13%ISO8859-15 Character Encoding: CSV_1_ENCODING $(CSV_IN_ENCODING_CSV_1) #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {"$(SourceDataset)" != ""} { \ puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER CSV CSV_1 DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset_CSV) CSV_1_DATASET "$(SourceDataset_CSV_1)" #! END_SOURCE_HEADER #! START_WB_HEADER FACTORY_DEF * BranchingFactory \ FACTORY_NAME "Source Brancher 1" \ INPUT FEATURE_TYPE * \ @SupplyAttributes(multi_reader_type,CSV) \ TARGET_FACTORY "Branching Catcher" #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "KML_1" #! END_WB_HEADER #! START_DEST_HEADER KML KML_1 #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_KML_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER KML KML_1 DEFAULT_MACRO DestDataset_KML_1 $(DestDataset_KML) GUI FILENAME DestDataset_KML_1 KML_Files(*.kml)|*.kml|All_Files(*.*)|*.* Destination KML Dataset: DEFAULT_MACRO KML_DOCUMENT_NAME_KML_1 GUI OPTIONAL TEXT KML_DOCUMENT_NAME_KML_1 Document name: KML_1_DOCUMENT_NAME "$(KML_DOCUMENT_NAME_KML_1)" DEFAULT_MACRO KML_DOCUMENT_DESC_KML_1 GUI OPTIONAL TEXT KML_DOCUMENT_DESC_KML_1 Document description: KML_1_DOCUMENT_DESC "$(KML_DOCUMENT_DESC_KML_1)" DEFAULT_MACRO KML_DOCUMENT_VISIBILITY_KML_1 yes GUI OPTIONAL CHOICE KML_DOCUMENT_VISIBILITY_KML_1 yes%no Document visible on load: KML_1_DOCUMENT_VISIBILITY "$(KML_DOCUMENT_VISIBILITY_KML_1)" DEFAULT_MACRO KML_ATTR_IN_DESCRIPTION_KML_1 yes GUI OPTIONAL CHOICE KML_ATTR_IN_DESCRIPTION_KML_1 yes%no Attribute tables in description field: KML_1_ATTR_IN_DESCRIPTION "$(KML_ATTR_IN_DESCRIPTION_KML_1)" DEFAULT_MACRO KML_HTML_DESCRIPTIONS_KML_1 yes GUI OPTIONAL CHOICE KML_HTML_DESCRIPTIONS_KML_1 yes%no Use HTML description fields: KML_1_HTML_DESCRIPTIONS "$(KML_HTML_DESCRIPTIONS_KML_1)" DEFAULT_MACRO KML_DETECT_RASTERS_KML_1 yes GUI OPTIONAL CHOICE KML_DETECT_RASTERS_KML_1 yes%no Automatically detect raster features: KML_1_DETECT_RASTERS "$(KML_DETECT_RASTERS_KML_1)" KML_1_OUTPUT_SCHEMA yes KML_1_DATASET "$(DestDataset_KML_1)" #! END_DEST_HEADER #! START_WB_HEADER FACTORY_DEF * TeeFactory \ FACTORY_NAME "Branching Catcher" \ INPUT FEATURE_TYPE * \ OUTPUT FEATURE_TYPE * #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)Solution2.log" LOG_APPEND NO LOG_TIMINGS YES DEFAULT_MACRO DATASET_KEYWORD_ACAD_1 ACAD_1 DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 DEFAULT_MACRO DATASET_KEYWORD_KML_1 KML_1 # ------------------------------------------------------------------------- ACAD_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- CSV_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- KML_1_COORDINATE_SYSTEM LL84 MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME Solution2 # ------------------------------------------------------------------------- ACAD_1_DEF 0 autocad_color 10 autocad_linetype CONTINUOUS # ------------------------------------------------------------------------- CSV_1_DEF traces trace_id char(37) sequence_num number(4,0) x number(22,19) y number(22,19) # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ $(DATASET_KEYWORD_ACAD_1)_0 yes $(DATASET_KEYWORD_CSV_1)_traces yes "" no Tcl2 proc ACAD_1_Merger { } { global FME_FeatureType; set lowerFeatureType [string tolower $FME_FeatureType]; switch -glob -- $lowerFeatureType { {*} { set FME_FeatureType {0} } }; } FACTORY_DEF * TestFactory FACTORY_NAME "ACAD_1 Merger" INPUT FEATURE_TYPE * multi_reader_keyword $(DATASET_KEYWORD_ACAD_1) TEST @Lookup(___KnownFeatureTypes___,@Concatenate(&multi_reader_keyword,"_",@FeatureType())) == yes OUTPUT PASSED FEATURE_TYPE * OUTPUT FAILED FEATURE_TYPE * @Tcl2("ACAD_1_Merger") # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Unexpected Input Remover" INPUT FEATURE_TYPE * TEST @Lookup(___KnownFeatureTypes___,@Concatenate(&multi_reader_keyword,"_",@FeatureType())) == yes OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(&multi_reader_type,FME_GENERIC,ALIAS_GEOMETRY) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME COORDINATEFETCHER INPUT FEATURE_TYPE 0 TEST @Dimension() == 2 OUTPUT PASSED FEATURE_TYPE COORDINATEFETCHER_OUTPUT _x @Coordinate(x,0,FLATTEN_AGGREGATE) _y @Coordinate(y,0,FLATTEN_AGGREGATE) @SupplyAttributes(_z,-9999) OUTPUT FAILED FEATURE_TYPE COORDINATEFETCHER_OUTPUT _x @Coordinate(x,0,FLATTEN_AGGREGATE) _y @Coordinate(y,0,FLATTEN_AGGREGATE) _z @Coordinate(z,0,FLATTEN_AGGREGATE) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME 2DPOINTREPLACER INPUT FEATURE_TYPE traces TEST &fme_type = fme_text OUTPUT PASSED FEATURE_TYPE 2DPOINTREPLACER_POINT @XValue("@Value(x)",RESET) @YValue("@Value(y)") @Dimension(2) OUTPUT FAILED FEATURE_TYPE 2DPOINTREPLACER_POINT @XValue("@Value(x)",RESET) @YValue("@Value(y)") @Dimension(2) @GeometryType(fme_point) @SupplyAttributes(fme_type,fme_point) # ------------------------------------------------------------------------- FACTORY_DEF * SortFactory FACTORY_NAME SORTER INPUT FEATURE_TYPE 2DPOINTREPLACER_POINT SORT_BY trace_id ALPHA ASCENDING sequence_num NUMERIC ASCENDING OUTPUT SORTED FEATURE_TYPE SORTER_SORTED # ------------------------------------------------------------------------- FACTORY_DEF * ConnectionFactory FACTORY_NAME POINTCONNECTOR INPUT FEATURE_TYPE SORTER_SORTED BREAK_BEFORE_FIELD_CHANGE trace_id FEATURE_CONNECTION ORDERED OUTPUT POLYGON FEATURE_TYPE POINTCONNECTOR_POLYGON fme_type fme_area # ------------------------------------------------------------------------- FACTORY_DEF * ReferenceFactory FACTORY_NAME FEATUREMERGER INPUT REFERENCER FEATURE_TYPE POINTCONNECTOR_POLYGON INPUT REFERENCEE FEATURE_TYPE COORDINATEFETCHER_OUTPUT REFERENCE_INFO ATTRIBUTES REFERENCEE_FIELDS "autocad_layer" REFERENCER_FIELDS "trace_id" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes HANDLE_ARCS_ELLIPSES_AND_TEXT Yes PROCESS_DUPLICATE_REFERENCEES No BUILD_INCOMPLETE_REFERENCERS No OUTPUT COMPLETE FEATURE_TYPE FEATUREMERGER_COMPLETE # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME OFFSETTER INPUT FEATURE_TYPE FEATUREMERGER_COMPLETE OUTPUT FEATURE_TYPE OFFSETTER_OFFSET @Offset(@Value(_x),@Value(_y),0) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME GEOMETRYCOERCER INPUT FEATURE_TYPE OFFSETTER_OFFSET TEST @GeometryType() == fme_donut TEST @GeometryType() == fme_aggregate TEST @GeometryType() == fme_undefined BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE ___TO_FIX___ OUTPUT FAILED FEATURE_TYPE ___TO_FIX___ @GeometryType(fme_line) @SupplyAttributes(fme_type,@GeometryType()) FACTORY_DEF * TeeFactory FACTORY_NAME GEOMETRYCOERCER_AreaFixer INPUT FEATURE_TYPE ___TO_FIX___ fme_type fme_polygon OUTPUT FEATURE_TYPE GEOMETRYCOERCER_COERCED fme_type fme_area FACTORY_DEF * TeeFactory FACTORY_NAME GEOMETRYCOERCER_Renamer INPUT FEATURE_TYPE ___TO_FIX___ OUTPUT FEATURE_TYPE GEOMETRYCOERCER_COERCED # ------------------------------------------------------------------------- FACTORY_DEF * PolygonFactory FACTORY_NAME AREABUILDER_polygonizer INPUT FEATURE_TYPE GEOMETRYCOERCER_COERCED END_NODED OUTPUT POLYGON FEATURE_TYPE ___POLY___ fme_type fme_area INCLUDE [if { ("drop_holes" == "yes") || ("drop_holes" == "drop_holes") } { puts "MACRO DONUT_FACTORY_IN *"; puts "MACRO TEE_FACTORY_IN NOT_THIS_TIME"; } else { puts "MACRO DONUT_FACTORY_IN NOT_THIS_TIME"; puts "MACRO TEE_FACTORY_IN *"; } ] INCLUDE [if { ("drop_holes" == "drop_holes") } { puts "MACRO DROP_HOLES yes"; } else { puts "MACRO DROP_HOLES no"; } ] FACTORY_DEF $(DONUT_FACTORY_IN) DonutFactory FACTORY_NAME AREABUILDER_donutizer INPUT FEATURE_TYPE ___POLY___ DROP_HOLES $(DROP_HOLES) TAG_HOLES no OUTPUT DONUT FEATURE_TYPE AREABUILDER_AREA @RemoveAttributes(tagged_hole) OUTPUT POLYGON FEATURE_TYPE AREABUILDER_AREA @RemoveAttributes(tagged_hole) FACTORY_DEF $(TEE_FACTORY_IN) TeeFactory FACTORY_NAME AREABUILDER_router INPUT FEATURE_TYPE ___POLY___ OUTPUT FEATURE_TYPE AREABUILDER_AREA # ------------------------------------------------------------------------- Tcl2 proc RANDOMCOLORSETTER_randomcolour {} { set type {Both (Offset)}; set red [expr (rand() * 0.80) + 0.2]; set green [expr (rand() * 0.80) + 0.2]; set blue [expr (rand() * 0.80) + 0.2]; set ored [expr $red - 0.2]; set ogreen [expr $green - 0.2]; set oblue [expr $blue - 0.2]; if {$type == {Outline} || $type == {Both (Exact)}} {FME_SetAttribute fme_color "$red,$green,$blue"}; if {$type == {Both (Offset)}} {FME_SetAttribute fme_color "$ored,$ogreen,$oblue"}; if {$type != {Outline}} {FME_SetAttribute fme_fill_color "$red,$green,$blue"}; }; FACTORY_DEF * TeeFactory FACTORY_NAME RANDOMCOLORSETTER INPUT FEATURE_TYPE AREABUILDER_AREA OUTPUT FEATURE_TYPE RANDOMCOLORSETTER_OUTPUT @RemoveAttributes(igds_color,igds_color.red,igds_color.blue,igds_color.green,igds_symbology,mif_pen_color,mapinfo_pen_color,mapinfo_text_fontfgcolor,grd_pen_color,autocad_color,cgdef_color.red,cgdef_color.blue,cgdef_color.green) @RemoveAttributes(igds_fill_color,mapinfo_brush_foreground,mif_brush_foreground,grd_brush_color) @Tcl2("RANDOMCOLORSETTER_randomcolour") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME 3DFORCER INPUT FEATURE_TYPE RANDOMCOLORSETTER_OUTPUT OUTPUT FEATURE_TYPE 3DFORCER_OUTPUT @ZValue(1) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "3DFORCER_OUTPUT -> FME_Rocks Correlator" INPUT FEATURE_TYPE 3DFORCER_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ @Reproject("LL84","LL84") @Transform(FME_GENERIC,KML) __wb_out_feat_type__ FME_Rocks # ------------------------------------------------------------------------- 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__)) # ------------------------------------------------------------------------- KML_1_DEF FME_Rocks KML_INFORMATION_POINT_ICON "" KML_OPACITY "" KML_ICON_COLOR "" KML_FILL_COLOR "" KML_PEN_COLOR "" KML_SORT_BY_ATTRIBUTE "" KML_FILL_OPACITY "" KML_PEN_OPACITY ""