# ------------------------------------------------------------------------------------- # GOOGLE EARTH EXPORT MACRO # ------------------------------------------------------------------------------------- # This macro will export the currently filtered caches to a Google Earth (*.KML) file. # The file is stored at a fixed location, the filename can be fixed too or can be # provided individually for each export. # Icons to be used by Google Earth are embedded in the macro, so there is no need to # put an icon file at a specific location manually. # The Google Earth file contains a subcategory for each cache type (traditional, # multi,...) which allows to view/hide specific cache types in Google Earth. # In Google Earth, you can double click the cache name to visit the cachepage at # geoaching.com. # Behaviour of the macro can be changed by editing some variables, all located at the # top part of the macro code. # ------------------------------------------------------------------------------------- # Version 2.0 - April 2006 - Coding by Bert Geenen (Binkie) # Icons by geocaching.com, modified by Heiner Lieth # Visit the Belgian geocaching community at www.geocaching.be # ------------------------------------------------------------------------------------- # History of changes: # 2.0: using new macro features of GSAK 6.6.0 # icons created using embedded MIME data # options to specify filename and destination of Google Earth export file # icons for found and/or unavailable caches # 1.5: using local Google Earth icons, using stylesheets instead of specifying # each icon individually # 1.3: special icon/subcategory for found caches # added display name choices: no name (only icon), xxxx (GCxxxx with 'GC' dropped) # 1.2: variables adjusted by Clyde to prevent changing variable type # (which will not be possible anymore in future version of macro engine) # 1.1: added choice of waypoint identification # 1.0: initial release # ------------------------------------------------------------------------------------- #=========================================================# # # # Start of user editable area # # # #=========================================================# # This macro can run without any user interaction. No dialogue boxes are displayed, # and your export file will open in Google Earth. # Specify if you want user interaction (True) or not (False) # If you choose user interaction, then 4 additional dialogue boxes will be displayed # each time you run the macro, requesting how to process your data. $config_user_interaction = True # If you run the macro without user interaction, then the following default settings # will be used. You can change these defaults to reflect the way that you want the # macro to behave. $config_wp_ident = 4 # 1 = no name, only an icon # 2 = GCxxxx # 3 = xxxx, 'GC' dropped # 4 = Waypoint Name # 5 = Smart Name $config_found_caches = 2 # 1 = Do NOT put found caches in a separate category # 2 = Use a separate category for your found caches. # This enables to toggle your found caches in Google Earth. $config_unavail_caches = 2 # 1 = Do not export unavailable caches # 2 = Export unavailable caches and use a special icon to display them # Path that contains the icon file to be used # Modify if necessary, to reflect location on your PC # Specify full path, including filename and extension $config_icon_path = "C:\Program Files\Google\Google Earth\res\gsak.png" # Do you want to create the icons file automatically, using the icons embedded # in this macro? By default, each time the macro is run, the icons will be created # to make sure that you use the proper icons. However, if you have changed # the icons, then you may want to switch off automatic creation, because # you want to prevent that your edited icons will be overwritten with the # default ones. # Default: $config_auto_create_icons = True # Set to False to prevent auto creation of icons $config_auto_create_icons = True # Path to folder where Google Earth export file should be created. # Default: do not specify (use an empty string: "") to use the # installation directory of GSAK. # # ATTENTION: when you specify a path yourself, make sure that it # ends with a backslash (\). $config_kml_folder = "" # Name of the Google Earth file to be generated. # Specify an empty string ("") and the macro will prompt you for a filename. # E.g. $config_kml_filename = "" # If you do specify a filename, then you will not be prompted and the file will # be overwritten on successive launches of the macro. If you specify the filename, # then make sure to include the extension .kml in the filename. # Default: myGoogleEarth.kml # The file is created in the folder that is specified in $config_kml_folder. $config_kml_filename = "myGoogleEarth.kml" # Icon size (use 1 for 100%, 0.5 for 50% etc.) # If you want to increase or decrease the size of the icons used, # then change accordingly (default = 1) # ATTENTION: make sure to include a leading zero, so use 0.75 instead of .75 $config_icon_size = 1 # Size of the cachename displayed on the map (use 1 for 100%, 0.8 for 80% etc.) # ATTENTION: sizes smaller than 0.7 (70%) makes the labels completely disappear # (default = 1) # ATTENTION: make sure to include a leading zero, so use 0.75 instead of .75 $config_label_size = 1 #=========================================================# # # # DO NOT CHANGE BEYOND THIS POINT # # # #=========================================================# # debug status="on" height=800 vsub status="on" GOSUB name="CheckOutputDestination" $outFile = $config_kml_folder + $config_kml_filename GOSUB name="CreateIcons" # regexp used to determine valid characters in cacheName # if you choose to have the cache name cleaned by GSAK, only those valid characters will remain # \w any alphanumeric character, including _ # \s any space # \x21-\x25, \x27-\x2E any character between chr(33) and chr(46) (numbers, round brackets, calculation symbols (except / ),...) # \x26 is excluded from the valid characters, it's the & symbol # \xBA-\xFF any character between chr(186) and chr(255) (accented and special chars) $validchars = "[°€{}\w\s\x21-\x25\x27-\x2E\xBA-\xFF]*" # if the macro is not running in auto configuration mode, # then ask the user how to process the data IF $config_user_interaction # ask how to output the cache names CHOOSE msg="Choose waypoint identification" opt1="No name, only an icon" opt2="GCxxxx" opt3="xxxx (GCxxxx, 'GC' dropped)" opt4="Waypoint Name" opt5="Smart Name" $config_wp_ident = $result # ask how to process found caches CHOOSE msg="How to process FOUND caches" opt1="Nothing special" opt2="Put them in a separate subcategory" $config_found_caches = $result # ask how to process unavailable caches CHOOSE msg="How to process UNAVAILABLE/ARCHIVED caches" opt1="Do not export them" opt2="Use special icons" $config_unavail_caches = $result ENDIF # sort db in order to create proper subcategories within export file # if found caches need to be stored in a separate subcategory, then sort # on found status / cachetype, otherwise, sort on cachetype # ----------------------------------------------------------------------- IF $config_found_caches = 2 sort by="found;cachetype;description" ELSE sort by="cachetype;description" ENDIF GOTO position=top # write head of output file # ------------------------- $header = replace("[ICONPATH]", $config_icon_path, $header, true) $header = replace("[ICONSIZE]", numtostr($config_icon_size), $header, true) IF $config_wp_ident = 1 $config_label_size = 0 ENDIF $header = replace("[LABELSIZE]", numtostr($config_label_size), $header, true) $res = PutFile($outFile,$header) $previousCacheType = "@" $totalRecordCount = $_Count $currentRecordCount = 1 # loop through selected caches # ---------------------------- WHILE .not. $_EOL $msg = "Processing record $currentRecordCount of $totalRecordCount..." SHOWSTATUS msg="$msg" $currentRecordCount = $currentRecordCount + 1 # determine cache type and prepare folder name and icon number # ------------------------------------------------------------ $cacheType = $d_CacheType $cacheTypeKeys = "BCEGLMORTUVW" $cacheTypeDecs = "Unknown Cache Type;Letterbox;Cache in Trash Out;Event;Benchmark;Locationless;Multi;Other;Earth;Traditional;Unknown;Virtual;Webcam;" #in case gc.com introduces new cache type: AT results is 0 -> add 1 to result and extract "Unknown cache type" $int = at($cacheType, $cacheTypeKeys) + 1 $currentCacheType = Extract($cacheTypeDecs, ";", $int) $cachteTypeOrig = $currentCacheType #keep the original cache type (it can be changed into Found) to display in cache description tooltip $cacheTypeIcon = $d_CacheType #if it is a FOUND cache, modify subcategory #according to the choosen processing options # -------------------------------------------------- IF $d_Found #change subcategory if applicable IF $config_found_caches = 2 $currentCacheType = "Found Caches" ENDIF #change icon to reflect found Cache $cacheTypeIcon = $cacheTypeIcon + "F" ELSE #change icon to reflect a NOT found Cache $cacheTypeIcon = $cacheTypeIcon + "N" ENDIF # change icon to reflect Available or Unavailable cache IF $d_Archived or $d_TempDisabled $cacheTypeIcon = $cacheTypeIcon + "U" ELSE $cacheTypeIcon = $cacheTypeIcon + "A" ENDIF # is this the first cache of a new type (traditional, multi,...) # then create new folder within KML document # -------------------------------------------------------------- IF ($previousCacheType <> $currentCacheType) # close previous folder (unless this is the first folder in the output file) IF $previousCacheType <> "@" $res = AppendFile($outFile,$endOfFolder) ENDIF # create the new folder $Folder = replace("[FOLDER]",$currentCacheType,"[FOLDER]",true) $res = AppendFile($outFile,$Folder) ENDIF $previousCacheType = $currentCacheType # determine cache identification to be displayed # ---------------------------------------------- $ident = $d_SmartName IF $config_wp_ident = 2 $ident =$d_Code ENDIF IF $config_wp_ident = 3 $ident = substr($d_Code,3,99) ENDIF IF $config_wp_ident = 4 $ident = $d_Name ENDIF IF $config_wp_ident = 5 $ident = $d_SmartName ENDIF #clean up the cache identification by removing invalid characters # --------------------------------------------------------------- $count = RegExCount($validChars, $ident) $cleaned = "" $int = 1 WHILE $int <= $count $good = RegExData($validChars,$ident,$int) $cleaned = $cleaned + $good $int = $int + 1 ENDWHILE $ident = $cleaned $cacheName = $d_Name $placedBy = $d_PlacedBy $diff = NumToStr($d_Difficulty) $terrain = NumToStr($d_Terrain) #clean up the cache name by removing invalid characters # ----------------------------------------------------- $count = RegExCount($validChars, $cacheName) $cleaned = "" $int = 1 WHILE $int <= $count $good = RegExData($validChars,$cacheName,$int) $cleaned = $cleaned + $good $int = $int + 1 ENDWHILE $cacheName = $cleaned # clean the name of the owner by removing invalid characters # ---------------------------------------------------------- $count = RegExCount($validChars, $placedBy) $cleaned = "" $int = 1 WHILE $int <= $count $good = RegExData($validChars,$placedBy,$int) $cleaned = $cleaned + $good $int = $int + 1 ENDWHILE $placedBy = $cleaned # fill body template with cache data # ---------------------------------- $body = $bodyTemplate $body = replace("[IDENT]", $ident, $body, true) $body = replace("[GCCODE]", $d_Code, $body, true) $body = replace("[CACHETYPE]", $cacheTypeIcon, $body, true) $body = replace("[DESCRIPTION]", $cacheName, $body, true) $body = replace("[TYPE]", $cachteTypeOrig, $body, true) $body = replace("[PLACEDBY]", $placedBy, $body, true) $body = replace("[DIFF]", $diff, $body, true) $body = replace("[TERRAIN]", $terrain, $body, true) $string = $d_Latitude $body = replace("[LAT]",$string,$body,true) $string = $d_Longitude $body = replace("[LON]",$string,$body,true) # export only if cache is available, otherwise export only if user # wants that unavailable caches are exported IF ($d_Archived or $d_TempDisabled) and ($config_unavail_caches = 1) # do not export ELSE $res = AppendFile($outFile,$body) ENDIF GOTO position="next" ENDWHILE SHOWSTATUS msg="Finished processing $totalRecordCount records." # write the tail of the file # -------------------------- $res = AppendFile($outFile,$footer) SORT by="description" GOTO position="top" IF $config_user_interaction $msg = $outFile + $launchGoogle INPUT msg="$msg" default="Y" IF upper($result) = "Y" openfile file=$outFile ENDIF ELSE openfile file=$outFile ENDIF CANCEL # ====================================================== # S U B R O U T I N E S # ====================================================== BEGINSUB name="CreateIcons" # This routine takes care of creating/checking the icons file that will be used # by Google Earth. # In case the icons must not be created automatically, check if they already exist # at the location specified in $config_icon_path. IF (not($config_auto_create_icons)) and (not(FileExists($config_icon_path))) VSUB status="off" $msg = "The location of your icons file does not exists." + $_NewLine + $_NewLine + "Edit the macro file and correct the contents of variable $config_icon_path." + $_NewLine + $_NewLine + "(It currently contains " + $config_icon_path + ")." VSUB status="on" PAUSE msg=$msg CANCEL ENDIF # In case the icons must be created, try to do so and check for successful creation. IF $config_auto_create_icons $icons = MimeDecode($data_icons) $result = PutFile($config_icon_path, $icons) IF $result <> "*OK*" VSUB status="off" $msg = "The icons could not be created at the location specified in the macro." + $_NewLine + $_NewLine + "Edit the macro file and correct the contents of variable $config_icon_path." + $_NewLine + $_NewLine + "(It currently contains " + $config_icon_path + ")." VSUB status="on" PAUSE msg=$msg CANCEL ENDIF ENDIF ENDSUB BEGINSUB name="CheckOutputDestination" # if outputdirectory is empty, then use gsak installation directory IF $config_kml_folder = "" $config_kml_folder = $_Install + "\" ENDIF # check if $config_kml_folder end with a backslashes IF Right($config_kml_folder,1) <> "\" VSUB status="off" $msg = "The location of destination folder for your KML-file must end with a backslash." + $_NewLine + $_NewLine + "Edit the macro file and correct the contents of variable $config_kml_folder." + $_NewLine + $_NewLine + "(It currently contains " + $config_kml_folder + ")." VSUB status="on" PAUSE msg=$msg CANCEL ENDIF # check if $config_kml_folder points to an existing folder IF .not.(FolderExists($config_kml_folder)) VSUB status="off" $msg = "Your destination folder for the KML-file does not exist." + $_NewLine + $_NewLine + "Edit the macro file and correct the contents of variable $config_kml_folder, or create the folder that is specified in $config_kml_folder." + $_NewLine + $_NewLine + "(It currently contains " + $config_kml_folder + ")." VSUB status="on" PAUSE msg=$msg CANCEL ENDIF # ask for filename if a name has not been predefined IF $config_kml_filename = "" $msg = "Specify the name for your KML-file. Do not type the extension '.KML' as it will be added to your filename automatically." INPUT msg=$msg $result = trim($result) IF upper(right($result,4)) <> ".KML" $result = $result + ".KML" ENDIF $config_kml_filename = $result ELSE #check if filename eind with .kml IF right(trim(upper($config_kml_filename)),4) <> ".KML" VSUB status="off" $msg = "The KML-filename that you have specified in the macro, does not end with '.KML'." + $_NewLine + $_NewLine + "Edit the macro file and correct the contents of variable $config_kml_filename." + $_NewLine + $_NewLine + "(It currently contains " + $config_kml_filename + ")." VSUB status="on" PAUSE msg=$msg CANCEL ENDIF ENDIF ENDSUB # ====================================================== # D A T A V A R I A B L E S # ====================================================== varname=$header GSAK Export varname=$footer varname=$bodyTemplate [IDENT] #[CACHETYPE] [DESCRIPTION], [TYPE] ([DIFF]/[TERRAIN]) by [PLACEDBY]]]> [LON], [LAT] varname=$endOfFolder varname=$launchGoogle has been created. Do you want to launch Google Earth and open your file? Please enter: (Y)es or (N)o # The following lines are the MIME encoded icons that will be used to create # the icons file for Google Earth. # # !!! DO NOT MODIFY !!! VarName=$data_icons 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