<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>spatial nodes</title>
	<atom:link href="http://blog.minst.net/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.minst.net</link>
	<description>Thoughts of a lost soul</description>
	<lastBuildDate>Tue, 22 Dec 2009 21:13:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creating a timelapse movie with ubuntu</title>
		<link>http://blog.minst.net/2009/12/22/creating-a-timelapse-movie-with-ubuntu</link>
		<comments>http://blog.minst.net/2009/12/22/creating-a-timelapse-movie-with-ubuntu#comments</comments>
		<pubDate>Tue, 22 Dec 2009 21:13:43 +0000</pubDate>
		<dc:creator>wordpress</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[home]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[timelapse]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=201</guid>
		<description><![CDATA[It has been a while since I made my last timelapse movie and I figured that today was a good day to check the status of linux and timelapsing. A quick google gave me gTimelapse which should allow my to use my dSLR as a timelapse camera. This would give me two advantages over my [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a while since I made my last timelapse movie and I figured that today was a good day to check the status of linux and timelapsing. A quick google gave me <a href="http://ultrawide.wordpress.com/2009/01/27/timelapse-photography-on-linux/">gTimelapse</a> which should allow my to use my dSLR as a timelapse camera. This would give me two advantages over my old set-up (and one disadvantage). My old set-up was a Nikon S4 with a power adapter and a reasonably big SD card. Having a power adapter meant that I could leave it running for months, which gave me for instance:</p>
<p><a href="http://blog.minst.net/2009/12/22/creating-a-timelapse-movie-with-ubuntu"><em>Click here to view the embedded video.</em></a></p>
<p>But the minimum interval is 30 seconds, making it useless for timelapses of people moving about. Also the quality of the sensor and the lens is not as good as my dSLR. With gTimelapse I can control the interval to anything I like. gTimelapse is rather new so there&#8217;s a bit of fiddling involved, to be able to build it under ubuntu 9.10 you need these packages:</p>
<p><code>sudo apt-get install build-essential libgphoto2-2-dev libwxbase2.8-dev libwxgtk2.8-dev</code></p>
<p>From then on it is pretty straight forward, connect your camera (make sure it is in PTP mode) also ubuntu nowadays mounts it automagically, gTimelapse doesn&#8217;t like that. So unmount the camera using the filemanager and start gTimelapse. Depending on your camera you get all kinds of settings you can fiddle with. (side note I discovered that if you first start gTimelapse and than attach the camera none of the settings appear, but the application still works). Once you&#8217;re happy you can press start and sit back.</p>
<p>Creating a movie is still a lot more complicated I&#8217;m afraid. I still haven&#8217;t found a decent movie editor for linux. Kino is nice but only supports DV camera&#8217;s as far as I can tell, dragging something non-DV gives an eternal Kino Import progress bar kdenlive looks promising, but it kept freezing so I gave up on it for the moment. To just get a short movie I threw mencoder at them:</p>
<p><code>mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2 -o test5.avi -mf type=jpeg:fps=5 mf://@files.txt </code></p>
<p>Where files.txt was a list of the filenames of all the images I wanted to include. This resulted in this movie:</p>
<p><a href="http://blog.minst.net/2009/12/22/creating-a-timelapse-movie-with-ubuntu"><em>Click here to view the embedded video.</em></a></p>
<p>This means it possible to create timelapse movies with linux, but postprocessing is still difficult. The next timelapse project I&#8217;ll probably shoot with linux and edit on my mac <img src='http://blog.minst.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/12/22/creating-a-timelapse-movie-with-ubuntu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing gps tracks with Processing</title>
		<link>http://blog.minst.net/2009/12/21/visualizing-gps-tracks-with-processing</link>
		<comments>http://blog.minst.net/2009/12/21/visualizing-gps-tracks-with-processing#comments</comments>
		<pubDate>Mon, 21 Dec 2009 15:04:21 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[Processing]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=198</guid>
		<description><![CDATA[At work we got an i-gotU (a GPS logger) as a Christmas present. To show what one can do with it I decided to ask a few people to use their i-gotU to record their travels for two weeks. This resulted in over 42000 locations done by 8 different persons. Each person got his/her own [...]]]></description>
			<content:encoded><![CDATA[<p>At work we got an <a href="http://www.i-gotu.com/">i-gotU</a> (a GPS logger) as a Christmas present. To show what one can do with it I decided to ask a few people to use their i-gotU to record their travels for two weeks. This resulted in over 42000 locations done by 8 different persons. Each person got his/her own color in the visualization to be able to see when people were near one another. Since the office is in Amsterdam and most people live in (different parts of) Amsterdam you can quickly see the contours of Amsterdam&#8217;s city-plan appear. Also interestingly is to note that people have their own specific areas where they spend most of their time.</p>
<p>To visualize these tracks I used <a href="http://processing.org/">Processing</a>, &#8216;an open source programming language and environment for people who want to program images, animation, and interactions.&#8217;  There are lots of plugins to read different data formats, an interesting one for this project is the <a href="http://processing.org/hacks/hacks:gpx">gpx library</a>. The plan was to render the tracks of each person in a different color, tracks which happened at the same time should be drawn at the same time. This way you can see which people are at the same time at the same location. Each track would fade out in time, leaving a thin line for past tracks.</p>
<p>To do this on a track-basis however turned out to be quite difficult for my limited knowledge of Processing and the time I had available. So instead of using the gpx module I created a flat table with all locations sorted by time. Each row of the table contains lon,lat,color-id,time. The program iterates through all 42000+ rows and draws the locations as a dot. The size of the dot depends on how &#8216;old&#8217; the point is. The last 200 points are drawn with a diminishing size, creating the worm-like effect in the animation. Note that it doesn&#8217;t take into account the actual time between points, just if it is next in line.</p>
<p>A few tweaks were added: Holland in unprojected lat-lon looks odd to dutch people, so I implemented a simple projection library to reproject the points to a semi-RD (dutch projection). Also I wanted to dynamically zoom to the action (not everything was happening in Amsterdam). I did this by calculating the minimum and maximum X and Y for the last 200 points. I wanted the location of our office building to be in view all the time, to provide a point of reference.</p>
<p>The source code can be found <a href="http://blog.minst.net/wp-content/uploads/2009/12/drawing.zip">here </a>if you are really interested. There are three files: Table.pde as written by Ben Fry for his book Visualizing Data, Soprojection.pde, written by <a href="http://blog.geodeo.nl/">Steven Fruijtier</a> at my request and Drawing.pde is hacked together by me. This is a very crude and brute-force approach to render a series of tracks, so please use it with care. Since it needs to recalculate each point for each frame it tends to become slower as it advances through the table.</p>
<p><a href="http://blog.minst.net/2009/12/21/visualizing-gps-tracks-with-processing"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/12/21/visualizing-gps-tracks-with-processing/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perceived WCS inaccuracy</title>
		<link>http://blog.minst.net/2009/12/09/perceived-wcs-inaccuracy</link>
		<comments>http://blog.minst.net/2009/12/09/perceived-wcs-inaccuracy#comments</comments>
		<pubDate>Wed, 09 Dec 2009 12:03:56 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Deegree]]></category>
		<category><![CDATA[Geoserver]]></category>
		<category><![CDATA[Mapserver]]></category>
		<category><![CDATA[WCS]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=178</guid>
		<description><![CDATA[Working with WCS I discovered a small but noticable shift of data in all three major OSS WCS applications:

 Geoserver 2.0 (SNAPSHOT downloaded 8 december 10.19UTC)
 Mapserver 5.6.0 (MS4W Base installer v3.0 Beta 7 + MapServer 5.6.0 release Upgrade)
 Deegree 2.3rc1 (Apache Tomcat 5.5.28)

To find out what the problem exactly was I&#8217;ve done some testing. [...]]]></description>
			<content:encoded><![CDATA[<p>Working with WCS I discovered a small but noticable shift of data in all three major OSS WCS applications:</p>
<ul>
<li> Geoserver 2.0 (SNAPSHOT downloaded 8 december 10.19UTC)</li>
<li> Mapserver 5.6.0 (MS4W Base installer v3.0 Beta 7 + MapServer 5.6.0 release Upgrade)</li>
<li> Deegree 2.3rc1 (Apache Tomcat 5.5.28)</li>
</ul>
<p>To find out what the problem exactly was I&#8217;ve done some testing. I&#8217;ve taken a GeoTiff and configured all three the WCS applications to serve it. Gdalinfo gives us the following <a title="gdalinfo" href="http://blog.minst.net/wp-content/uploads/2009/12/gdalinfo.txt" target="_blank">information</a>, basically it is a GeoTIFF in epsg:3035 with a native resolution of 100m/pixel.</p>
<p>My test sequence was:</p>
<ol>
<li>request the full extent in native resolution</li>
<li>request the full extent in a 10th of the resolution</li>
<li>request the full extent with the same size as the original data (256&#215;256)</li>
<li>request part of the data in native resolution</li>
<li>request part of the data in non-native, non-multiple resolution</li>
</ol>
<p>I&#8217;m not going to show all the results here, because that would result in an unhealthy long document <img src='http://blog.minst.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>To verify the results I loaded the original GeoTiff in Quantum GIS and highlighted a specific feature to show the possible offset of the different results.</p>
<blockquote>
<pre><!--
		@page { size: 8.5in 11in; margin: 0.79in }
		P { margin-bottom: 0.08in }
--></pre>
</blockquote>
<div id="attachment_179" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/basicdata.png"><img class="size-full wp-image-179" title="basicdata" src="http://blog.minst.net/wp-content/uploads/2009/12/basicdata.png" alt="Corine GeoTiff" width="590" height="548" /></a><p class="wp-caption-text">Corine GeoTiff</p></div>
<h3>1  request the full extent in native resolution:</h3>
<p>deegree: http://localhost:8080/deegree-wcs1/services?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;resx=100&amp;resy=100&amp;format=GeoTIFF gives a three band(!) GeoTiff of 262,674 bytes with a shift of around 40m:</p>
<div id="attachment_181" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/deegreefull.png"><img class="alignnone size-full wp-image-180" title="deegreefull" src="http://blog.minst.net/wp-content/uploads/2009/12/deegreefull.png" alt="deegreefull" width="590" height="548" /></a><p class="wp-caption-text">Deegree result</p></div>
<p>MapServer: http://localhost/cgi-bin/mapserver56/mapserv.exe?map=maps/corine.map&amp;service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;resx=100&amp;resy=100&amp;format=GTiff gives a three band(!) GeoTiff of 197,477 bytes without a shift:</p>
<div id="attachment_182" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/mapserverfull.png"><img class="size-full wp-image-182" title="mapserverfull" src="http://blog.minst.net/wp-content/uploads/2009/12/mapserverfull.png" alt="Mapserver result" width="590" height="548" /></a><p class="wp-caption-text">Mapserver result</p></div>
<p>GeoServer: http://localhsot:8081/geoserver/ows?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=corine_merge_gtiff_proj_121_108&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;resx=100&amp;resy=100&amp;format=GeoTiff gives a single band GeoTiff of 8,848 bytes with a shift of  around 50m:</p>
<p style="margin-bottom: 0in;">
<div id="attachment_183" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/geoserverfull.png"><img class="size-full wp-image-183" title="geoserverfull" src="http://blog.minst.net/wp-content/uploads/2009/12/geoserverfull.png" alt="Geoserver result" width="590" height="548" /></a><p class="wp-caption-text">Geoserver result</p></div>
<h3>Note:</h3>
<p>Deegree both shifts the data and returns a multi-band image; Mapserver doesn&#8217;t shift the data, but returns a multi-band image; Geoserver shifts the data 1/2 a pixel (50m), but does give a single band image.</p>
<h3>2. request the full extent in a 10th of the resolution</h3>
<p>deegree: http://localhost:8080/deegree-wcs1/services?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;resx=10&amp;resy=10&amp;format=GeoTIFF produces a 26,237,726 multi band GeoTiff which shifts the data the other way than the first request:</p>
<div id="attachment_184" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/deegreetenth.png"><img class="size-full wp-image-184" title="deegreetenth" src="http://blog.minst.net/wp-content/uploads/2009/12/deegreetenth.png" alt="Deegree result on a tenth of the resolution" width="590" height="548" /></a><p class="wp-caption-text">Deegree result on a tenth of the resolution</p></div>
<p>Mapserver: <!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } -->http://localhost/cgi-bin/mapserver56/mapserv.exe?map=maps/corine.map&amp;service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;resx=10&amp;resy=10&amp;format=GTiff produces a multi-band GeoTiff of 19,681,941 bytes with no shift.</p>
<p>Geoserver: http://localhost:8081/geoserver/ows?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=corine_merge_gtiff_proj_121_108&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;resx=10&amp;resy=10&amp;format=GeoTiff gives a single band GeoTiff of 158,802 bytes with a shift of around 50m, though there is a small difference with the previous result.</p>
<h3>Note:</h3>
<p>Mapserver and Geoserver both produce a bigger result  (as expected) with the same location as the previous request. Deegree shifts the data differently than previously and also produces a bigger result.</p>
<p style="margin-bottom: 0in;">
<h3>3. request the full extent with the same size as the original data (256&#215;256)</h3>
<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;">geoserver: http://localhost:8081/geoserver/ows?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=corine_merge_gtiff_proj_121_108&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;width=256&amp;height=256&amp;format=GeoTiff produces exactly the same image as in the first request.</p>
<p style="margin-bottom: 0in;">mapserver: http://localhost/cgi-bin/mapserver56/mapserv.exe?map=maps/corine.map&amp;service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;width=256&amp;height=256&amp;format=GTiff produces exactly the same image as in the first request.</p>
<p style="margin-bottom: 0in;">deegree: http://localhost:8080/deegree-wcs1/services?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;crs=EPSG:3035&amp;BBOX=3539200,3402400,3564800,3428000&amp;width=256&amp;height=256&amp;format=GeoTIFF produces a slightly smaller image than the first request (262,674 bytes) with no shift!.</p>
<p style="margin-bottom: 0in;">
<div id="attachment_189" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/deegreefixedsize.png"><img class="size-full wp-image-189" title="deegreefixedsize" src="http://blog.minst.net/wp-content/uploads/2009/12/deegreefixedsize.png" alt="Deegree result with width en height" width="590" height="548" /></a><p class="wp-caption-text">Deegree result with width en height</p></div>
<h3>Note:</h3>
<p>Since the request is a different way of describing the same data one would expect that you get the same results. Mapserver and Geoserver do so, Deegree does not, somehow using resx and resy in the request results in shifted data.</p>
<h3>4. request part of the data in native resolution</h3>
<p>deegree: http://localhost:8080/deegree-wcs1/services?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;resx=100&amp;resy=100&amp;crs=EPSG:3035&amp;BBOX=3550000,3413200,3554000,3417200&amp;format=GeoTIFF has the correct left-top location but the size of the pixels is wrong, producing a shift of the data which increases as you go right/down:</p>
<div id="attachment_185" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/deegreepart.png"><img class="size-full wp-image-185" title="deegreepart" src="http://blog.minst.net/wp-content/uploads/2009/12/deegreepart.png" alt="Deegree result for a part request" width="590" height="548" /></a><p class="wp-caption-text">Deegree result for a part request</p></div>
<p>geoserver: http://localhost:8081/geoserver/ows?service=WCS&amp;request=GetCoverage&amp;format=GeoTiff&amp;version=1.0.0&amp;coverage=geodan:Corine&amp;resx=100&amp;resy=100&amp;crs=EPSG:3035&amp;BBOX=3550000,3413200,3554000,3417200 produces an image with almost exactly the same shift as the first request.<br />
mapserver: http://localhost/cgi-bin/mapserver56/mapserv.exe?map=maps/corine.map&amp;service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;resx=100&amp;resy=100&amp;crs=EPSG:3035&amp;BBOX=3550000,3413200,3554000,3417200&amp;format=GTiff produces an image with almost exactly the same location as the first request.</p>
<h3>Note:</h3>
<p>Mapserver and Geoserver shift (or not) the data similar to the first request, Deegree has once again a different shift than any of the previous ones.</p>
<h3>5. request part of the data in non-native, non-multiple resolution</h3>
<p>deegree: http://localhost:8080/deegree-wcs1/services?service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;resx=30.0&amp;resy=30.0&amp;crs=EPSG:3035&amp;BBOX=3550000,3413200,3554000,3417200&amp;format=GeoTIFF shifts data:</p>
<div id="attachment_186" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/deegreepartnonnative.png"><img class="size-full wp-image-186" title="deegreepartnonnative" src="http://blog.minst.net/wp-content/uploads/2009/12/deegreepartnonnative.png" alt="Deegree result for non native, non multiple resolution" width="590" height="548" /></a><p class="wp-caption-text">Deegree result for non native, non multiple resolution</p></div>
<p>geoserver: http://localhost:8081/geoserver/ows?service=WCS&amp;request=GetCoverage&amp;format=GeoTiff&amp;version=1.0.0&amp;coverage=geodan:Corine&amp;resx=30.0&amp;resy=30.0&amp;crs=EPSG:3035&amp;BBOX=3550000,3413200,3554000,3417200 shifts data and adds a black border to the left and top of the result:</p>
<div id="attachment_187" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/geoserverpartnonnative.png"><img class="size-full wp-image-187" title="geoserverpartnonnative" src="http://blog.minst.net/wp-content/uploads/2009/12/geoserverpartnonnative.png" alt="Geoserver result for non-native, non-multiple resolution" width="590" height="548" /></a><p class="wp-caption-text">Geoserver result for non-native, non-multiple resolution</p></div>
<p>mapserver: http://localhost/cgi-bin/mapserver56/mapserv.exe?map=maps/corine.map&amp;service=WCS&amp;version=1.0.0&amp;request=GetCoverage&amp;coverage=Corine&amp;resx=30.0&amp;resy=30.0&amp;crs=EPSG:3035&amp;BBOX=3550000,3413200,3554000,3417200&amp;format=GTiff shifts data:</p>
<div id="attachment_188" class="wp-caption alignnone" style="width: 600px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/mapserverpartnonnative.png"><img class="size-full wp-image-188" title="mapserverpartnonnative" src="http://blog.minst.net/wp-content/uploads/2009/12/mapserverpartnonnative.png" alt="Mapserver result for non-native, non-multiple resolution" width="590" height="548" /></a><p class="wp-caption-text">Mapserver result for non-native, non-multiple resolution</p></div>
<h3>Note:</h3>
<p>This request was my initial prompt to find out why all WCS applications shift the data in the results. However this is a false conclusion. What&#8217;s happening here is that the service has to extract 30m wide pixels from 100m wide source data, since 100 divided by 30 isn&#8217;t a whole number it will add the remaining 10m in an adjacent pixel. If you overlay the result and the source data you get a pixel problem, data of source pixel 2 will most likely end up in result pixel b, which is partly over source pixel 1, resulting in a data shift:</p>
<div id="attachment_190" class="wp-caption alignnone" style="width: 311px"><a href="http://blog.minst.net/wp-content/uploads/2009/12/pixelproblem.png"><img class="size-full wp-image-190" title="pixelproblem" src="http://blog.minst.net/wp-content/uploads/2009/12/pixelproblem.png" alt="Overlapping 100m with 30m" width="301" height="229" /></a><p class="wp-caption-text">Overlapping 100m with 30m</p></div>
<h2>Conclusion:</h2>
<p>Geoserver has a <span style="text-decoration: line-through;">bug </span>feature which offsets all the results by half a pixel,<span style="text-decoration: line-through;"> this is a known issue with the definition of the location of a pixel</span>. Added to this there&#8217;s the no-data border which appears with non-native, non-multiple requests.<span style="text-decoration: line-through;"> I presume that will be gone once the pixel issue is resolved.</span> (update: apparently I&#8217;ve misunderstood the Geoserver developers; there&#8217;s an issue between pixel placement according to standards and real world implementations, where Geoserver adheres to the standard).</p>
<p>Mapserver doesn&#8217;t offset the data unless it is physically impossible (non-native, non-multiple resolutions, extents which don&#8217;t snap to source data) but produces<span style="text-decoration: line-through;"> a multi-band</span> (this was a configuration issue, thanks to FrankW for spotting this &#8211; proper config is IMAGEMODE BYTE) geotiff where the source data is single band.</p>
<p>Deegree has a bug which offsets some of the results, but I don&#8217;t know what causes it and although it is resolution-related I don&#8217;t see a pattern. It also produces a multi-band geotiff instead of a single band.</p>
<p style="margin-bottom: 0in;">Configuration files and source data can be found <a href="http://dl.dropbox.com/u/175548/data.zip">here</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-top: 0.17in; page-break-before: always; page-break-after: avoid;"><span style="font-family: Arial,sans-serif;"><span style="font-size: medium;">Geoserver 2.0 SNAPSHOT downloaded 8 december 10.19 UTC </span></span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/12/09/perceived-wcs-inaccuracy/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Surface glitches</title>
		<link>http://blog.minst.net/2009/02/18/surface-glitches</link>
		<comments>http://blog.minst.net/2009/02/18/surface-glitches#comments</comments>
		<pubDate>Wed, 18 Feb 2009 11:26:43 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[TableTop]]></category>
		<category><![CDATA[bastet]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Surface]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=169</guid>
		<description><![CDATA[We&#8217;ve got the surface for a while now and have written our first real application. It is based on BruTile and allows you to show various maps, zoom and pan. We created a short movie to show it:
BruTile @ the Surface
Once we got the basics running I tried to edit the XAML to make it [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve got the surface for a while now and have written our first real application. It is based on <a href="http://www.codeplex.com/brutile">BruTile </a>and allows you to show various maps, zoom and pan. We created a short movie to show it:</p>
<p><a href="http://www.youtube.com/watch?v=Fawfagg-BIg">BruTile @ the Surface</a></p>
<p>Once we got the basics running I tried to edit the XAML to make it look better. This turned out to be harder than expected. The surface has once again its own default designs, which in my opinion are worse than the WPF standard designs. The default look is grey and square. So I wanted to change it to something more akin to our other touchtable applications: white and round. However <a href="http://pauldendulk.com/">Paul </a>used a ScatterView component to display the layerlist and the geodan logo. He had read that one can just drop components in a ScatterView, without the need to embed them in ScatterViewItems. This is true, but it is a nightmare for the (non-initiated) designer. What happens is that the grey-square design of the ScatterViewItem is drawn beneath any layout you come up with for your own item. This is a very puzzling behaviour, although not entirely unexpected once you know that the ScatterViewItem exists.</p>
<p>Once I solved this issue I could seriously try to change the layout of the ScatterViewItems. Here however real glitches appeared. We use rounded borders and dropshadows for our items. As you can see below there are (at least) two issues:</p>
<div id="attachment_171" class="wp-caption alignnone" style="width: 603px"><a href="http://blog.minst.net/wp-content/uploads/2009/02/surface-artefact1.png"><img class="size-full wp-image-171" title="surface-artefact1" src="http://blog.minst.net/wp-content/uploads/2009/02/surface-artefact1.png" alt="Rounded border on the Surface don't work" width="593" height="491" /></a><p class="wp-caption-text">Rounded border on the Surface don&#39;t work</p></div>
<p>The dark rectangle in the top of the image is actually a shadow of  a ScatterViewItem which for some reason doesn&#8217;t start below it. However this makes it easy to see the first glitch in the rendering. As you can see there is a thin dark line near the edge, which makes a weird square corner at the corner. This shouldn&#8217;t be there and when you resize the ScatterViewItem down, the shadow becomes darker (as it should have been in the first place) and the line is not visible anymore. If you don&#8217;t use rounded corners on the shadow the line is still there, but harder to notice because it is exactly following the edge of the shadow.</p>
<p>The second annoying glitch I&#8217;ve found is the gap between the border and the content. If we zoom in a bit on the layercontrol you can see there is a pixel space between the border and the content:</p>
<div id="attachment_170" class="wp-caption alignnone" style="width: 603px"><a href="http://blog.minst.net/wp-content/uploads/2009/02/surface-artefact2.png"><img class="size-full wp-image-170" title="surface-artefact2" src="http://blog.minst.net/wp-content/uploads/2009/02/surface-artefact2.png" alt="A gap between border and content" width="593" height="225" /></a><p class="wp-caption-text">A gap between border and content</p></div>
<p>So far I haven&#8217;t been able to eliminate the pixel wide gap. It doesn&#8217;t look bad in our application right now, but in general it is bad that there is such an uncontrollable gap. So I have the feeling that the Surface people are not a big fan of borders in general and rounded border specifically. <img src='http://blog.minst.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/02/18/surface-glitches/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WFS 1.1.0, GML 3.1.1 and OpenLayers</title>
		<link>http://blog.minst.net/2009/01/22/wfs-110-gml-311-and-openlayers</link>
		<comments>http://blog.minst.net/2009/01/22/wfs-110-gml-311-and-openlayers#comments</comments>
		<pubDate>Thu, 22 Jan 2009 17:55:51 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[GIS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[OpenLayers]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=162</guid>
		<description><![CDATA[In the INSPIRE framework we are working on the ESDIN project and are using the EuroGeoNames (EGN) project as an implementation of ESDIN. INSPIRE is a big thing within the GIS world in Europe and loads of documents have been written so far.
We&#8217;re involved in both ESDIN and EGN and we decided to use the [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://www.inspire-geoportal.eu/">INSPIRE </a>framework we are working on the <a href="http://www.esdin.eu/">ESDIN </a>project and are using the <a href="http://www.inspire-geoportal.eu/">EuroGeoNames </a>(EGN) project as an implementation of ESDIN. INSPIRE is a big thing within the GIS world in Europe and loads of documents have been written so far.</p>
<p>We&#8217;re involved in both ESDIN and EGN and we decided to use the latter as a trial for the first. Together with our partners we&#8217;ve setup a series of servers to fulfill the needs of the projects. The main standard used is the latest WFS and GML versions, which have the annoying disadvantage that there are few clients available.</p>
<p>To be able to show nicely (as in not an XML file) that everything worked I was asked to build a webclient which would show a map and the data from the EGN service for that area. I figured that this was once again a good reason to look into the latest developments for OpenLayers. I quickly discovered that the released version (2.7) doesn&#8217;t support WFS 1.1.0 so I asked on the mailinglist if people already tried to implement it (and if not, pointers how to do so). Luckily people already did the work and created various patches for the support. (thanks tschaub, bartvde and others)</p>
<p>The most important patch is the one which implements protocols for WFS: ticket <a href="http://trac.openlayers.org/ticket/1648">1648 </a>and its <a href="http://trac.openlayers.org/attachment/ticket/1648/wfs.patch">wfs.patch</a> The main disadvantage of this patch was in my case that it tried to minimise the number of requests to the WFS server (which in general is a good thing). It requests all the features which are within twice the size of the viewport and it doesn&#8217;t request new features when you zoom in. However our server is limited to 10 features per request this results in very interesting behavior. For a starter all the 10 feature could be outside your viewport and also very funny is that shown feature might dissappear when you move the page too much (it requests new features in that case and the first 10 might be outside the viewport). A second <a href="http://trac.openlayers.org/attachment/ticket/1830/resFactor.patch">patch</a>, on ticket <a href="http://trac.openlayers.org/ticket/1830">1830</a>, provided a more aggressive feature update: each zoom action triggers a new request and I set the request-boundingbox-ratio to 1, meaning only those feature within the viewport are requested. This means that every action triggers a new request, which is heavy on the server.</p>
<p>However this is just a reference implementation and hopefully for actual implementations they remove the 10 feature limit. For those interested the reference implementation can be found at <a href="http://research.geodan.nl/egn">http://research.geodan.nl/egn</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/01/22/wfs-110-gml-311-and-openlayers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working Microsoft Surface</title>
		<link>http://blog.minst.net/2009/01/20/working-microsoft-surface</link>
		<comments>http://blog.minst.net/2009/01/20/working-microsoft-surface#comments</comments>
		<pubDate>Tue, 20 Jan 2009 11:16:53 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[TableTop]]></category>
		<category><![CDATA[user interaction]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Surface]]></category>
		<category><![CDATA[werk]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=155</guid>
		<description><![CDATA[Happy as we were with our new Surface we forgot the basic rule of Windows related problems; reboot if in trouble.
We spend quite some time calibrating, recalibrating and reading documentation from the invite only Microsoft site without any effect. In the end Vista asked us to install an update and to reboot the Surface. When [...]]]></description>
			<content:encoded><![CDATA[<p>Happy as we were with our new Surface we forgot the basic rule of Windows related problems; reboot if in trouble.</p>
<p>We spend quite some time calibrating, recalibrating and reading documentation from the invite only Microsoft site without any effect. In the end Vista asked us to install an update and to reboot the Surface. When it was rebooted we ran the &#8216;Surface Shell&#8217; application from the Desktop and suddenly it worked!!</p>
<p>The Surface, or at least our version, comes with a set of code examples. We tried several to see how well it works and found out that especially the Grand Piano demo is a crowd drawer (mainly due to the sound probably). The Piano is a limited set of piano keys in perspective view. &#8216;Pressing&#8217; a key results in a tone, just like a real piano <img src='http://blog.minst.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="wp-caption alignnone" style="width: 512px"><a href="http://farm4.static.flickr.com/3434/3209077185_afb64c9931_b.jpg"><img title="Grand Piano on the Surface" src="http://farm4.static.flickr.com/3434/3209077185_afb64c9931_b.jpg" alt="Playing piano on a Surface" width="502" height="335" /></a><p class="wp-caption-text">Playing piano on a Surface</p></div>
<p>The sensitivity of the Surface is well balanced. The Surface doesn&#8217;t notice fingers which are hovering just above the surface and you don&#8217;t need to apply any pressure to get noticed once you touch it. We&#8217;ve built our own table using a similar <a href="http://en.wikipedia.org/wiki/Total_internal_reflection#Frustrated_total_internal_reflection">FTIR</a> technique and we had quite some problems getting that balance right. Also the Surface is using 5 camera&#8217;s where we used just one as such it&#8217;s resolution is better as well.</p>
<p>It has additional logic in the interpretation of the camera feeds. It has three different types of touches it can recognize: finger, blob and tag. From each type it gives a location, an orientation, an id and in case of the tags a value.</p>
<div id="attachment_156" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/20090120-20090120-_dsc0004.jpg"><img class="size-medium wp-image-156" title="Finger touch" src="http://blog.minst.net/wp-content/uploads/2009/01/20090120-20090120-_dsc0004-300x200.jpg" alt="Surface information of a finger" width="300" height="200" /></a><p class="wp-caption-text">Surface information of a finger</p></div>
<p>The difference between a blob and a finger is the size and shape of the touch, for instance a small square object is seen as a blob and a larger oval object is seen as a finger. Furthermore the earlier white-only bias of the Surface we experienced is now changed to a no-black bias. This gives some interesting results; a black/orange marker on the surface is recognized as a single finger at the tip of the marker;</p>
<div id="attachment_157" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/20090120-20090120-_dsc0016.jpg"><img class="size-medium wp-image-157" title="20090120-20090120-_dsc0016" src="http://blog.minst.net/wp-content/uploads/2009/01/20090120-20090120-_dsc0016-300x200.jpg" alt="Fingers come in strange shapes" width="300" height="200" /></a><p class="wp-caption-text">Fingers come in strange shapes</p></div>
<p>The Surface feels pretty responsive, but using the Data Visualizer you notice that the position of the touch as interpreted by the Surface lags behind the actual touch. In the demos it is not noticeable but we found a similar lag very annoying on the DiamondTouch. On that table we managed to get rid of the lag and hopefully we can do the same here.</p>
<p>There is the famous demo of the telephone on the Surface, where it gets recognised and you can drag and drop data. We tried it and noticed that it doesn&#8217;t like android phones; it just doesn&#8217;t see the phone. An (ancient) windows mobile phone however does get recognised for what it is: a blob;</p>
<div id="attachment_158" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/20090120-20090120-_dsc0012.jpg"><img class="size-medium wp-image-158" title="20090120-20090120-_dsc0012" src="http://blog.minst.net/wp-content/uploads/2009/01/20090120-20090120-_dsc0012-300x200.jpg" alt="Android on the Surface" width="300" height="200" /></a><p class="wp-caption-text">Android on the Surface</p></div>
<p>Obviously the Surface doesn&#8217;t automagically recognize phones or any other object. The table comes with a set of <a href="http://en.wikipedia.org/wiki/Fiduciary_marker">fiducials</a> which you can stick on objects. These fiducials get recognised as tags with a value and using that value you can do fun stuff in your software.</p>
<p><strong>Update</strong></p>
<p>I discovered that while it doesn&#8217;t respond to hovering fingers, it does notice hovering areas the size of a hand. Which is slightly annoying since in normal use you easily have your hand hovering just above the surface while one or more fingers touch it. It might be possible to filter this unwanted behavior in real applications, because the hand shows up as a blob instead of a finger.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/01/20/working-microsoft-surface/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Surface</title>
		<link>http://blog.minst.net/2009/01/16/microsoft-surface</link>
		<comments>http://blog.minst.net/2009/01/16/microsoft-surface#comments</comments>
		<pubDate>Fri, 16 Jan 2009 17:43:46 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[TableTop]]></category>
		<category><![CDATA[user interaction]]></category>
		<category><![CDATA[Surface]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=147</guid>
		<description><![CDATA[Today the Microsoft Surface arrived, finally. They arrived in big boxes suggesting big tables, but alas they are actually pretty small. Microsoft envisages them as lounge table, as such they are very low, too low to sit comfortably on a normal chair. Being used to the Circle12 DiamondTouch, the Surface is both small and heavy. [...]]]></description>
			<content:encoded><![CDATA[<p>Today the Microsoft Surface arrived, finally. They arrived in big boxes suggesting big tables, but alas they are actually pretty small. Microsoft envisages them as lounge table, as such they are very low, too low to sit comfortably on a normal chair. Being used to the Circle12 DiamondTouch, the Surface is both small and heavy. Weighing about 80kg it is difficult to move it and the actual display area is about half the size of the DiamondTouch.</p>
<p>We were supposed to have two normal and one developer edition but it wasn&#8217;t very clear which one was which so we picked one and carried it to our office. This turned out to quite tricky, this thing is heavy and doesn&#8217;t have any clear handles. In the end we carried it by holding the projection-surface &#8230;</p>
<p>Once setup we had to fiddle a bit to get the powercable connected and find the proper (two) powerswitches. Once it booted it prompted us an EULA we had to accept. However the Surface is designed to be a standalone machine completely controlled by touch but before the touch was working we had to accept the EULA, which was only accessible by touch &#8230; hm</p>
<div id="attachment_148" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/dscn0274.jpg"><img class="size-medium wp-image-148" title="EULA for the Surface" src="http://blog.minst.net/wp-content/uploads/2009/01/dscn0274-300x225.jpg" alt="You need to accept to start touch, and you need touch to accept" width="300" height="225" /></a><p class="wp-caption-text">You need to accept to start touch, and you need touch to accept</p></div>
<p>So we had to plug in a mouse, but apparently we hadn&#8217;t chosen the developer edition since no usb ports where visible. The manual explained that we need to open up the side of the table to access the ports. After two screws and a bit of force we managed to open up the side and it gave us full access to all normal PC ports.</p>
<div id="attachment_149" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/dscn0276.jpg"><img class="size-medium wp-image-149" title="Surface ports" src="http://blog.minst.net/wp-content/uploads/2009/01/dscn0276-300x225.jpg" alt="The surface insides" width="300" height="225" /></a><p class="wp-caption-text">The surface insides</p></div>
<p>It asked us to create an admin account and once it was setup it gave us the choice to login as that admin or as TableUser, since we had no clue what the password for TableUser was, we logged in as admin.  After a bit we were shown a fresh Vista desktop with a few shortcuts. The most obvious for us was the calibration tool. We calibrated our table and started a touch application. It failed to run complaining that the filtergraph was not found at the location specified. We neither had knew what a filtergraph was, nor what the location specified was.  This got us stuck for quite a while, the manuals didn&#8217;t help and the online site with information was only accessible by invitation and due to some miscommunication(?) we were not (yet) invited.</p>
<p>Digging into things like registries, hidden folders and binary blobs we finally discovered that there are two versions of the calibration tool. One which does a background-light calibration and one which does a per camera calibration. We had run both, but we failed to notice that the latter had to run 5 times (5 cameras in the surface). Once we had done so the different surface programs ran without errors and without effect.</p>
<p>Pretty annoyed we banged our fist on the table and that seemed to have effect. It turned out that putting a lot of force on the table gave results, indicating a calibration issue. Having no idea how to finetune the calibration we started to experiment with different ways of touching. The current consensus is that it is designed for ubergeeks who never see the sun and are pure white; touching the Surface with a finger doesn&#8217;t give a result, wrapping the finger in white tissue suddenly does &#8230;</p>
<div id="attachment_150" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/dscn0556.jpg"><img class="size-medium wp-image-150" title="The subsurface pond" src="http://blog.minst.net/wp-content/uploads/2009/01/dscn0556-300x225.jpg" alt="The 'attract' application" width="300" height="225" /></a><p class="wp-caption-text">The &#39;attract&#39; application</p></div>
<p>Hopefully we will figure out soon how to tweak the calibration and otherwise we need to buy a set of white surgical gloves to hand out to users <img src='http://blog.minst.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="file:///H:/DCIM/100NIKON/DSCN0274.JPG" alt="" /></p>
<p><img src="file:///H:/DCIM/100NIKON/DSCN0274.JPG" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/01/16/microsoft-surface/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>State of the Map</title>
		<link>http://blog.minst.net/2009/01/13/state-of-the-map</link>
		<comments>http://blog.minst.net/2009/01/13/state-of-the-map#comments</comments>
		<pubDate>Tue, 13 Jan 2009 22:59:54 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[OSM]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.minst.net/?p=138</guid>
		<description><![CDATA[My friend and colleague New Folder is organizing the State of the Map conference this year. He asked me to design a banner for the official site. The conference is, apart from the usual OSM gathering, also focusing on businesses/governments and how they can use OSM data in their line of work. So I decided [...]]]></description>
			<content:encoded><![CDATA[<p>My friend and colleague New Folder is organizing the State of the Map conference this year. He asked me to design a banner for the official site. The conference is, apart from the usual OSM gathering, also focusing on businesses/governments and how they can use OSM data in their line of work. So I decided to create a banner which reflects the transistion OSM has been through. It started with a single idea and a few people collecting GPS tracks. Slowly from these tracks roads could be destinguished. Different types of roads where classified and more and more data was included and suddenly you got a map which at some points was more detailed than a &#8216;commercial&#8217; map.</p>
<div id="attachment_139" class="wp-caption alignnone" style="width: 533px"><a href="http://blog.minst.net/wp-content/uploads/2009/01/banner.png"><img class="size-full wp-image-139" title="banner" src="http://blog.minst.net/wp-content/uploads/2009/01/banner.png" alt="First SoftM'09 banner" width="523" height="55" /></a><p class="wp-caption-text">First draft SoftM&#39;09 banner</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2009/01/13/state-of-the-map/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSGeo dances the Tango</title>
		<link>http://blog.minst.net/2008/12/23/osgeo-dances-the-tango</link>
		<comments>http://blog.minst.net/2008/12/23/osgeo-dances-the-tango#comments</comments>
		<pubDate>Tue, 23 Dec 2008 10:35:21 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[user interaction]]></category>

		<guid isPermaLink="false">http://blog.minst.net/2008/12/23/osgeo-dances-the-tango</guid>
		<description><![CDATA[I finally did the right thing and emailed OSGeo that I&#8217;ve stopped coding and would like to use my designer skills instead. I was pointed to this wiki which pointed me to the site of Robert Szczepanek. He had created an entire iconset for QGIS inspired by the tango rules. I contacted him and he [...]]]></description>
			<content:encoded><![CDATA[<p>I finally did the right thing and emailed OSGeo that I&#8217;ve stopped coding and would like to use my designer skills instead. I was pointed to this <a href="http://wiki.osgeo.org/wiki/OSGeo_map_symbol_set">wiki </a>which pointed me to the <a href="http://robert.szczepanek.pl/icons.php">site </a>of Robert Szczepanek. He had created an entire iconset for QGIS inspired by the <a href="http://tango.freedesktop.org/Tango_Desktop_Project">tango </a>rules. I contacted him and he was very much interested to extend his work for a broader iconset for the OSGeo community. So where I expected to start from scratch I&#8217;m kickstarted to the point that I have to think of secondlevel issues like hosting, naming-schemes etc.</p>
<p>Still I&#8217;m very much excited by the prospect of creating beautiful GIS applications and so far I&#8217;ve had enthousiast reactions from developers as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2008/12/23/osgeo-dances-the-tango/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TileCache in the cloud</title>
		<link>http://blog.minst.net/2008/11/26/tilecache-in-the-cloud</link>
		<comments>http://blog.minst.net/2008/11/26/tilecache-in-the-cloud#comments</comments>
		<pubDate>Wed, 26 Nov 2008 16:52:53 +0000</pubDate>
		<dc:creator>stvn</dc:creator>
				<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.minst.net/2008/11/26/tilecache-in-the-cloud</guid>
		<description><![CDATA[Since cloud is the buzzword of the month I decided to have a look at TileCache&#8217;s support for Amazons cloud storage S3. Since TileCache version 2 the whole architecture is much more modular. It is easy to write new backends for different kind of caches. One of those backends is AWSS3 (Amazons S3 storage service).
For [...]]]></description>
			<content:encoded><![CDATA[<p>Since <a href="http://en.wikipedia.org/wiki/Cloud">cloud </a>is the buzzword of the month I decided to have a look at <a href="http://tilecache.org/">TileCache</a>&#8217;s support for Amazons cloud storage S3. Since TileCache version 2 the whole architecture is much more modular. It is easy to write new backends for different kind of caches. One of those backends is AWSS3 (<a href="http://aws.amazon.com/s3/">Amazons S3</a> storage service).</p>
<p>For <a href="http://www.edugis.nl/">EduGIS </a>we figured that it might be easier and more scalable to serve all tiles from S3, using the bandwidth and storage space of amazon, instead of buying more servers and bandwidth ourselves. Already we use tilecache in a test setup and the initial idea was to replace the diskcache for an AWSS3 cache. This was we could tap into the vast storage space of amazon, however, since every request had to be forwarded to S3 and back, the bandwidth-load was doubled. So instead of hosting the TileCache on our server we moved the TileCache instance to a virtual computer on Amazons EC2 platform.</p>
<p>To do this, I picked a sample machine-image of a small, headless, ubuntu 8.10 setup. Installed tilecache (apt-get install tilecache <img src='http://blog.minst.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) and changed it to use mod_python instead of the default cgi in apache. Since this means that the machine-image is changed, you need to bundle it into a new machine image and register it with amazon. this way you can easily create multiple instances, also if you powerdown your machine it gets destroyed so you loose all your changes.</p>
<p>So once I mastered the art of cloud-herding I pointed our test environment to TileCache in the cloud to see if it would work at all and how quick the bill would increase. After a few days and some seedings I noticed that the AWSS3 backend uses a simple dump in a single folder backend. This quickly produces insane amounts of files and it becomes impossible to have a quick look at the status of your cache with tools like S3fox. So I wrote a patch for the AWSS3 cache module to store the tiles in a TMS style folder structure.</p>
<p>Now all we need to do is to create a tilecache.cfg with all 200+ layers we have and start seeding.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.minst.net/2008/11/26/tilecache-in-the-cloud/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
