#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! GUI IGNORE GPS_WAY_VIS_IGC_1,GPS_WALL_VIS_IGC_1,GPS_APTH_VIS_IGC_1,BARO_WAY_VIS_IGC_1,BARO_WALL_VIS_IGC_1,BARO_PATH_VIS_IGC_1,SourceDataset_IGC_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_IGC $(FME_MF_DIR)Flightdata\flight_demo_switzerland.igc DEFAULT_MACRO DestDataset_KML $(FME_MF_DIR)Flightdata\flight_demo_japan.kmz DEFAULT_MACRO GPS_WALL_VIS 1 DEFAULT_MACRO GPS_APTH_VIS 0 DEFAULT_MACRO BARO_WALL_VIS 1 DEFAULT_MACRO BARO_PATH_VIS 0 INCLUDE [ if {{$(SourceDataset_IGC)} == {}} { puts_real {Parameter SourceDataset_IGC 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 FME_MINIMUM_BUILD 2651 ##################################################### # IGC_CF_2_KML read IGC GPS Track data using Custom Format # # Author: Michael Habarta # Date: Sep 06 # ##################################################### #! START_WB_HEADER READER_TYPE IGC READER_KEYWORD IGC_1 WRITER_TYPE MULTI_WRITER MULTI_WRITER_DATASET_ORDER BY_ID MULTI_WRITER_FIRST_WRITER_ID 0 MULTI_WRITER_TYPE{0} MULTI_WRITER MULTI_WRITER_KEYWORD{0} KML_1_FANOUT KML_1_FANOUT_TYPE{*} KML KML_1_FANOUT_KEYWORD{*} KML_1 KML_1_FANOUT_ID_ATTRIBUTE file KML_1_FANOUT_DATASET_ORDER BY_INPUT KML_1_DATASET{*} "C:\Documents and Settings\habarta\My Documents\My FME Workspaces\KML_3D\IGC\Flightdata\/\.kmz" MULTI_WRITER_TYPE{1} FDS MULTI_WRITER_KEYWORD{1} FDS_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "IGC_1" #! END_WB_HEADER #! START_SOURCE_HEADER IGC IGC_1 DEFAULT_MACRO GPS_WAY_VIS_IGC_1 1 GUI OPTIONAL TEXT GPS_WAY_VIS_IGC_1 GPS Waypoint Visibility: IGC_1_GPS_WAY_VIS $(GPS_WAY_VIS_IGC_1) DEFAULT_MACRO GPS_WALL_VIS_IGC_1 1 GUI OPTIONAL TEXT GPS_WALL_VIS_IGC_1 GPS Wall Visibility: IGC_1_GPS_WALL_VIS $(GPS_WALL_VIS_IGC_1) DEFAULT_MACRO GPS_APTH_VIS_IGC_1 0 GUI OPTIONAL TEXT GPS_APTH_VIS_IGC_1 GPS Path Visibility: IGC_1_GPS_APTH_VIS $(GPS_APTH_VIS_IGC_1) DEFAULT_MACRO BARO_WAY_VIS_IGC_1 1 GUI OPTIONAL TEXT BARO_WAY_VIS_IGC_1 Barometric Waypoint Visibility: IGC_1_BARO_WAY_VIS $(BARO_WAY_VIS_IGC_1) DEFAULT_MACRO BARO_WALL_VIS_IGC_1 1 GUI OPTIONAL TEXT BARO_WALL_VIS_IGC_1 Barometric Wall Visibility: IGC_1_BARO_WALL_VIS $(BARO_WALL_VIS_IGC_1) DEFAULT_MACRO BARO_PATH_VIS_IGC_1 0 GUI OPTIONAL TEXT BARO_PATH_VIS_IGC_1 Barometric Path Visibility: IGC_1_BARO_PATH_VIS $(BARO_PATH_VIS_IGC_1) #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {"$(SourceDataset)" != ""} { \ puts {DEFAULT_MACRO SourceDataset_IGC_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER IGC IGC_1 DEFAULT_MACRO SourceDataset_IGC_1 $(SourceDataset_IGC) GUI MULTIFILE SourceDataset_IGC_1 IGC_GPS_Track_files(*.igc)|*.igc|All_files(*.*)|*.* IGC File(s): IGC_1_DATASET "$(SourceDataset_IGC_1)" IGC_1_SourceDataset_IGC "$(SourceDataset_IGC_1)" #! END_SOURCE_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 IGC Data visualized by FME 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 no KML_1_DATASET "$(DestDataset_KML_1)" #! END_DEST_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "FDS_1" #! END_WB_HEADER #! START_DEST_HEADER FDS FDS_1 # ============================================================================ # Just fake out a macro, its not used #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_FDS_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER FDS FDS_1 DEFAULT_MACRO DestDataset_FDS_1 NULL FDS_1_DATASET "$(DestDataset_FDS_1)" #! END_DEST_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)IGC_CF_2_KML.log" LOG_APPEND NO DEFAULT_MACRO DATASET_KEYWORD_IGC_1 IGC_1 DEFAULT_MACRO DATASET_KEYWORD_KML_1 KML_1 DEFAULT_MACRO DATASET_KEYWORD_FDS_1 FDS_1 # ------------------------------------------------------------------------- IGC_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- KML_1_COORDINATE_SYSTEM LL84 FDS_1_COORDINATE_SYSTEM LL84 MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME IGC_CF_2_KML # ------------------------------------------------------------------------- IGC_1_DEF waypoints_barometric fme_type fme_point time char(20) longitude char(20) latitude char(20) altitude_gps char(20) altitude_baro char(20) line char(20) text_line_number char(20) file char(255) head_001 char(255) head_002 char(255) head_003 char(255) head_004 char(255) head_005 char(255) head_006 char(255) head_007 char(255) head_008 char(255) head_009 char(255) head_010 char(255) head_011 char(255) head_012 char(255) head_013 char(255) head_014 char(255) head_015 char(255) head_016 char(255) head_017 char(255) head_018 char(255) head_019 char(255) head_020 char(255) head_021 char(255) head_022 char(255) head_023 char(255) head_024 char(255) head_025 char(255) head_026 char(255) head_027 char(255) head_028 char(255) head_029 char(255) head_030 char(255) # ------------------------------------------------------------------------- IGC_1_DEF path_GPS fme_type fme_line # ------------------------------------------------------------------------- IGC_1_DEF waypoints_GPS fme_type fme_point time char(20) longitude char(20) latitude char(20) altitude_gps char(20) altitude_baro char(20) line char(20) text_line_number char(20) file char(255) head_001 char(255) head_002 char(255) head_003 char(255) head_004 char(255) head_005 char(255) head_006 char(255) head_007 char(255) head_008 char(255) head_009 char(255) head_010 char(255) head_011 char(255) head_012 char(255) head_013 char(255) head_014 char(255) head_015 char(255) head_016 char(255) head_017 char(255) head_018 char(255) head_019 char(255) head_020 char(255) head_021 char(255) head_022 char(255) head_023 char(255) head_024 char(255) head_025 char(255) head_026 char(255) head_027 char(255) head_028 char(255) head_029 char(255) head_030 char(255) # ------------------------------------------------------------------------- IGC_1_DEF path_barometric fme_type fme_line # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ waypoints_barometric yes path_GPS yes waypoints_GPS yes path_barometric 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(IGC,FME_GENERIC,ALIAS_GEOMETRY) # ------------------------------------------------------------------------- # Expose all attributes. This ensures that if you expose fme_dataset, you will get it. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTEEXPOSER_2 INPUT FEATURE_TYPE path_barometric OUTPUT FEATURE_TYPE ATTRIBUTEEXPOSER_2_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "KML_STYLER_PATH_BARO INPUT Input Collector" INPUT FEATURE_TYPE ATTRIBUTEEXPOSER_2_OUTPUT OUTPUT FEATURE_TYPE KML_STYLER_PATH_BARO_INPUT MACRO KML_STYLER_PATH_WORKSPACE_NAME KML_STYLER_PATH_BARO MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_XFORMER_NAME KML_STYLER_PATH_BARO MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLOR 0.992156862745098,0.32156862745098,0 MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLORMODE normal MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_OPACITY 0.5 MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_WIDTH 2 MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_SUB_DOC_NAME KML_STYLER_PATH DEFAULT_MACRO KML_STYLER_PATH_WORKSPACE_NAME "" FACTORY_DEF * TeeFactory FACTORY_NAME "$(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT Input Splitter" INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT # ------------------------------------------------------------------------- # Expose all attributes. This ensures that if you expose fme_dataset, you will get it. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename FACTORY_DEF * TeeFactory FACTORY_NAME $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTEEXPOSER INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTEEXPOSER_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTEEXPOSER_OUTPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER_STYLED kml_common_style $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER kml_icon "" kml_icon_color "" kml_icon_opacity "" kml_IconStyle.colorMode "normal" kml_IconStyle.scale "" fme_color "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLOR)" fme_pen_opacity "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_OPACITY)" kml_LineStyle.colorMode "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLORMODE)" kml_LineStyle.width "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_WIDTH)" fme_fill_color "1,0.501960784313726,0" fme_fill_opacity "0.4" kml_PolyStyle.colorMode "normal" kml_LabelStyle.scale "0" # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTESETTER INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER_STYLED OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTESETTER_OUTPUT @SupplyAttributes(kml_altitudeMode,"absolute") FACTORY_DEF * TeeFactory FACTORY_NAME "$(KML_STYLER_PATH_WORKSPACE_NAME)_OUTPUT Output Collector" INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTESETTER_OUTPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_OUTPUT FACTORY_DEF * TeeFactory FACTORY_NAME "KML_STYLER_PATH_BARO OUTPUT Output Renamer/Nuker" INPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT OUTPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT FACTORY_DEF * TeeFactory FACTORY_NAME "KML_STYLER_PATH_BARO OUTPUT Splitter" INPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT OUTPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT_0 OUTPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT_1 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_11 INPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT_1 OUTPUT FEATURE_TYPE ATTRIBUTESETTER_11_OUTPUT @SupplyAttributes(kml_extrude,"0") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_BARO_PATH_VIS INPUT FEATURE_TYPE ATTRIBUTESETTER_11_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTESETTER_BARO_PATH_VIS_OUTPUT @SupplyAttributes(kml_visibility,"$(BARO_PATH_VIS)") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_10 INPUT FEATURE_TYPE KML_STYLER_PATH_BARO_OUTPUT_0 OUTPUT FEATURE_TYPE ATTRIBUTESETTER_10_OUTPUT @SupplyAttributes(kml_extrude,"1") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_BARO_WALL_VIS INPUT FEATURE_TYPE ATTRIBUTESETTER_10_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTESETTER_BARO_WALL_VIS_OUTPUT @SupplyAttributes(kml_visibility,"$(BARO_WALL_VIS)") # ------------------------------------------------------------------------- # Expose all attributes. This ensures that if you expose fme_dataset, you will get it. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTEEXPOSER INPUT FEATURE_TYPE path_GPS OUTPUT FEATURE_TYPE ATTRIBUTEEXPOSER_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "KML_STYLER_PATH_GPS INPUT Input Collector" INPUT FEATURE_TYPE ATTRIBUTEEXPOSER_OUTPUT OUTPUT FEATURE_TYPE KML_STYLER_PATH_GPS_INPUT MACRO KML_STYLER_PATH_WORKSPACE_NAME KML_STYLER_PATH_GPS MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_XFORMER_NAME KML_STYLER_PATH_GPS MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLOR 1,1,0 MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLORMODE normal MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_OPACITY 0.5 MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_WIDTH 4 MACRO $(KML_STYLER_PATH_WORKSPACE_NAME)_SUB_DOC_NAME KML_STYLER_PATH DEFAULT_MACRO KML_STYLER_PATH_WORKSPACE_NAME "" FACTORY_DEF * TeeFactory FACTORY_NAME "$(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT Input Splitter" INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT # ------------------------------------------------------------------------- # Expose all attributes. This ensures that if you expose fme_dataset, you will get it. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename FACTORY_DEF * TeeFactory FACTORY_NAME $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTEEXPOSER INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_INPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTEEXPOSER_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTEEXPOSER_OUTPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER_STYLED kml_common_style $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER kml_icon "" kml_icon_color "" kml_icon_opacity "" kml_IconStyle.colorMode "normal" kml_IconStyle.scale "" fme_color "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLOR)" fme_pen_opacity "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_OPACITY)" kml_LineStyle.colorMode "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_COLORMODE)" kml_LineStyle.width "$($(KML_STYLER_PATH_WORKSPACE_NAME)_LINE_WIDTH)" fme_fill_color "1,0.501960784313726,0" fme_fill_opacity "0.4" kml_PolyStyle.colorMode "normal" kml_LabelStyle.scale "0" # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTESETTER INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_KMLSTYLER_STYLED OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTESETTER_OUTPUT @SupplyAttributes(kml_altitudeMode,"absolute") FACTORY_DEF * TeeFactory FACTORY_NAME "$(KML_STYLER_PATH_WORKSPACE_NAME)_OUTPUT Output Collector" INPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_ATTRIBUTESETTER_OUTPUT OUTPUT FEATURE_TYPE $(KML_STYLER_PATH_WORKSPACE_NAME)_OUTPUT FACTORY_DEF * TeeFactory FACTORY_NAME "KML_STYLER_PATH_GPS OUTPUT Output Renamer/Nuker" INPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT OUTPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT FACTORY_DEF * TeeFactory FACTORY_NAME "KML_STYLER_PATH_GPS OUTPUT Splitter" INPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT OUTPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT_0 OUTPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT_1 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_7 INPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT_1 OUTPUT FEATURE_TYPE ATTRIBUTESETTER_7_OUTPUT @SupplyAttributes(kml_extrude,"0") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_GPS_PATH INPUT FEATURE_TYPE ATTRIBUTESETTER_7_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTESETTER_GPS_PATH_OUTPUT @SupplyAttributes(kml_visibility,"$(GPS_APTH_VIS)") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_4 INPUT FEATURE_TYPE KML_STYLER_PATH_GPS_OUTPUT_0 OUTPUT FEATURE_TYPE ATTRIBUTESETTER_4_OUTPUT @SupplyAttributes(kml_extrude,"1") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTESETTER_GPS_WALL_VIS INPUT FEATURE_TYPE ATTRIBUTESETTER_4_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTESETTER_GPS_WALL_VIS_OUTPUT @SupplyAttributes(kml_visibility,"$(GPS_WALL_VIS)") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTECOPIER_BARO INPUT FEATURE_TYPE waypoints_barometric OUTPUT FEATURE_TYPE ATTRIBUTECOPIER_BARO_OUTPUT @CopyAttributes(kml_name,time) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME KMLSTYLER_POINT_BARO INPUT FEATURE_TYPE ATTRIBUTECOPIER_BARO_OUTPUT OUTPUT FEATURE_TYPE KMLSTYLER_POINT_BARO_STYLED kml_common_style KMLSTYLER_POINT_BARO kml_icon "03" kml_icon_color "1,0.345098039215686,0.0352941176470588" kml_icon_opacity "" kml_IconStyle.colorMode "normal" kml_IconStyle.scale "0.15" fme_color "" fme_pen_opacity "" kml_LineStyle.colorMode "normal" kml_LineStyle.width "" fme_fill_color "" fme_fill_opacity "" kml_PolyStyle.colorMode "normal" kml_LabelStyle.scale "0" # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTECOPIER_GPS INPUT FEATURE_TYPE waypoints_GPS OUTPUT FEATURE_TYPE ATTRIBUTECOPIER_GPS_OUTPUT @CopyAttributes(kml_name,time) FACTORY_DEF * TeeFactory FACTORY_NAME "ATTRIBUTECOPIER_GPS OUTPUT Splitter" INPUT FEATURE_TYPE ATTRIBUTECOPIER_GPS_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTECOPIER_GPS_OUTPUT_0 OUTPUT FEATURE_TYPE ATTRIBUTECOPIER_GPS_OUTPUT_1 # ------------------------------------------------------------------------- # Since the TCL "END" index specification starts at -1 for the second # last character, and we've defined -1 to be the last charater, we've got # small bit of fiddling to do Tcl2 proc SUBSTRINGEXTRACTOR_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } Tcl2 proc SUBSTRINGEXTRACTOR_extract {startIdx endIdx} { FME_SetAttribute time_hh_mm [string range [FME_GetAttribute time] [SUBSTRINGEXTRACTOR_fixLastIndex $startIdx] [SUBSTRINGEXTRACTOR_fixLastIndex $endIdx]] } FACTORY_DEF * TeeFactory FACTORY_NAME SUBSTRINGEXTRACTOR INPUT FEATURE_TYPE ATTRIBUTECOPIER_GPS_OUTPUT_1 OUTPUT FEATURE_TYPE SUBSTRINGEXTRACTOR_OUTPUT @Tcl2("SUBSTRINGEXTRACTOR_extract 0 4") # ------------------------------------------------------------------------- # We use TCL here instead of @Concatenate because TCL is more flexible. Tcl2 proc CONCATENATOR_concatter {} { set val {}; append val [FME_GetAttribute {time_hh_mm}] {h}; FME_SetAttribute {kml_name} $val; } FACTORY_DEF * TeeFactory FACTORY_NAME CONCATENATOR INPUT FEATURE_TYPE SUBSTRINGEXTRACTOR_OUTPUT OUTPUT FEATURE_TYPE CONCATENATOR_OUTPUT @Tcl2(CONCATENATOR_concatter) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTEREMOVER_LABEL_GPS INPUT FEATURE_TYPE CONCATENATOR_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTEREMOVER_LABEL_GPS_OUTPUT @RemoveAttributes(altitude_baro,altitude_gps,head_001,head_002,head_003,head_004,head_005,head_006,head_007,head_008,head_009,head_010,head_011,head_012,head_013,head_014,head_015,head_016,head_017,head_018,head_019,head_020,head_021,head_022,head_023,head_024,head_025,head_026,head_027,head_028,head_029,head_030,latitude,line,longitude) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME KMLSTYLER_LABEL_GPS INPUT FEATURE_TYPE ATTRIBUTEREMOVER_LABEL_GPS_OUTPUT OUTPUT FEATURE_TYPE KMLSTYLER_LABEL_GPS_STYLED kml_common_style KMLSTYLER_LABEL_GPS kml_icon "" kml_icon_color "" kml_icon_opacity "" kml_IconStyle.colorMode "normal" kml_IconStyle.scale "0" fme_color "" fme_pen_opacity "" kml_LineStyle.colorMode "normal" kml_LineStyle.width "" fme_fill_color "" fme_fill_opacity "80" kml_PolyStyle.colorMode "normal" kml_LabelStyle.scale "0.6" # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME KMLSTYLER_POINT_GPS INPUT FEATURE_TYPE ATTRIBUTECOPIER_GPS_OUTPUT_0 OUTPUT FEATURE_TYPE KMLSTYLER_POINT_GPS_STYLED kml_common_style KMLSTYLER_POINT_GPS kml_icon "03" kml_icon_color "1,0,0" kml_icon_opacity "" kml_IconStyle.colorMode "normal" kml_IconStyle.scale "0.15" fme_color "" fme_pen_opacity "" kml_LineStyle.colorMode "normal" kml_LineStyle.width "" fme_fill_color "" fme_fill_opacity "" kml_PolyStyle.colorMode "normal" kml_LabelStyle.scale "0" # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ATTRIBUTESETTER_GPS_WALL_VIS_OUTPUT -> track_GPS_wall Correlator" INPUT FEATURE_TYPE ATTRIBUTESETTER_GPS_WALL_VIS_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) @CopyAttributes(kml_name,file) __wb_out_feat_type__ track_GPS_wall # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ATTRIBUTESETTER_BARO_WALL_VIS_OUTPUT -> track_barometric_wall Correlator" INPUT FEATURE_TYPE ATTRIBUTESETTER_BARO_WALL_VIS_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) @CopyAttributes(kml_name,file) __wb_out_feat_type__ track_barometric_wall # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "KMLSTYLER_POINT_BARO_STYLED -> waypoints_barometric Correlator" INPUT FEATURE_TYPE KMLSTYLER_POINT_BARO_STYLED OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) __wb_out_feat_type__ waypoints_barometric # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "KMLSTYLER_POINT_GPS_STYLED -> waypoints_GPS Correlator" INPUT FEATURE_TYPE KMLSTYLER_POINT_GPS_STYLED OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) __wb_out_feat_type__ waypoints_GPS # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ATTRIBUTESETTER_GPS_PATH_OUTPUT -> track_GPS Correlator" INPUT FEATURE_TYPE ATTRIBUTESETTER_GPS_PATH_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) @CopyAttributes(kml_name,file) __wb_out_feat_type__ track_GPS # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ATTRIBUTESETTER_BARO_PATH_VIS_OUTPUT -> track_barometric Correlator" INPUT FEATURE_TYPE ATTRIBUTESETTER_BARO_PATH_VIS_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) @CopyAttributes(kml_name,file) __wb_out_feat_type__ track_barometric # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "KMLSTYLER_LABEL_GPS_STYLED -> labels_GPS Correlator" INPUT FEATURE_TYPE KMLSTYLER_LABEL_GPS_STYLED OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id 0 @Reproject(LL84,LL84) @Transform(FME_GENERIC,KML) __wb_out_feat_type__ labels_GPS # ------------------------------------------------------------------------- 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 labels_GPS 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 "" time xml_char(20) file xml_char(255) # ------------------------------------------------------------------------- KML_1_DEF waypoints_barometric 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 "" time xml_char(20) longitude xml_char(20) latitude xml_char(20) altitude_gps xml_char(20) altitude_baro xml_char(20) line xml_char(20) text_line_number xml_char(20) file xml_char(255) head_001 xml_char(255) head_002 xml_char(255) head_003 xml_char(255) head_004 xml_char(255) head_005 xml_char(255) head_006 xml_char(255) head_007 xml_char(255) head_008 xml_char(255) head_009 xml_char(255) head_010 xml_char(255) head_011 xml_char(255) head_012 xml_char(255) head_013 xml_char(255) head_014 xml_char(255) head_015 xml_char(255) head_016 xml_char(255) head_017 xml_char(255) head_018 xml_char(255) head_019 xml_char(255) head_020 xml_char(255) head_021 xml_char(255) head_022 xml_char(255) head_023 xml_char(255) head_024 xml_char(255) head_025 xml_char(255) head_026 xml_char(255) head_027 xml_char(255) head_028 xml_char(255) head_029 xml_char(255) head_030 xml_char(255) # ------------------------------------------------------------------------- KML_1_DEF track_GPS 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 "" # ------------------------------------------------------------------------- KML_1_DEF track_GPS_wall 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 "" # ------------------------------------------------------------------------- KML_1_DEF track_barometric_wall 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 "" # ------------------------------------------------------------------------- KML_1_DEF track_barometric 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 "" # ------------------------------------------------------------------------- KML_1_DEF waypoints_GPS 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 "" time xml_char(20) longitude xml_char(20) latitude xml_char(20) altitude_gps xml_char(20) altitude_baro xml_char(20) line xml_char(20) text_line_number xml_char(20) file xml_char(255) head_001 xml_char(255) head_002 xml_char(255) head_003 xml_char(255) head_004 xml_char(255) head_005 xml_char(255) head_006 xml_char(255) head_007 xml_char(255) head_008 xml_char(255) head_009 xml_char(255) head_010 xml_char(255) head_011 xml_char(255) head_012 xml_char(255) head_013 xml_char(255) head_014 xml_char(255) head_015 xml_char(255) head_016 xml_char(255) head_017 xml_char(255) head_018 xml_char(255) head_019 xml_char(255) head_020 xml_char(255) head_021 xml_char(255) head_022 xml_char(255) head_023 xml_char(255) head_024 xml_char(255) head_025 xml_char(255) head_026 xml_char(255) head_027 xml_char(255) head_028 xml_char(255) head_029 xml_char(255) head_030 xml_char(255)