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.

Any suggestions of tools or methods would be appreciated!

  • not an answer, but qgis print composer atlas may be able to handle this if you create XX grid points and use those for coverage layer. XX grid points and scale should be defined so that it created wanted rasters. this may or may not work, last time when i tried to create tiles with qgis i noticed that coverage layers seems to work like i said , but i have not done any real experiments with it – simplexio Apr 8 '14 at 13:00
  • I would definitely use gdal_translate, see e.g. gis.stackexchange.com/questions/18280/… . you can define the extent and the compression type. Note that converting to jpeg then to another format will not keep the jpeg compression at the end. – radouxju Apr 8 '14 at 13:24
  • You could try QLandKarte GT. It supports exporting a raster map in Garmin Custom Map format. It should automatically split it into the tiles of the correct dimensions. – vclaw Apr 8 '14 at 21:07

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 ..

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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