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
LUCK LIFE: Band feiert Europapremiere auf der Connichi
wallpaper-1019588
Wind Breaker: Deutscher Simuldub bei Crunchyroll gestartet
wallpaper-1019588
Kizuna no Allele: Erste Staffel erscheint auf Disc
wallpaper-1019588
Acro Trip: Promo-Video verrät Startzeitraum