I have a set of TIFF maps that I want to load onto Garmin GPS 62s units. The maximum size for each tile on the GPS is 3Mb and less than 1 million pixels. I manually produced one tile, following this workflow:

  1. Convert whole TIFF map to JPG using IrfanView
  2. Manually crop the image to be less than 1 million pixels (i.e. 1024X1024) and compress to be less than 3Mb.
  3. Add JPG to QGIS and georeference using the georeferencer tool.
  4. Add same JPG image to Google Earth as an Image Overlay.
  5. Use the Extent information from the georeferenced JPG in QGIS to fill out the extent boxes in Google Earth.
  6. Save as KMZ file.
  7. Add KMZ file to Garmin Basecamp.
  8. Add KMZ to GPS unit with Basecamp.

This is obviously a slow and fiddly process which I am reluctant to repeat 100 times to produce all the tiles needed.

Is there a way to automate sections of this?

Specifically I imagine the follow are possible, but don't know of any tools to do it:

  • Automatically divide one georeferenced raster into multiple tiles of given dimensions, retaining geocoded information, in QGIS.
  • Export multiple tiles into a KMZ file in QGIS

This would make the process a lot quicker. The closest tools I have found is the GarminCustomMaps plugin for QGIS, but this just takes a JPG image of your current map canvas - great for using with multiple vectors etc, but when zoomed out with large raster files, I just get a very pixelated image which is useless for reading on a GPS. Zooming in more to increase the resolution negates the point of it, as you'd have to repeat it multiple times.


2 Answers 2


I posted a python script to use from ArcGIS here: Exporting 3GB ArcGIS Raster to KML without losing resolution? The different models support different numbers of tiles. You have to look at this limitation, the extent of imagery you want to use, and the minimum resolution you want to use. Then you need to possibly create multiple files from your original imagery, process each section of imagery with the script tool, and transfer the files from a laptop to the GPS as you need them (Garmin only support 1 "Custom Map" at a time). Many of the *map models only support 100 1024x1024 tiles. The Colorado and Montana support more. I experimented with changing the tile size to 2048 x 2048 and that seemed to still work and allow for quite a bit more data at a time.


I would suggest you to try gdal2tiles.py

gdal2tiles.py --force-kml --webviewer=none [input file] [output_dir]/

Would create a directory with all tiles and the KML file. Simply compressing it into a ZIP file and changing the file extension to .kmz gets you a KMZ file ready to put onto your GPS device.

You could also script the whole process in bash:

for inputTiff in *.tif;do
  mkdir -p "tiles"
  rm -Rf tiles/*
  gdal2tiles.py --force-kml --webviewer=none "${inputTiff}" "tiles/"
  cd tiles
  zip "${inputTiff/%.tif/.kmz}" -r *
  cd ..

Not the answer you're looking for? Browse other questions tagged or ask your own question.