OpenSky Java API to KML für Google Earth – Teil 1

OpenSky bietet eine Java API an um auf Flugdaten zugreifen zu können. Da die live API nun wieder online ist, schreiben wir einen kleine JUnit Test und formen mal alle Transponderdaten aller 4754 Flugzeuge in eine KML Datei, um die Daten auf Google Earth anzuzeigen. Hier erst einmal das Ergebnis in Google Earth:

OpenSky Java API to KML für Google Earth – Teil 1

Wer die die Daten testweise laden will, kann die KML Datei als all-aircraft.kml_.zip (ZIP, 114 Kb) laden. Die Datei einfach entpacken und mit Google Earth öffnen. Hier noch einmal das Bild aus 376 Km Höhe, mit dem Mittelpunkt „Langenhagen“. Mit den kml Datei kann man aber auch selbst rumzoomen:

OpenSky Java API to KML für Google Earth – Teil 1

Wie sieht nun der Java Code aus. Zuerst mal die JUnit Testmethode um alle Flugdaten mit Anonymous abzufragen:

private static final String HEADER = "";
private static final String FOOTER = "";


@Test
public void getAnonymousTestdata() throws Exception {

OpenSkyApi api = new OpenSkyApi();
OpenSkyStates os = api.getStates(0, null);
Collection<StateVector> states = os.getStates();

StringBuffer ergebnis = new StringBuffer(HEADER);

for (Iterator<StateVector> iterator = states.iterator(); iterator.hasNext();) {
	StateVector s = iterator.next();
	ergebnis.append("<Placemark><name>");
	ergebnis.append(s.getCallsign());
	ergebnis.append("</name><description>");
	ergebnis.append("Callsign: " + s.getCallsign() + " Icao24: " + s.getIcao24() + " Land: " + s.getOriginCountry());
	ergebnis.append("</description><Point>");
	ergebnis.append(" <coordinates>" + s.getLongitude() + "," + s.getLatitude() + "</coordinates></Point></Placemark>");

	System.out.println(s);
}

	ergebnis.append(FOOTER);

	System.out.println(ergebnis.toString());

	System.out.println("Anzahl Flugzeuge: " + states.size());
	}

Will man nur seine eigenen Daten, geht das mit:

private static final String USERNAME = "Vorname Nachname";
private static final String PASSWORD = "passwort";
private static final Integer[] SERIALS = { new Integer(-15552355555) }; // ID der Messstelle

OpenSkyApi api = new OpenSkyApi(USERNAME, PASSWORD);
OpenSkyStates os = api.getMyStates(0, null, SERIALS);
Collection<StateVector> sv = os.getStates();

// rest wie oben

Die Abfrage für alle dauert keine 3 Sekunden:

OpenSky Java API to KML für Google Earth – Teil 1

Weitere Ideen? Hier noch der Link zu der Java Api.

TIP: Arbeitet nur mit SDK >= 1.8.0_131, bei älteren Versionen gibt es sonst einen Fehler das das Zertifikat fehlt! Das kann man aber auch nachträglich installieren.

Ähnliche Artikel:

  1. Java Rätsel des Monats
  2. Java 7 ist DA!
  3. Java Quiz

wallpaper-1019588
Wenn das Neue lockt: Shiny New Object Syndrome im Online-Business
wallpaper-1019588
KiVVON: Der Game-Changer für Content-Creators
wallpaper-1019588
Mexikanische Burrito Bowl mit Pico de Gallo (Vegan)
wallpaper-1019588
The Great Cleric: Serie wird auf Disc erscheinen