Contributions to the Danish project SPOPOS
Alexandre Alapetite personal page 2006-2009


SPOPOS is a Danish project providing services based on the location of passengers in airports, which was active from 2006 to 2009 (, Sporingsteknologiske Person og Operatør Services).

During this project, I was employed at Risø (2006-06 until 2006-12), then at ITU, then at DTU again (2007-08 until 2009-06, Risø being merged under DTU).

Project partners:


SPOPOS: The Intelligent Airport

SVG animation of the passengers of a given flight, moving through the airport:

[SPOPOS animation]

Example of trace showing the movements of one volunteer passenger from one zone to the other, between the check-in and the gate.
Click for the interactive SVG version:

[SPOPOS animation]

See also my open source map library, below.

SPOPOS, Tag Along - remote travel assistance


John Paulin Hansen, Alexandre Alapetite, Henning Boje Andersen, Lone Malmborg, Jacob Thommesen, 2009   [PDF]
Location-Based Services and Privacy in Airports
In the proceedings of INTERACT’2009, 12th IFIP TC13 Conference on Human-Computer Interaction, Uppsala, Sweden, part 1, pages 168-181, doi:10.1007/978-3-642-03655-2_21

See other publications

Open Source software

TinyHTTP2SMS: SMS gateway

During the project, I also developed the TinyHTTP2SMS software for providing a light SMS gateway platform, able to listen to HTTP requests and to use a telephone connected by Bluetooth / COM to automatically send SMS.

It uses the Hayes AT protocol. It supports PDU mode, flash SMS (not aimed to be saved or answered by the recipient), ping SMS (not seen by the recipient), SMS delivery reports, and SMS validity periods.

The software was successfully used with telephones such as Sony Ericsson W880i and K750.


[TinyHTTP2SMS screenshot]


And here is my open source JavaScript library to draw some information on an SVG map.


<!-- Typical use in an (X)HTML page, with conditional comments for Internet Explorer 8 and older -->

<!--[if gte IE 9]><!-->
<object id="svg1" type="image/svg+xml" data="spopos-map.svg" width="99%" height="320">
	Here should be displayed an <a href="spopos-map.svg" type="image/svg+xml"><abbr title="Scalable Vector Graphics">SVG</abbr> image</a>.<br />
	Please try with another browser.
<!--[if lt IE 9]>
<object id="svg1" type="image/svg+xml" width="99%" height="320">
	<param name="src" value="spopos-map.svg" />
	Here should be displayed an <a href="spopos-map.svg" type="image/svg+xml"><abbr title="Scalable Vector Graphics">SVG</abbr> image</a>.<br />
	It looks like you are using Internet Explorer older than version 9; please update, use another browser,
	or ensure you have installed a plug-in such as Adobe SVG Viewer.

<script type="text/javascript" src="spopos-map.js"></script>
<script type="text/javascript">//<![CDATA[
	spopos.keepRatio(0.75);	//The width is set to 100% by CSS; This is to change the height at the same time, keeping the ratio.
	spopos.zoneCircleRadius = 10;	//Optional: change the size of the circles
	spopos.hoverZoom = 5.0;	//Optional: change the zoom factor when the mouse is over a zone
	var map1 = spopos.load('svg1', 'NameOfTheLayerWithZones');	//The returned value can also be accessed by spopos.maps['svg1'] after spopos.load()
	if ((!myMap) || (!myMap.zones)) return;
	myMap.object.*	//Access to the HTML <object> containing the SVG document
	myMap.document.*	//Access to the underlying SVG document
	var myZone = map1.zones['z1'];	//Access to the zone named "z1" = true;	//Set to true for this zone to be visible in auto-zoom
	myZone.setTitle('A name for this zone');'fill', spopos.colourGradient(45));	//Change the colour of the circle, using a predefined colour scale (0 to 100)
	myZone.setText1Content('45%');	//First line of text
	myZone.text1.setAttribute('fill', 'blue');	//Change the colour of the first line
	myZone.text1.setAttribute('font-size', '90%');	//Change the font size of the first line
	myZone.setText2Content('20');	//Second line of text
	myZone.setText3Content('mn');	//Third line of text
	myZone.hide();	//Hide this zone
	myZone.unhide();	//Un-hide this zone
	map1.drawEdge(, map1.zones['z2'].circle);	//Draw an edge from one zone to another (return a svg:line)
	map1.clearEdges();	//Clear all the edges
	map1.edges.setAttribute('stroke', 'blue');	//Customise the style of all the edges
	map1.walk('LayerName', /^x[0-3]+$/, function(svgElement)	//Apply a callback on //svg:g[@id="LayerName"]/svg:*[@id=/regularExpression/]
		svgElement.setAttribute('visibility', 'hidden');	//Example hiding all the matching elements
	var map2 = spopos.load('svg2', 'NameOfTheLayerWithZones');	//It is possible to have several SVG maps in the same page
function myAction(aMapID)	//Other SPOPOS map functions are available, such as:
	var myMap = spopos.maps[aMapID];	//aMapID can for instance be 'svg1'
	if (!myMap) return;
	else if (...) myMap.autoZoom();	//Zoom on the active zones of the map
	else myMap.resetView();	//Reset to the original view