#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! GUI IGNORE SourceDataset_JPEG_1,SourceDataset_JPEG DEFAULT_MACRO SourceDataset_JPEG C:\Documents and Settings\akoning\Desktop\76036\RIMG0312.JPG GUI MULTIFILE SourceDataset_JPEG JPEG_Files(*.jpg)|*.jpg|All_Files(*.*)|*.* Original JPEG Dataset: #! START_HEADER #! START_WB_HEADER READER_TYPE MULTI_READER MULTI_READER_TYPE{0} JPEG MULTI_READER_KEYWORD{0} JPEG_1 WRITER_TYPE FDS WRITER_KEYWORD FDS_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "JPEG_1" #! END_WB_HEADER #! START_SOURCE_HEADER JPEG JPEG_1 # ======================================================================= # The following GUI line prompts for a file to be used as the source JPEG 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: GUI FILENAME SourceDataset_JPEG_1 JPEG_Files(*.jpg)|*.jpg|All_Files(*.*)|*.* Original JPEG Dataset: JPEG_1_READER_META_ATTRIBUTES fme_dataset fme_basename #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {"$(SourceDataset)" != ""} { \ puts {DEFAULT_MACRO SourceDataset_JPEG_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER JPEG JPEG_1 DEFAULT_MACRO SourceDataset_JPEG_1 $(SourceDataset_JPEG) JPEG_1_DATASET "$(SourceDataset_JPEG_1)" #! END_SOURCE_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_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_CACHED_OBJECTS_HINT 10000 FME_REPROJECTION_ENGINE FME FME_USE_RICH_GEOMETRY no DEFAULT_MACRO DATASET_KEYWORD_JPEG_1 JPEG_1 DEFAULT_MACRO DATASET_KEYWORD_FDS_1 FDS_1 FDS_PRIMARY_READER_DATASET SourceDataset_JPEG FDS_SWIZZLE_TYPE INNER_SWIZZLE FDS_ASSOCIATE_WITH_EXTENSIONS NO # ------------------------------------------------------------------------- JPEG_1_READER_META_ATTRIBUTES fme_basename fme_dataset fme_feature_type # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME RICOHGPSPHOTO # ------------------------------------------------------------------------- JPEG_1_DEF JPEG # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ $(DATASET_KEYWORD_JPEG_1)_JPEG yes "" no # ------------------------------------------------------------------------- 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,PRESERVE_GEOMETRY) DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc x_replace_1_replace {} { set findValue [FME_DecodeTextOrAttr {}]; set replaceValue [FME_DecodeTextOrAttr {}]; if {{no} == {yes}} { FME_SetAttribute {x_coordinate} [regsub $(casemac) -all $findValue [FME_GetAttribute {exif_gpslongitude}] $replaceValue] } else { FME_SetAttribute {x_coordinate} [string map $(casemac) [list $findValue $replaceValue] [FME_GetAttribute {exif_gpslongitude}]] }; } FACTORY_DEF * TeeFactory FACTORY_NAME x_replace_1 INPUT FEATURE_TYPE JPEG OUTPUT FEATURE_TYPE x_replace_1_OUTPUT @Tcl2(x_replace_1_replace) # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc x_replace_2_replace {} { set findValue [FME_DecodeTextOrAttr {}]; set replaceValue [FME_DecodeTextOrAttr {}]; if {{no} == {yes}} { FME_SetAttribute {x_coordinate} [regsub $(casemac) -all $findValue [FME_GetAttribute {x_coordinate}] $replaceValue] } else { FME_SetAttribute {x_coordinate} [string map $(casemac) [list $findValue $replaceValue] [FME_GetAttribute {x_coordinate}]] }; } FACTORY_DEF * TeeFactory FACTORY_NAME x_replace_2 INPUT FEATURE_TYPE x_replace_1_OUTPUT OUTPUT FEATURE_TYPE x_replace_2_OUTPUT @Tcl2(x_replace_2_replace) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME x_splitter INPUT FEATURE_TYPE x_replace_2_OUTPUT OUTPUT FEATURE_TYPE x_splitter_OUTPUT @Split("@Value(x_coordinate)",,x_list{}) # ------------------------------------------------------------------------- # 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 x_splitter_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTEEXPOSER_2_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME x_ddCalc INPUT FEATURE_TYPE ATTRIBUTEEXPOSER_2_OUTPUT TEST &"x_list{0}" >= 0 OUTPUT PASSED FEATURE_TYPE x_ddCalc_OUTPUT "x_dd" @Evaluate(@Value("x_list{0}")+(@Value("x_list{1}")/60.0)+(@Value("x_list{2}")/3600.0)) OUTPUT FAILED FEATURE_TYPE x_ddCalc_OUTPUT "x_dd" @Evaluate(@Value("x_list{0}")-(@Value("x_list{1}")/60.0)-(@Value("x_list{2}")/3600.0)) # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc y_replace_1_replace {} { set findValue [FME_DecodeTextOrAttr {}]; set replaceValue [FME_DecodeTextOrAttr {}]; if {{no} == {yes}} { FME_SetAttribute {y_coordinate} [regsub $(casemac) -all $findValue [FME_GetAttribute {exif_gpslatitude}] $replaceValue] } else { FME_SetAttribute {y_coordinate} [string map $(casemac) [list $findValue $replaceValue] [FME_GetAttribute {exif_gpslatitude}]] }; } FACTORY_DEF * TeeFactory FACTORY_NAME y_replace_1 INPUT FEATURE_TYPE x_ddCalc_OUTPUT OUTPUT FEATURE_TYPE y_replace_1_OUTPUT @Tcl2(y_replace_1_replace) # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc y_replace_2_replace {} { set findValue [FME_DecodeTextOrAttr {}]; set replaceValue [FME_DecodeTextOrAttr {}]; if {{no} == {yes}} { FME_SetAttribute {y_coordinate} [regsub $(casemac) -all $findValue [FME_GetAttribute {y_coordinate}] $replaceValue] } else { FME_SetAttribute {y_coordinate} [string map $(casemac) [list $findValue $replaceValue] [FME_GetAttribute {y_coordinate}]] }; } FACTORY_DEF * TeeFactory FACTORY_NAME y_replace_2 INPUT FEATURE_TYPE y_replace_1_OUTPUT OUTPUT FEATURE_TYPE y_replace_2_OUTPUT @Tcl2(y_replace_2_replace) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME y_splitter INPUT FEATURE_TYPE y_replace_2_OUTPUT OUTPUT FEATURE_TYPE y_splitter_OUTPUT @Split("@Value(y_coordinate)",,y_list{}) # ------------------------------------------------------------------------- # 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 y_splitter_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTEEXPOSER_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME y_ddCalc INPUT FEATURE_TYPE ATTRIBUTEEXPOSER_OUTPUT TEST &"y_list{0}" >= 0 OUTPUT PASSED FEATURE_TYPE y_ddCalc_OUTPUT "y_dd" @Evaluate(@Value("y_list{0}")+(@Value("y_list{1}")/60.0)+(@Value("y_list{2}")/3600.0)) OUTPUT FAILED FEATURE_TYPE y_ddCalc_OUTPUT "y_dd" @Evaluate(@Value("y_list{0}")-(@Value("y_list{1}")/60.0)-(@Value("y_list{2}")/3600.0)) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME 2DPOINTREPLACER INPUT FEATURE_TYPE y_ddCalc_OUTPUT TEST &fme_type = fme_text OUTPUT PASSED FEATURE_TYPE 2DPOINTREPLACER_POINT @XValue("@Value(x_dd)",RESET) @YValue("@Value(y_dd)") @Dimension(2) OUTPUT FAILED FEATURE_TYPE 2DPOINTREPLACER_POINT @XValue("@Value(x_dd)",RESET) @YValue("@Value(y_dd)") @Dimension(2) @GeometryType(fme_point) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTEFILEREADER INPUT FEATURE_TYPE 2DPOINTREPLACER_POINT OUTPUT FEATURE_TYPE ATTRIBUTEFILEREADER_OUTPUT @File(DestReadSrcWrite,_file_contents,"@Value(fme_dataset)") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ATTRIBUTECOPIER INPUT FEATURE_TYPE ATTRIBUTEFILEREADER_OUTPUT OUTPUT FEATURE_TYPE ATTRIBUTECOPIER_OUTPUT @CopyAttributes(filename,fme_basename,photo,_file_contents,longitude,x_dd,latitude,y_dd,filesrc,fme_dataset) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ATTRIBUTECOPIER_OUTPUT -> ricoh_photos Correlator" INPUT FEATURE_TYPE ATTRIBUTECOPIER_OUTPUT OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ @Transform(FME_GENERIC,FDS) @SupplyAttributes(__wb_out_feat_type__,ricoh_photos) # ------------------------------------------------------------------------- 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__)) # ------------------------------------------------------------------------- FDS_1_DEF ricoh_photos fme_type fme_any filename char(30) filesrc char(255) photo buffer longitude float latitude float exif_isospeedratings buffer exif_gpsaltituderef buffer exif_gpsimgdirection buffer exif_gpsmeasuremode buffer exif_gpsdatestamp buffer exif_gpsdestbearing buffer exif_gpslongitude buffer exif_copyright buffer exif_gpsdop buffer exif_gpstrack buffer exif_gpsdestbearingref buffer exif_gpslatitude buffer exif_gpssatellites buffer exif_gpsstatus buffer exif_gpsdestdistance buffer exif_brightnessvalue buffer exif_gpsmapdatum buffer exif_gpsversionid buffer exif_gpsaltitude buffer exif_gpslongituderef buffer exif_gpsdestdistanceref buffer exif_gpsimgdirectionref buffer exif_gpsdifferential buffer exif_imagedescription buffer exif_gpsspeedref buffer exif_gpstrackref buffer exif_gpstimestamp buffer exif_interoperability_index buffer exif_gpslatituderef buffer exif_gpsspeed buffer exif_interoperability_version buffer