Springe zum Inhalt

Nachfolgende Funktion berechnet die Entfernung zwischen zwei in geographischer Länge und Breite angegebenen Punkten auf der Erde in Kilometer:

drop function if exists entfernung;
delimiter //
create function entfernung(lat1 double, lon1 double, lat2 double, lon2 double)
	returns double
	language sql
	contains sql
	comment 'Berechnet die Entfernung zwischen zwei Koordinaten'
begin
	declare erdradius double;

	declare lambda1 double;
	declare phi1 double;

	declare lambda2 double;
	declare phi2 double;

	declare x1 double;
	declare y1 double;
	declare z1 double;

	declare x2 double;
	declare y2 double;
	declare z2 double;

	declare entfernung double;

	set erdradius = 6371;

	set lambda1 = lon1 * pi() / 180;
	set phi1 = lat1 * pi() / 180;

	set lambda2 = lon2 * pi() / 180;
	set phi2 = lat2 * pi() / 180;

	set x1 = erdradius * cos(phi1) * cos(lambda1);
	set y1 = erdradius * cos(phi1) * sin(lambda1);
	set z1 = erdradius * sin(phi1);

	set x2 = erdradius * cos(phi2) * cos(lambda2);
	set y2 = erdradius * cos(phi2) * sin(lambda2);
	set z2 = erdradius * sin(phi2);

	set entfernung = 2 * erdradius * asin(sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2) + pow(z1 - z2, 2)) / (2 * erdradius));

	return entfernung;
end;
//

Update:
Folgende Funktion ist ca. 4 Mal schneller (getestet mit der MySQL-Funktion BENCHMARK(), Quelle)

DELIMITER //

DROP FUNCTION IF EXISTS DISTANCE; //

CREATE FUNCTION DISTANCE( lat1 DOUBLE, lon1 DOUBLE, lat2 DOUBLE, lon2 DOUBLE ) 
    RETURNS DOUBLE NO SQL DETERMINISTIC
    COMMENT 'counts distance (km) between 2 points on Earth surface'
BEGIN
    DECLARE dtor DOUBLE DEFAULT 57.295800;

    RETURN (6371 * acos(sin( lat1/dtor) * sin(lat2/dtor) +
        cos(lat1/dtor) * cos(lat2/dtor) * 
        cos(lon2/dtor - lon1/dtor)));
END; //

DELIMITER ;

7

Beim Benutzen von unterschiedlichen Filesystemen als Ablageort für Dateien von unterschiedlichen Betriebssystemen kann es vorkommen, dass Dateinamen mit Umlauten oder anderen Sonderzeichen nicht auf allen anderen Betriebssystemen gleich aussehen. Dies liegt einerseits daran, dass bei der Erstellung der Datei evtl. falsche Zeichensätze für das Dateisystem vorgegeben worden sind und das jeweilige andere Betriebssystem die Zeichen im Dateinamen dann falsch interpretiert. Hinzu kommen noch Netzwerkclients, die evtl. die erforderliche Konvertierung nicht ordnungsgemäß durchführen und so Dateinamen mit Sonderzeichen falsch auf dem Zielsystem erstellen. ...weiterlesen "Falsch dargestellt Umlaute im Dateinamen unter Linux korrigieren"

Das mit Quicktime oder anderer Apple Software auf dem PC installierte "Apple Software Update", welches in bestimmten Zeitabständen automatisch ausgeführt wird, "klaut" dem aktuellen Anwendungsfenster den Fokus, obwohl das Programm selbst gar kein (sichtbares) Fenster auf dem Desktop anzeigt. Grml. Dadurch wird das Tippen in einer Textverarbeitung oder der Konsole jäh unterbrochen. Anwender könnten dadurch auf die Idee kommen, dass etwas mit ihrem PC nicht stimmt. Gottseidank startet das Ding nicht selbsttätig den PC einfach neu...