<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Random Thoughts</title>
	<atom:link href="http://www.melaneum.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.melaneum.com/blog</link>
	<description>from and to 372433 143758 48 N</description>
	<pubDate>Tue, 13 May 2008 01:56:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Pdf diff ?</title>
		<link>http://www.melaneum.com/blog/linux/pdf-diff</link>
		<comments>http://www.melaneum.com/blog/linux/pdf-diff#comments</comments>
		<pubDate>Tue, 13 May 2008 01:56:05 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[diff]]></category>

		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/?p=56</guid>
		<description><![CDATA[Situation
Your exchanging pdf files with an editor for a journal publication. Each time you send a list of modifications to be applied and the modified pdf file comes back to you, usually with some additional modifications that you didn&#8217;t ask for. How to spot these change easily and to make sure they are relevant?
Problem
The solution [...]]]></description>
			<content:encoded><![CDATA[<h1>Situation</h1>
<p>Your exchanging pdf files with an editor for a journal publication. Each time you send a list of modifications to be applied and the modified pdf file comes back to you, usually with some additional modifications that you didn&#8217;t ask for. How to spot these change easily and to make sure they are relevant?<span id="more-56"></span></p>
<h1>Problem</h1>
<p>The solution that come to mind is to use a pdf diff tool, similar to what you usually use for text files or source code: diff, diff3, kdiff3, meld are such examples. However, a quick search on the internet couldn&#8217;t reveal any tool fulfilling the conditions (being free and open source are mandatory conditions).</p>
<h1>Solution</h1>
<p>The easy trick is to first convert these pdf to text file and then use the usual text comparison programs:</p>
<pre>pdftotext file1.pdf
pdftotext file2.pdf
kdiff3 file1.txt file2.txt</pre>
<p>and that&#8217;s it, you are now able to see what has been modified between the two files. Don&#8217;t count on that to be able to make a merge though!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/linux/pdf-diff/feed</wfw:commentRss>
		</item>
		<item>
		<title>Renaming photos</title>
		<link>http://www.melaneum.com/blog/photo/renaming-photos</link>
		<comments>http://www.melaneum.com/blog/photo/renaming-photos#comments</comments>
		<pubDate>Sat, 19 Apr 2008 13:32:39 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Tagging]]></category>

		<category><![CDATA[photo]]></category>

		<category><![CDATA[exif]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/?p=53</guid>
		<description><![CDATA[Situation
A family gathering with ten different photographers shotting every moment. You end up with thousands of photos that need to be organized at least in sequence over the time (to make a slide-show, for example).

Problem
Some cameras name the photos as IMG_XXXX, others as DSC-XXX, etc. Without proper organization, you can&#8217;t simply view the photo in [...]]]></description>
			<content:encoded><![CDATA[<h1>Situation</h1>
<p>A family gathering with ten different photographers shotting every moment. You end up with thousands of photos that need to be organized at least in sequence over the time (to make a slide-show, for example).</p>
<p><span id="more-53"></span></p>
<h1>Problem</h1>
<p>Some cameras name the photos as IMG_XXXX, others as DSC-XXX, etc. Without proper organization, you can&#8217;t simply view the photo in a time organized sequence.</p>
<h1>Trick</h1>
<p>Most digital cameras record the date and time in the photo exif header. The idea is to use this information to rename the photo according to the date and time when it was taken. Once the photos are renamed with the proper name format, it becomes easy to make them into a sequence.</p>
<h1>Application</h1>
<p>First, you&#8217;ll need the jhead program installed <code>apt-get install jhead</code> (on Debian/Ubuntu). This simple program does all the work for you. Just launch:</p>
<pre>
jhead -nf%Y%m%d-%H%M%S-photographerName *.jpg
</pre>
<p>in the directory of each photographer. Then, you can copy all photos within the same directory.</p>
<p>All cameras might not be set properly. There will at least be few minutes of difference between them. It can be few years if one camera time has not been set before. Choose one reference camera (enough shots in the series with a correct time) and try to estimate the time-difference with others. Then jhead can help you to change the exif header according to your evaluation:</p>
<pre>
jhead -da2006:08:05+17:41:40-2006:08:05+11:39:06 *-photographerName.jpg
</pre>
<p>to add about 6 hours and 2 min to all shots taken by <em>photographerName</em> in the series. The second argument (2006:08:05+11:39:06) is the current date-time of one of the shot. The first argument (2006:08:05+17:41:40) is the date-time according to the reference camera. All shots will be incremented by this difference.</p>
<p>Once the time is corrected, you need to rerun the renaming</p>
<pre>
jhead -nf%Y%m%d-%H%M%S-photographerName *-photographerName.jpg
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/photo/renaming-photos/feed</wfw:commentRss>
		</item>
		<item>
		<title>High Dynamic Range (HDR)</title>
		<link>http://www.melaneum.com/blog/photo/hdr</link>
		<comments>http://www.melaneum.com/blog/photo/hdr#comments</comments>
		<pubDate>Tue, 15 Apr 2008 20:39:31 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[HDR]]></category>

		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/?p=43</guid>
		<description><![CDATA[Most common images are coded on 8 bits (24 if you have three channels for the colors) which gives 256 different values. The problem is that the human eye sensitivity spans a great range of luminosity and can adapt fast to different contrast. As a results, photos taken on a places with important contrast will [...]]]></description>
			<content:encoded><![CDATA[<p>Most common images are coded on 8 bits (24 if you have three channels for the colors) which gives 256 different values. The problem is that the human eye sensitivity spans a great range of luminosity and can adapt fast to different contrast. As a results, photos taken on a places with important contrast will look over or under exposed.</p>
<p><span id="more-43"></span></p>
<p>One solution to create an image which will look closer to the reality is to use High Dynamic Range (HDR). HDR combines different shots of the same scene taken with different exposure to create a 16 bits or 32 bits image. Pixel in these images represents a physical value: the luminance.</p>
<p>Of course as monitor, printers, etc can&#8217;t represent such an image, an additional step is required: tone mapping. The tone-mapping is a projection from the real luminance value back to the 8 bits value. Of course a simple linear projection won&#8217;t do the trick. Several algorithms exists and can do that for you. These images are often referred as HDR which is not strictly correct.</p>
<p>Qtpfsgui, an open-source HDR workflow can help you create your own HDR images. Here are some examples.</p>
<p>In a church in Amsterdam, three shots at different exposure. The camera was stable so no registration step was required before the HDR generation.</p>
<p><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20080321-135401a.jpg"><img class="alignleft size-medium wp-image-49" title="_thb_w20080321-135401a" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20080321-135401a.jpg" alt="Amsterdam low exposure" width="160" height="106" /></a><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20080321-135401.jpg"><img class="aligncenter size-medium wp-image-48" title="_thb_w20080321-135401" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20080321-135401.jpg" alt="Amsterdam medium exposure" width="160" height="106" /></a><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20080321-135401b.jpg"><img class="alignright size-medium wp-image-50" title="_thb_w20080321-135401b" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20080321-135401b.jpg" alt="Amsterdam high exposure" width="160" height="106" /></a></p>
<p>And the result:</p>
<p><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_wamsterdamhdr_pregamma_1_mantiuk_contrast_mapping_03_saturation_factor_1404.jpg"><img class="aligncenter size-medium wp-image-51" title="_thb_wamsterdamhdr_pregamma_1_mantiuk_contrast_mapping_03_saturation_factor_1404" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_wamsterdamhdr_pregamma_1_mantiuk_contrast_mapping_03_saturation_factor_1404-300x199.jpg" alt="Amsterdam HDR/tone mapping" width="300" height="199" /></a></p>
<p>The same on a street of Shanghai. Here the camera was not still so a registration was first necessary:</p>
<p><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20071110-1049061.jpg"><img class="alignnone size-medium wp-image-45" title="_thb_w20071110-1049061" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20071110-1049061.jpg" alt="Shanghai low exposure" width="106" height="159" /></a><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20071110-104906b.jpg"><img class="aligncenter size-medium wp-image-47" title="_thb_w20071110-104906b" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20071110-104906b.jpg" alt="Shanghai medium exposure" width="106" height="159" /></a><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20071110-104906a.jpg"><img class="alignright size-medium wp-image-46" title="_thb_w20071110-104906a" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w20071110-104906a.jpg" alt="Shanghai high exposure" width="106" height="159" /></a></p>
<p>And the result</p>
<p><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w_pregamma_1_mantiuk_contrast_mapping_03_saturation_factor_08.jpg"><img class="aligncenter size-medium wp-image-52" title="_thb_w_pregamma_1_mantiuk_contrast_mapping_03_saturation_factor_08" src="http://www.melaneum.com/blog/wp-content/uploads/2008/04/_thb_w_pregamma_1_mantiuk_contrast_mapping_03_saturation_factor_08-200x300.jpg" alt="Shanghai HDR/tone mapping" width="200" height="300" /></a></p>
<p>Here you can note the ghost effect on people would didn&#8217;t want to stand still while I was taking the pictures. Within the one second between the first and the third shot, they moved and of course the registration process is not designed to compensate for that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/photo/hdr/feed</wfw:commentRss>
		</item>
		<item>
		<title>Mapping photos 2 (libkml)</title>
		<link>http://www.melaneum.com/blog/python/mapping-photos-2-libkml</link>
		<comments>http://www.melaneum.com/blog/python/mapping-photos-2-libkml#comments</comments>
		<pubDate>Thu, 03 Apr 2008 20:47:21 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Tagging]]></category>

		<category><![CDATA[photo]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[kml]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/python/mapping-photos-2-libkml</guid>
		<description><![CDATA[Few days ago Google release an open source library targeted at KML files: libkml. There is also bindings for python available.

A good opportunity to try it out was to simplify my previous python tagging script.
Using the lib is easy from the examples on Google&#8217;s website:
coordinates = factory.CreateCoordinates()
coordinates.add_point3(lon,lat,alt)
to create coordinates for examples. All elements are created [...]]]></description>
			<content:encoded><![CDATA[<p>Few days ago Google release an open source library targeted at KML files: libkml. There is also bindings for python available.</p>
<p><span id="more-40"></span></p>
<p>A good opportunity to try it out was to simplify my <a title="Old tragging script" href="http://www.melaneum.com/blog/python/mapping-photos">previous python tagging script</a>.</p>
<p>Using the lib is easy from the examples on Google&#8217;s website:</p>
<pre>coordinates = factory.CreateCoordinates()
coordinates.add_point3(lon,lat,alt)</pre>
<p>to create coordinates for examples. All elements are created and combined together in a <code>kmldom::Document</code> which is passed to a <code>kmldom::Kml</code> then written to a file.</p>
<p>Here is the full script:<br />
<a title="jpegtokml" href="http://www.melaneum.com/blog/wp-content/uploads/2008/04/jpegtokml.py">jpegtokml.py</a>.</p>
<p>Just run as <code>python jpegtokml.py</code></p>
<p>Enjoy !</p>
<p>NB: You&#8217;ll need to get the libkml cvs version &gt;= r33 for this to work</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/python/mapping-photos-2-libkml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Mapping photos</title>
		<link>http://www.melaneum.com/blog/python/mapping-photos</link>
		<comments>http://www.melaneum.com/blog/python/mapping-photos#comments</comments>
		<pubDate>Tue, 25 Mar 2008 21:29:20 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Tagging]]></category>

		<category><![CDATA[photo]]></category>

		<category><![CDATA[geotagging]]></category>

		<category><![CDATA[google map]]></category>

		<category><![CDATA[mapping]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/python/mapping-photos</guid>
		<description><![CDATA[If you&#8217;ve followed earlier intructions on tagging your photos, you now have a set of photos with the gps location information on the exif tag. As we have seen on a previous article on blog-mapping, it is pretty easy to insert Google maps on a website.

We will now see how to make the generation of [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve followed earlier intructions on <a title="geotagging" href="http://www.melaneum.com/blog/geolocation/geotagging">tagging your photos</a>, you now have a set of photos with the gps location information on the exif tag. As we have seen on a previous article on <a title="Map on blogs" href="http://www.melaneum.com/blog/geolocation/blog-mapping">blog-mapping</a>, it is pretty easy to insert Google maps on a website.</p>
<p><span id="more-36"></span></p>
<p>We will now see how to make the generation of photo map automatic with python from this set of geotagged photos. We need to generate thumbnails of the images and the kml file. Here is the idea behind the script:</p>
<ul>
<li>Loop through all jpeg files in a folder (we assume the selection is already done and that you have only the photos you want to put on the map)</li>
<li>Read the exif informations from the file</li>
<li>Generate a resized version of the image adapted to browser visualization (800 pixels) and a thumbnail (160 pixels).</li>
<li>Write the corresponding instructions in the KML file</li>
</ul>
<p>Looping through all the jpeg files in the folder is the easy part with python (<code>for fileName in os.listdir( folder ):</code> combine with a matching based on <code>fnmatch.fnmatch (fileName, '*.jpg')</code>).</p>
<p>Reading the information is done using the pyexiv2. For example:</p>
<pre>image = pyexiv2.Image(filename)

image.readMetadata()

orientation=image['Exif.Image.Orientation']</pre>
<p>We can take advantage of the powerfull PIL library to resize the images:</p>
<pre>im=Image.open(folder+'/'+fileName)

im.thumbnail(160,106)</pre>
<p>As we had easily retrieved the orientation information from the exif data, we can rotate the photos: <code>im=im.rotate(90)</code>. I choose to prefix the 800pix filename with &#8216;w&#8217; and the 160pix filename with &#8216;_thb_w&#8217; (to match my earlier <a href="http://spgm.sourceforge.net/">SPGM</a> gallery).</p>
<p>Intructions in the KML file look like that:</p>
<pre>&lt;placemark&gt;

&lt;name&gt;Photo Name&lt;/name&gt;

&lt;description&gt;

&lt;!--[CDATA[&lt;a href='http://www.website.sth/wherethefileis.jpg'

target='_blank'&gt;

&lt;img src='http://www.website.sth/wherethethumbnailis.jpg' /&gt;

&lt;/a&gt;]]--&gt;&lt;/description&gt;

&lt;styleurl&gt;#camera&lt;/styleurl&gt;

&lt;point&gt;

&lt;coordinates&gt;-159.432961,21.875480,11.0&lt;/coordinates&gt;

&lt;/point&gt;

&lt;/placemark&gt;</pre>
<p>To make this output effortlessly (almost), I just used a python file from <a href="http://code.google.com/p/gpicsync/">gpicsync</a> which is very nice but lack the feature of using directly the GPS information from the photos.</p>
<p>Here is the result:</p>
<div style="text-align: 0;"><iframe src="http://www.melaneum.com/blog/wp-content/plugins/xml-google-maps/xmlgooglemaps_show.php?kmlid=7" style="border: 0px; width: 664px; height: 400px;" name="Google KML Maps" frameborder="0"></iframe></div>
<p><a title="Photos on maps" href="http://www.melaneum.com/blog/wp-content/uploads/2008/03/doc-web.kml">Photos on maps</a></p>
<p>The full script is just two python files:</p>
<ul>
<li><a title="kmlGen.py" href="http://www.melaneum.com/blog/wp-content/uploads/2008/03/kmlgen.py">kmlGen.py</a> (modified from <a href="http://code.google.com/p/gpicsync/">gpicsync</a>)</li>
<li><a title="gmGeneration.py" href="http://www.melaneum.com/blog/wp-content/uploads/2008/03/gmgeneration.py">gmGeneration.py</a> which does the job</li>
</ul>
<p>Just edit the gmGeneration.py file to set the <code>folder</code> and <code>url</code> variables to whatever you need and run</p>
<pre>python2.5 gmGeneration.py</pre>
<p><strong>EDIT 2008-04-03</strong>: Using libkml, the script is now simplified as shown on the new post &#8220;Mapping photo using libkml&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/python/mapping-photos/feed</wfw:commentRss>
		</item>
		<item>
		<title>Geotagging</title>
		<link>http://www.melaneum.com/blog/geolocation/geotagging</link>
		<comments>http://www.melaneum.com/blog/geolocation/geotagging#comments</comments>
		<pubDate>Mon, 24 Mar 2008 21:43:18 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[Tagging]]></category>

		<category><![CDATA[photo]]></category>

		<category><![CDATA[geotagging]]></category>

		<category><![CDATA[GPS]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/geolocation/geotagging</guid>
		<description><![CDATA[Un appareil photo d&#8217;un côté, un tracker GPS de l&#8217;autre&#8230; il est tentant de combiner les info. Ce n&#8217;est pas pratique (ou même pas possible) dans la plupart des cas de connecter directement les deux appareils.

D&#8217;ici 5 ans au plus, tous les appareils photos intégreront un recepteur GPS, mais en attendant, il faut faire sans. [...]]]></description>
			<content:encoded><![CDATA[<p>Un appareil photo d&#8217;un côté, un tracker GPS de l&#8217;autre&#8230; il est tentant de combiner les info. Ce n&#8217;est pas pratique (ou même pas possible) dans la plupart des cas de connecter directement les deux appareils.</p>
<p><span id="more-34"></span></p>
<p>D&#8217;ici 5 ans au plus, tous les appareils photos intégreront un recepteur GPS, mais en attendant, il faut faire sans. Heureusement, il  y a une variable commune qui va nous permettre de lier les deux: le temps.</p>
<p>La date et l&#8217;heure sont inscrites dans les fichiers photo, plus précisement dans les données EXIF. Le GPS enregistre évidemment ces info (info de base pour lui). Il faut s&#8217;assurer que l&#8217;heure de l&#8217;appareil photo est correcte: moins de la minute d&#8217;écart si possible ou sinon il suffit d&#8217;en connaitre le décalage; garder aussi à l&#8217;esprit le fuseau horaire dans lequel on se trouve (TU+1 ou TU+2 selon la saison en France), le GPS gardant les heures en TU en général.</p>
<p>Il est plus facile de vérifier l&#8217;heure correcte des photos si ces données sont directement dans le nom. On va commencer par renommer les images (on verra plus tard qu&#8217;il y a un autre intérêt à faire ce renommage):</p>
<pre>jhead -nf%Y%m%d-%H%M%S *.jpg</pre>
<p>On peut également ajuster l&#8217;heure selon le décalage constaté de l&#8217;appareil:</p>
<pre>jhead -ta+0:05 *.jpg</pre>
<p>pour ajouter 5 min par exemple. (Ne pas oublier de refaire l&#8217;opération de renommage pour rester consistant.)</p>
<p>Les photos sont prêtes.</p>
<p>D&#8217;un autre côté, on a un fichier gpx obtenu d&#8217;un tracker GPS. Ce fichier peut contenir également des points aberrants (nombre trop faible de satellites, pas de fix, etc). On va donc commencer par filtrer ces données</p>
<pre>gpsbabel -i gpx -f track-all.gpx \
      -x discard,sat=4,fixnone,fixunknown \
      -o gpx -F track.gpx</pre>
<p>(A noter que les options fixnone et fixunknown ne sont disponible dans GPSBabel qu&#8217;après application d&#8217;un <a title="GPSBabel patch" href="http://www.melaneum.com/blog/geolocation/gpsbabel-supprimer-selon-fix">simple patch</a>.)</p>
<p>On est maintenant prêt pour utiliser l&#8217;outils <a title="gpscorrelate" href="http://freefoote.dview.net/linux_gpscorr.html" target="_blank">gpscorrelate</a>. Sous Ubuntu ou Debian, un simple <code>apt-get install gpscorrelate-gui</code> et on est paré.</p>
<p>L&#8217;utilisation est triviale: on lance l&#8217;interface <code>gpscorrelate-gui</code>, on charge les photos préparées précédemment, puis le fichier gpx, on n&#8217;oublie pas de <strong>spécifier le fuseau horaire</strong> de l&#8217;heure des photos, on clique sur le bouton correlate et ca y est. Les photos sont taggées. On peut le vérifier par la commande <code>exiftools</code> sur une des photos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/geolocation/geotagging/feed</wfw:commentRss>
		</item>
		<item>
		<title>GPSBabel: supprimer selon fix</title>
		<link>http://www.melaneum.com/blog/geolocation/gpsbabel-supprimer-selon-fix</link>
		<comments>http://www.melaneum.com/blog/geolocation/gpsbabel-supprimer-selon-fix#comments</comments>
		<pubDate>Mon, 24 Mar 2008 21:32:57 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[discard]]></category>

		<category><![CDATA[fix]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[GPSBabel]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/geolocation/gpsbabel-supprimer-selon-fix</guid>
		<description><![CDATA[GPSBabel permet de supprimer des waypoints selon le nombre de satellites en visibilité, les dillutions de précision horizontales et verticales (HDOP et VDOP), mais rien pour supprimer les points en &#60;fix&#62;none&#60;/fix&#62;.

L&#8217;ajout de l&#8217;option est plutôt simple et le patch ci-dessous a été soumis pour une inclusion dans la prochaine version de GPSBabel, en attendant, vous [...]]]></description>
			<content:encoded><![CDATA[<p>GPSBabel permet de supprimer des waypoints selon le nombre de satellites en visibilité, les dillutions de précision horizontales et verticales (HDOP et VDOP), mais rien pour supprimer les points en &lt;fix&gt;none&lt;/fix&gt;.</p>
<p><span id="more-35"></span></p>
<p>L&#8217;ajout de l&#8217;option est plutôt simple et le patch ci-dessous a été soumis pour une inclusion dans la prochaine version de GPSBabel, en attendant, vous pouvez l&#8217;appliquer vous même:</p>
<pre>
--- gpsbabel-1.3.5-beta20080217/discard.c       2008-02-06 03:29:21.000000000 +0100
+++ new/discard.c        2008-03-24 17:16:30.000000000 +0100
@@ -27,6 +27,8 @@
 static char *vdopopt = NULL;
 static char *andopt = NULL;
 static char *satopt = NULL;
+static char *fixnoneopt = NULL;
+static char *fixunknownopt = NULL;
 static double hdopf;
 static double vdopf;
 static int satpf;
@@ -43,6 +45,10 @@
                NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
        {"sat", &amp;satopt, "Minimium sats to keep waypoints",
                "-1.0", ARGTYPE_BEGIN_REQ | ARGTYPE_INT, ARG_NOMINMAX},
+       {"fixnone", &amp;fixnoneopt, "Suppress waypoints without fix",
+               NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
+       {"fixunknown", &amp;fixunknownopt, "Suppress waypoints with unknown fix",
+               NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
        ARG_TERMINATOR
 };

@@ -71,6 +77,12 @@
         if ((satpf &gt;= 0) &amp;&amp; (waypointp-&gt;sat &lt; satpf))
                del = 1;

+        if ((fixnoneopt) &amp;&amp; (waypointp-&gt;fix == fix_none))
+               del = 1;
+
+       if ((fixunknownopt) &amp;&amp; (waypointp-&gt;fix == fix_unknown))
+               del = 1;
+
        if (del) {
                switch(what) {
                        case wptdata:</pre>
<p>L&#8217;option est alors <code>-x discard,fixnone</code> ou <code>-x discard,fixunknown</code>. On peut bien sur combiner avec <code>-x discard,fixnone,fixunknown</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/geolocation/gpsbabel-supprimer-selon-fix/feed</wfw:commentRss>
		</item>
		<item>
		<title>On GoogleEarth accuracy</title>
		<link>http://www.melaneum.com/blog/geolocation/on-googleearth-accuracy</link>
		<comments>http://www.melaneum.com/blog/geolocation/on-googleearth-accuracy#comments</comments>
		<pubDate>Sun, 09 Mar 2008 16:27:01 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[accuracy]]></category>

		<category><![CDATA[google earth]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/geolocation/on-googleearth-accuracy</guid>
		<description><![CDATA[Google Earth is becoming commonly used for many applications but what about it&#8217;s accuracy? Is a point in Google Earth (or Google map, since this is the same images) really is where it seems to be?

The first inaccuracy source is  that Google seems to round decimal latitude and longitude to 10^-6. That&#8217;s about 10 [...]]]></description>
			<content:encoded><![CDATA[<p>Google Earth is becoming commonly used for many applications but what about it&#8217;s accuracy? Is a point in Google Earth (or Google map, since this is the same images) really is where it seems to be?</p>
<p><span id="more-32"></span></p>
<p>The first inaccuracy source is  that Google seems to round decimal latitude and longitude to 10^-6. That&#8217;s about 10 cm on the ground.</p>
<p>The second source of error depends on the processing of each satellite or aerial image. This is a process called orthorectification and its accuracy can vary widely. This error will depend on the area you&#8217;re looking at in Google Earth. You probably won&#8217;t have the same accuracy in Europe and Africa as it can depend on the digital elevation model (DEM) of the area.</p>
<p>If you know precisely the coordinates of a particular point that you can see on Google images, you can evaluate the accuracy on this area. Let&#8217;s see an example with a reference geodesic point.</p>
<p align="center">
<div style="text-align: 0;"><iframe src="http://www.melaneum.com/blog/wp-content/plugins/xml-google-maps/xmlgooglemaps_show.php?kmlid=5" style="border: 0px; width: 664px; height: 400px;" name="Google KML Maps" frameborder="0"></iframe></div>
<p><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/03/reference.kml" title="Reference geodesic point">Reference geodesic point </a></p>
<p>Zoom to the maximum: with a perfect orthorectification the blue mark should be exactly on the center of the white square. This is not the case, so we know that for this area we have an accuracy of about 1-2 meters.</p>
<p>This accuracy can be considered as quite good already (not enough though to be used as a reference) but probably worsen in mountainous areas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/geolocation/on-googleearth-accuracy/feed</wfw:commentRss>
		</item>
		<item>
		<title>Blog-mapping</title>
		<link>http://www.melaneum.com/blog/geolocation/blog-mapping</link>
		<comments>http://www.melaneum.com/blog/geolocation/blog-mapping#comments</comments>
		<pubDate>Tue, 04 Mar 2008 20:44:19 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[googlemap]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[kml]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/geolocation/blog-mapping</guid>
		<description><![CDATA[Once you got you&#8217;re own kml files from your GPS (as illustrated before), you may want to display them as :


One track example
To do that, you need to register to get your own Google API key and install the XML Google Maps plugin. Once you&#8217;ve done that, upload the kml file, link it and you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>Once you got you&#8217;re own kml files from your GPS (as <a href="http://www.melaneum.com/blog/geolocation/gps-tracks" title="GPS: from hardware to data">illustrated before</a>), you may want to display them as :</p>
<p><span id="more-28"></span></p>
<div style="text-align: 0;"><iframe src="http://www.melaneum.com/blog/wp-content/plugins/xml-google-maps/xmlgooglemaps_show.php?kmlid=1" style="border: 0px; width: 664px; height: 400px;" name="Google KML Maps" frameborder="0"></iframe></div>
<p><a href="http://www.melaneum.com/blog/wp-content/uploads/2008/03/ontheweb.kml" title="Track">One track example</a></p>
<p>To do that, you need to register to get your own <a href="http://code.google.com/apis/maps/signup.html" title="Google API Key">Google API key</a> and install the <a href="http://wordpress.org/extend/plugins/xml-google-maps/" title="XML Google Maps plugin">XML Google Maps</a> plugin. Once you&#8217;ve done that, upload the kml file, link it and you&#8217;re done.</p>
<p>So simple that I&#8217;m speechless&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/geolocation/blog-mapping/feed</wfw:commentRss>
		</item>
		<item>
		<title>De la trace GPS à la carte</title>
		<link>http://www.melaneum.com/blog/geolocation/de-la-trace-gps-a-la-carte</link>
		<comments>http://www.melaneum.com/blog/geolocation/de-la-trace-gps-a-la-carte#comments</comments>
		<pubDate>Tue, 04 Mar 2008 20:04:25 +0000</pubDate>
		<dc:creator>Melaneum</dc:creator>
		
		<category><![CDATA[Geolocation]]></category>

		<category><![CDATA[GPS]]></category>

		<category><![CDATA[mapping]]></category>

		<guid isPermaLink="false">http://www.melaneum.com/blog/geolocation/de-la-trace-gps-a-la-carte</guid>
		<description><![CDATA[Une fois que vous avez récupéré des traces GPS dans le monde entier (en utilisant cet appareil par exemple), vous commencez à vous demander ce que vous aller bien pouvoir en faire. Imaginez des milliers (des millions ?) de personnes se baladant autour du monde avec un GPS et mettant toutes ces traces sur un [...]]]></description>
			<content:encoded><![CDATA[<p>Une fois que vous avez récupéré des traces GPS dans le monde entier (en utilisant <a href="http://www.melaneum.com/blog/geolocation/gps-tracks" title="GPS: from hardware to data">cet appareil</a> par exemple), vous commencez à vous demander ce que vous aller bien pouvoir en faire. Imaginez des milliers (des millions ?) de personnes se baladant autour du monde avec un GPS et mettant toutes ces traces sur un site. Est-ce qu&#8217;on n&#8217;aurait pas une bonne couverture ?</p>
<p><span id="more-26"></span></p>
<p>Et bien&#8230; des gens se sont déjà posé la question avant vous et ils ont créé <a href="http://www.openstreetmap.org/" title="Open Street Map" target="_blank">Open Street Map</a>. Le résultat est plutôt impressionnant.</p>
<p>Voyons voir comment contribuer&#8230;</p>
<h3>Etape Intellectuelle: l&#8217;optimisation</h3>
<p>Si vous aimez les challenges logiques, réfléchissez avant pour trouver le chemin optimal qui permet de parcourir toutes les rues avec le minimum de distance. Hum&#8230; en fait pour faire ca il faut une carte (cf étape 4).</p>
<h3>Etape Sportive: le terrain</h3>
<p>En vélo, c&#8217;est l&#8217;étape sportive de l&#8217;affaire: on trouve une zone avec une pente suffisante, de préférence non cartographiée et on fait toutes les rues dans un rayon de 500m, ca fait pas très loin, mais pas mal de distance parcourue.</p>
<p>Par exemple ca:</p>
<p align="center"><img src="http://www.melaneum.com/blog/wp-content/uploads/2008/03/trace.gif" alt="Trace" /></p>
<h3>Etape Technique: récupération des données</h3>
<p>Cf un <a href="http://www.melaneum.com/blog/geolocation/gps-tracks" title="GPS: from hardware to data">post précédent</a> pour sortir les données du tracker GPS. Générez un fichier gpx et un kml, ca servira.</p>
<p>Ouverture du fichier kml sous Google Earth, repérage du début et de la fin de la trace à uploader. Il faut repérer les heures (à la seconde près). Et extraction de la partie intéressante du fichier gpx:</p>
<pre>
gpsbabel -t -i gpx -f GPSDATA-20080225.gpx \
  -x track,start=20080225071441,stop=20080227 \
  -o gpx -F GPSDATA-20080225-new.gpx</pre>
<p>Ensuite connexion à http://www.openstreetmap.org, login, upload du dernier fichier gpx.</p>
<h3>Etape Artistique: le dessin</h3>
<p>Laissez libre court à votre imagination pour dessiner les rues parcourues par dessus vos traces GPS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.melaneum.com/blog/geolocation/de-la-trace-gps-a-la-carte/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
