Showing posts with label pictures. Show all posts
Showing posts with label pictures. Show all posts

Geotag Hack for Garmin Nüvi/Panoramio Photos

How to manually geotag photos for the Garmin Nüvi 1490
Does NOT require the Garmin Connect software.


Recently (yesterday) I was nominated to read up on and figure out the Garmin Nüvi 1490 GPS unit for a friend of the family. Well, looking through the features, I found that photos can be loaded into the unit and displayed in various locations, such as the bootup screen, a simple slideshow, or even as a navigate-to-photo feature!

Now, I assumed that somehow the unit would read out Geotagging meta data from any old photo you might tag in something like Picasa and copy to the unit. But this is not so. Actually, Garmin has signed a contract of some sort with Panoramio, an online photo-sharing site specifically for photos of general public areas, usually landscapes, historical photos, or any other pictures based mainly on a location. By connecting the Nuvi to the computer, one can navigate to http://connect.garmin.com/photos, browse the map for specific Panoramio photo, which, if they have geotag information loaded, will show up on the map, and add it to a separate dock area, which, by using the Garmin Connect software, can be downloaded directly to the GPS unit.

All well and good, except that in the last month and a half, I've uploaded about 20+ photos to Panoramio and NONE of them are showing up on the Garmin Connect map, though they specifically said in the Panoramio forums that they would after some time. And to top it off, a photo that my dad posted about four years ago is also not appearing! Not very on top of this little feature, are we?

Besides that, all of the other threads on Panoramio boiled down to "downloading Panoramio photos to your computer is illegal" and NONE of them gave any helpful information.

So, I decided to do some research and figure out just exactly how the Garmin Connect tool synchronized with the photos feature. When I plugged the unit into the computer via USB, two new drives were mounted: the Garmin Nuvi drive, which is the image of the internal memory, and a Removable Disk, which was accessing the Micro-SD expansion port.

Navigating into the Garmin Nuvi drive (on my machine, I:), there are a number of files and folders:
.System
Garmin
GPX
help
JPEG
keyboards
Reports
Screenshot
Text
Vehicle
Voice
.Volume.icns
autorun.inf
nuvi_drive.ico
Navigating into the GPX folder, I find three files:
Current.gpx
Panoramio_20110810T103416.gpx
Position.gpx
From my previous research using our own GPS unit, the GPSMAP 60CSx, I know that GPX files are an XML-based file that can be opened in any text editor, and record specific gps coordinates along with names of the locations, timestamps and sources. Knowing that the Garmin stored everything in GPX made decoding it so much easier! With this knowledge, I was able to determine that GPX/Current.gpx is the database that stored saved searches, tracks and tagged photos downloaded from Panoramio, GPX/Panoramio_20110810T103416.gpx is the list of geotagged photos downloaded from Garmin Connect/Panoramio, and GPX/Position.gpx is probably the unit's current position.

Assuming that the Current.gpx file is updated regularly based on what the the unit is detecting, I decided to decode the Panoramio_20110810T103416.gpx file. And it worked! The conclusion I came to was the following: photos downloaded from GC/Panoramio are not tagged in the unit using JPEG metadata, and the unit can't detect JPG location metatags. Instead, Panoramio also sends location data alongside the photos that the unit downloads, and injects this information into the Panoramio_*.gpx file. THEN when the photos are opened in the viewer, the proper location-based tools are activated.

Here is a waypoint for a specific Panoramio photo:

<wpt lat="40.615972" lon="-105.171969">
<name>Northwest of Fort Collins</name>
<src>Panoramio <link href="Garmin/JPEG/Panoramio_11075531.jpg">
<type>image/jpeg </link>
<link href="http://www.panoramio.com/user/965071">
<text>WildernessShots.com</text>
<type>text/html</type>
</link>
<link href="http://www.panoramio.com/photo/11075531">
<type>text/html</type>
</link>
<sym>Scenic Area</sym>
<extensions>
<gpxx:WaypointExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3">
<gpxx:Categories>
<gpxx:Category>Photos</gpxx:Category>
</gpxx:Categories>
</gpxx:WaypointExtension>
</extensions>
</wpt>
With this information, I think it would be fairly self-explanatory to edit this file. I have yet to actually try it out, but when I figure it out, I'll get back with you!
------------
SUCCESS!!! I simply added a new <wpt> ... </wpt> section to the panoramio_20110810T103416.gpx file and when I rebooted the unit (unplugged it from the computer), the photo appeared in the list AND had the location tools in the lower corner, along with my username and all that!! WONDERFUL!

And just as I suspected, Current.gpx was also updated to reflect these changes, even though I didn't do a thing to them.

So all that needs to be done to add photos to your Garmin, and tag them without worrying about the Garmin Connect/Panoramio tool, simply copy the photos into one of the locations where pictures are kept on the unit. The tool downloads them to /Garmin/JPEG/, but I'm sure /JPEG/ will do just fine (/JPEG/ is where all the sample photos are kept).

Then edit the /GPX/Panoramio_<datecode>.gpx file and add a new waypoint using the <wpt> ... </wpt> tags as shown above. Or if you have a secondary program to save GPX files, I'm sure there is a way to just fix this up to save in this format. Also, the datecode in the filename is in the following format: yyyymmddThhmmss, so in my case, it was 20110810T103416. Just to keep up with the consistency, I also changed the filename to Panoramio_20110810T173100.gpx.

So in the end, here is the waypoint I manually and successfully added, along with the required XML and GPX definition tags:


<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="http://connect.garmin.com/">
<wpt lat="40.631839" lon="-105.143142">
<name>Sunrise Over the Neighborhood</name>
<src>Panoramio</src>
<link href="Garmin/JPEG/56784165.jpg">
<type>image/jpeg</type>
</link>
<link href="http://www.panoramio.com/user/5873911">
<text>Daniel P</text>
<type>text/html</type>
</link>
<link href="http://www.panoramio.com/photo/56784165">
<type>text/html</type>
</link>
<sym>Scenic Area</sym>
<extensions>
<gpxx:WaypointExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3">
<gpxx:Categories>
<gpxx:Category>Photos</gpxx:Category>
</gpxx:Categories>
</gpxx:WaypointExtension>
</extensions>
</wpt>
</gpx>
I'm sure if you wanted to add non-panoramio files, it would be just as easy. Just change/remove the few <link> tags to reflect something else and you'd be good to go!

Now to write a program to do this for me...


Online picture storage

Well I've been storing a few of my online pictures in MSN Groups. But that wasn't very good. It wastes a whole group, and I don't like MSN that much. So I've moved almost all of my web pictures to PicasaWeb. Since Blogger stores all uploaded folders there anyway, I figured I might as well try to consolidate. So, in short, I've created a new album called Webdev. It will contain pixel colors (I already have black and white there) and a few other pictures even you can use for web development.

To use them is a bit confusing. You need to go to My Webdev Album and click on the picture you want to view/link to. The pixel ones are a bit small, so you will have to have good eyesight to find them.

Next, on the right side, you will see a link called "Download photo." Right-click this link and "Copy Shortcut." Go to your source code and Ctrl-V into an <img> tag. Make sure you remove the "?imgdl=1" from the end of the pasted image source code. This will make sure the image shows up on your page rather than prompting the end user to download it. Hit refresh (F5) in your web browser and my image should show up on the web page. Cool, huh?

Cool Photoshop Gradient Effect

I thought I'd show you my mods on cool gradient backgrounds in Photoshop.

The tutorial I found on the web: Photoshop Gradient Background


I have a couple things I like to do. You do not need to use just angles on a linear gradient. You can also use the diamond, radial and circular gradients.


A really cool idea is to create a gradient with a very narrow band of color on one end (White at 0, Blue at say 5, and Green the rest of the way out). This makes a circle that looks very 3D, and yet has not implemented the emboss tool.


Another one of my ideas is to create 2 completely different style layers of the same technique. Then set the top layer blending mode to difference to get double the effect. You could also use any other blending mode, such as hard mix.


Put a photo on the bottom layer, a gradient layer over that and set a blending mode on the top layer.


Here are some pictures that I created using these techniques:

My Photoshop Web Album

Note the "Sister's Creation 3." This was the type I was talking about above, where a tight gradient on the end would make a pseudo-emboss.

Also note the "Chrome Flares." This was using another technique where you create multiple lens flares on a black layer, and then chrome filter the layer. I then did an Pin Light or Hard Mix (I can't quite remember) of the gradient layer onto the Flare Layer.