SPOPOS is a Danish project providing services based on the location of passengers in airports, which was active from 2006 to 2009 (www.spopos.dk, 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:
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:
See also my open source map library, below.
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.
Usage: http://example.net:80/tinyhttp2sms/?action=SendSMS&telephoneNumber=%2B4561000000&message=Hello%20World!&validityPeriod=60&requestReport=1&flash=1 http://example.net:80/tinyhttp2sms/?action=DeliveredSMS&telephoneNumber=%2B4561000000&messageReference=12 http://example.net:80/tinyhttp2sms/?action=SendSMS&telephoneNumber=%2B4561000000&validityPeriod=5&requestReport=1&ping=1 http://example.net:80/tinyhttp2sms/?action=SignOfLife
And here is my open source JavaScript library to draw some information on an SVG map.
spopos-example-map.html <!-- 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. </object> <!--<![endif]--> <!--[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. </object> <![endif]--> <script type="text/javascript" src="spopos-map.js"></script> <script type="text/javascript">//<![CDATA[ spopos.registerResize(function(e) { 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.registerLoad(function(e) { 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" myZone.active = true; //Set to true for this zone to be visible in auto-zoom myZone.setTitle('A name for this zone'); myZone.circle.setAttribute('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(myZone.circle, 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 } //]]></script>