Saturday, October 24, 2009

Raster map reprojection (warping) with JavaScript and HTML5 Canvas

I wanted to create something nice during the FOSS4G Code Sprint, and I ended up programing a prototype of the client-side raster reprojection implemented with the HTML5 Canvas, JavaScript and Proj4js. It is kind of port of gdalwarp into the web-browser environment.

To try it you need a web browser which supports HTML5, it means the latest version of one of the Firefox, Chrome, Safari or Opera.

Have a look at the demo:



Link: http://examples.maptiler.org/map-reprojection-html5-canvas/

It is just a prove of concept in this moment, but I am sure you will come up with plenty of ideas for practical application... post a comment! ;-)

Saturday, October 10, 2009

Garmin Custom Maps KMZ from GeoTIFF via MapTiler / GDAL2Tiles



Garmin rolled out beta version of firmware for their latest generation handheld GPS receivers allowing you to display scanned paper maps and another raster data in their navigation devices. They have chosen to do that with a simplified variant of Google Earth's KMZ format, so you can prepare maps for your Garmin even in Google Earth.

On the Internet you can find plenty of free maps in the standardized GIS formats, which can be now transfered into your GPS device. Look at USGS topographic maps, USFS maps, or NOAA Nautical Charts, etc.
These geodata has already high quality georeference embedded, but they are using different coordinate systems and map projections then Google Earth and this complicates the conversion into the form supported by latest Garmin handhelds.











I am the author of MapTiler - a graphical application for Windows, Linux and Mac OS X, which allows extremely easy and user-friendly transformation of raster geodata into the web presentation (mashups) and tile overlay for Google Maps, Bing, Yahoo Maps, OpenStreetMap or Google Earth. You can download and use this software for free. And it is open-source!

The application now supports direct export into the Garmin Custom Maps KMZ. If you have one of the supported Garmin devices you can try an example map: the USGS map of Grand Canyon encoded for Garmin GPS KMZ (9 MB) or the alternative from USDA Forest Service. (10 MB)

Because I don't have a Garmin device with support of the KMZ, I would like to kindly ask those who have it and are going to use the Garmin rendering functionality to donate a few dollars via PayPal, so I can buy one of these devices and also cover the time I spent on the development of this new feature and on the new release of MapTiler.

PLEASE WHEN YOU WILL ANNOUNCE SOMEWHERE THIS NEW GARMIN FUNCTIONALITY OF MAPTILER PUT THERE A NOTE ABOUT THE DONATION AS WELL.

You can also include the donation gadget into your own web / blog post. Just copy and paste the HTML code.


Donation is as easy as a click on the "Give" button in the PayPal giving widget in this blog post - you can use either PayPal or your credit card.

I am keen to see if it is possible to raise enough funds to cover the costs for development this way.

Thank you, if you send a donation...

Klokan Petr Pridal

P.S.
Steps for Garmin map rendering:

Download and install latest version of MapTiler application. When you start it: In the first step choose the Google Earth tiles rendering, then open your geodata file and continue till the Tile Details page. Choose from the tile formats one of the Garmin Custom KMZ maps. Probably best option is the 512 version. By default it renders the maximal quality where the map has less then 100 tiles (limit of the Garmin devices). If you are fine with lower image quality just choose smaller number for the maximal zoom level. In most cases the default should be fine. Then continue in the GUI to the final rendering step.
The result is the map.kmz file, which can be directly used in your Garmin GPS.

If you would like to use the command line for rendering instead of the GUI then it is done by calling:
python gdal2tiles.py -p garmin map.tif
You need the latest development version of GDAL to do that - and the new version of gdal2tiles which I will commit to SVN during the FOSS4G Code Sprint on this Saturday here in Sydney.

It would be cool to buy the Garmin Oregon 400t (1099 CHF ~ 1065 USD) to test and be able to really use this MapTiler functionality, once I am back in Switzerland. ;-)

I welcome patches improving the user interface or the functionality.