Parsing KML files with PHP

For my current project at MsF, I need to process Google’s geoinformation data scheme KML with PHP. As the format is XML based, open and clearly defined, its actually pretty simple. The following code uses the Document Object Model in order to retrieve all <Point> nodes from a <Placemark>, which contain the string of coordinates as their element content.

<code>

function parseKML(){

// Create a new DOM model
$doc = new DOMDocument();
// Load a KML file
$doc->load( ‘example.kml’ );
//Pick all Point – Elements
$points = $doc->getElementsByTagName( “Point” );
// For every point, extract the coordinates
foreach( $points as $point ){
$coordinates = $point->getElementsByTagName( “coordinates” );
$coordinate = $coordinates->item(0)->nodeValue;
$geoPoint = parseCoord($coordinate);

}

</code>

The following function applies a regular expression to the given string of coordinates. This regex filters the longitude and the latitude of a given set of coodinates and creates a new GeoPoint, which is simply a class called GeoPoint, having the two parameters as member variables.

<code>

function parseCoord($coordinate){
$geopoint = null;
// Delete all blanks
$coordinate = str_replace(” “, “”, $coordinate);
//Regular expression
$regex = “/([-+]{0,1}[0-9]{1,}\.{1}[0-9]{1,})\,([-+]{0,1}[0-9]{1,}\.{1}[0-9]{1,})/”;
// Apply regex
try {

$match = preg_match($regex, $coordinate,$result);

// If the string is valid, retrieve results
if($match>0){
$long = $result[1];
$lat = $result[2];
$geopoint = new GeoPoint($long, $lat);
}
} catch (Exception $e) {
echo ‘There was an error: ‘,  $e->getMessage(), “\n”;
}
return $geopoint;
}

</code>

Please excuse the poor code formatting. My theme does not yet support any of the code highlighting plugins.

Continue reading


How to setup a MIDI-Keyboard in Ubuntu

I finally got myself a small (actually, it’s tiny) MIDI-Masterkeyboard for “tinkling the ivories”, which is a wonderful passion for lazy afternoons. Isn’t it cute:

I decided to get an Akai LPK 25, which doesn’t use much space, is cheap and quite sufficient for my purposes. In order to use it with Linux, one has to follow a few steps in order to get some sound out of that instrument. First of all, one needs to setup a real time kernel, because otherwise, one would have small delays, which is quite annoying. With the standard kernel, the delay on my machine was up to 30 milliseconds, which does not sound much but it is too much to be ignored. In order to install the real time kernel, type:

sudo apt-get install linux-image-2.6.31-9-rt

Then, reboot your system and choose the new kernel in the Grub menu at the startup. Further more, MIDI in Ubuntu is unfortunately not just plug and play. One has to setup the JACK Audio Connection Kit, which is described nicely here.

Then, one can install a software synthesizer like Hexter, which is basically a software model of the Yamaha DX7 synthesizer. Install it by typing:

sudo apt-get install hexter

At last, one has to wire everything together by the use of the Jack Control Center. Therefore, launch the control center and Hexeter. Switch to Jackd and choose the “Alsa Midi” Tab in the Connections menu. Then simply connect the LPK25 keyboard on the left hand side to the hexeter DX7 emulator on the right hand side. Thats it. More advanced setups with Rosegarden or LMMS will be described as soon as I figure it out how to use them.

Continue reading


Open Access

Bei der heutigen Iteration meines Morgenrituals (Kaffee und Surfen) bin ich auf folgenden PhDComic gestoßen, der die Problematik Veröffentlichung von Forschungsergebnissen betrifft:

(c) www.phdcomics.com

(c) www.phdcomics.com

Während es im Bereich der Informatik viele offene Quellen – wie zum Beispiel Citeseer – gibt, sieht es in anderen Fachbereichen meiner Erfahrung nach düster aus. PLOS one ist zwar ein guter Anfang, aber es sind noch viel zu wenig freie Quellen verfügbar. Die meisten Journals sind für Privatpersonen quasi unbezahlbar, es gibt aber kaum freie Publikationen der Forschungsergebnissen öffentlicher Universitäten. Eigentlich ungerecht.

Continue reading


Hamsterkäufe und Chaos erwartet

Der Standard warnt bereits seit Tagen vor dem bevorstehenden Wintereinbruch, insbesondere im Osten des Landes. Mit Teasern wie „Unfälle, Tote und Verletzte“ wird eindringlich auf das zu erwartende Chaos hingewiesen. Die Panik/Wetterwarnungskarte von Meteoalarm stellt Österreich als besonders einladendes Plätzchen im Herzen Europas dar.

Die Detailkarte der ZAMG finde ich jedoch besonders interessant. In Tirol fällt zwar mehr Schnee als in Wien, die Hauptstadt bekommt aber die höchste Warnstufe (DEFCON 1) spendiert, während sich mein bergiges Heimatbundesland mit der mittleren Warnstufe begnügen muss. Entweder, die ZAMG setzt auf die Psychologie um die Wiener in Angst und Schrecken zu versetzen, auf dass diese ihre Autos stehen lassen, oder es steckt der Tiroler Tourismusverband hinter der niedrigeren Warnstufe um Touristen nicht zu vergraulen. Auch interessant: Schneeräumung in Tirol  (© APA) vs. Wien  (© de.academic.ru) 🙂

Continue reading


Jahreswechsel

Wieder ist ein Jahr vorbei. Das musste natürlich gebührend gefeiert werden. Sarah und ihre Mitbewohnerinnen waren – wiedereinmal – so freundlich uns zu sich in ihre Wohnung einzuladen. Wie alle Feste bei Sarah verlief auch Silvester 09 wieder äußerst besinnlich. Leider war um Mitternacht der Nebel in Innsbruck so dicht, dass wir beschlossen haben, gar nicht zur Uni-Brücke zu gehen, sondern uns mit einem Blick vom Balkon des 6. Stocks zufrieden zu geben.

Retrospektive: 2009 war ein sehr gutes Jahr. Es hat sich viel getan, vieles hat sich verändert. Im Großen und Ganzen hatte ich letztes Jahr unglaublich viel Glück und es ist fast alles so gelaufen, wie ich es mir vorgestellt habe. Gut so! Auf ein Neues 🙂

Continue reading