Locator / QTH Berechnung

Um den Standort zu bestimmten gibt es verschiedene Möglichkeiten.

Angabe in:

  • Längen / Breitengrad
  • Latitude / Longitude
  • Locator

Hier habe ich einige Funktionen um diese Werte umzurechnen.

PHP – umrechnen Locator in Längen / Breitengrad

Rechnet anhand des Locactors den Längen und Breitengrad aus

Hier mit den Locator von Wächtersbach

loc2grad("JO40PF");
function loc2grad($locator){
	$loc = strtoupper($locator); // Locator einlesen und in Grossbuchstaben wandeln
	$ll = -180; // Position ganz links westlicher Laenge
	
	$Zeichen1 = charCode($loc,0); // Zeichen an Position 1 des Locators kann A bis R sein
	$Zeichen1 = $Zeichen1 - 65;  // Zeichen A = 65 wird 0
	$ll = $ll + ($Zeichen1 * 20);
	
	$Zeichen3 = charCode($loc,2); // Zeichen an Position 3 des Locators kann 0 bis 9 sein
	$Zeichen3 = $Zeichen3 - 48; // Zeichen 0 = 48 wird 0
	$ll = $ll + ($Zeichen3 * 2);
	
	$Zeichen5 = charCode($loc,4); // Zeichen an Position 5 des Locators kann A bis X sein
	$Zeichen5 = $Zeichen5 - 65; // Zeichen A = 65 wird 0
	$ll = $ll + ($Zeichen5 * 2 / 24);
	
	$ll = $ll + (0.5*2/24); // in die Mitte des Locators setzen
	
	$bb = -90; // Position ganz unten suedlicher Breite
	$Zeichen2 = charCode($loc,1); // Zeichen an Position 2 des Locators kann A bis R sein
	$Zeichen2 = $Zeichen2 - 65; // Zeichen A = 65 wird 0
	$bb = $bb + ($Zeichen2 * 10);
	
	$Zeichen4 = charCode($loc,3); // Zeichen an Position 4 des Locators kann 0 bis 9 sein
	$Zeichen4 = $Zeichen4 - 48; // Zeichen 0 = 48 wird 0
	$bb = $bb + ($Zeichen4 * 1);
	
	$Zeichen6 = charCode($loc,5); // Zeichen an Position 6 des Locators
	$Zeichen6 = $Zeichen6 - 65; // Zeichen A = 65 wird 0
	$bb = $bb + ($Zeichen6 * 1 / 24);
	
	$bb = $bb + (0.5*1/24); // in die Mitte des Locators setzen
	$bb = round($bb,4); // 4 Stellen nach dem Komma
	
	if ($bb < 0) {
		echo "S "; // suedlicher Breite
	} else {
		echo "N "; // noerdlicher Breite
	}
	$bb = abs($bb);
	echo $bb."<br>";
	

	$ll = round($ll,4); // 4 Stellen nach dem Komma

	if ($ll < 0) {
		echo "W "; // westlicher Laenge
	} else {
		echo "O "; // oestlicher Laenge
	}
	$ll = abs($ll);
	echo $ll;
	
}



function charCode($utf8Character, $pos) {
	$utf8Character = substr($utf8Character,$pos,1);
	list(, $ord) = unpack('N', mb_convert_encoding($utf8Character, 'UCS-4BE', 'UTF-8'));
	return $ord;
}

PHP – umrechnen Latitude & Longitude in GPS (DMS)

Quelle: https://www.revilodesign.de/blog/sonstiges/latitude-und-longitude-in-gps-koordinaten-umrechnen/

  • Wert 1: Latitude oder Longitude die zu GPS Koordinaten umgerechnet werden soll
  • Wert 2: Angabe, ob es sich um eine Latitude (lat) oder Longitude (lng) handelt.
gpsCoordinates( '52.520066', 'lat' );

Die folgende PHP Function rechnet die Positionen automatisch in GPS (DMS) um.

function gpsCoordinates( $position, $type  ) {
	$value	 = explode('.', $position);
	$value_1 = $value[0];
	
	if ( $type == 'lat' ) {
		if ( $value_1 >= 0 ) {
			$direction = 'N';
		} else {
			$direction = 'S';			
		}
	} elseif ( $type == 'lng' ) {
		if ( $value_1 >= 0 ) {
			$direction = 'E';
		} else {
			$direction = 'W';			
		}
	}
	
	$value_2 = $position - $value_1;
	$value_2 = $value_2 * 60;
	$value_2 = explode('.', $value_2);
	
	$value_3 = '0.' . $value_2[1];
	$value_3 = $value_3 * 60;
	$value_3 = number_format((float)$value_3, 3, '.', '');
	
	$result	= abs($value_1) . '° ' . abs($value_2[0]) . '‘ ' . abs($value_3) . ' ' . $direction;
	
	return $result;
}

PHP – umrechnen Längen / Breitengrad in Locator

  • Wert1 = Breitengrad
  • Wert2 = N oder S
  • Wert3 = Längengrad
  • Wert4 = O oder W

LangBreit2Loc(52.5625,"N",13.1250,"O");
function LangBreit2Loc( $breit, $rbreit,$lang, $rlang)
{
	if ($rbreit == "S") { $breit = -1 * breit; }; // suedlicher Breite als negativer Wert
	if ($rlang == "W") { $lang = -1 * $lang; }; // westlicher Laenge als negativer Wert
	
	$breit = $breit + 90;
	$breit = $breit /10; // 10-Grad-Stuecke als Buchstaben
	$lang = $lang + 180;
	$lang = $lang / 20; // 20-Grad-Stuecke als Buchstaben
	
	$loc = $loc . chr(65 + floor($lang)) . chr(65 + floor($breit));
	$breit = 10 *($breit - floor($breit)); // 1-Grad-Stuecke als Zahlen
	$lang = 10 *($lang - floor($lang)); // 1-Grad-Stuecke als Zahlen
	
	$loc = $loc . chr(48 + floor($lang)) . chr(48 + floor($breit));
	$breit = 24 *($breit - floor($breit)); // 1/24-Grad-Stuecke als Buchstabe
	$lang = 24 *($lang - floor($lang)); // 1/24-Grad-Stuecke als Buchstabe
	
	$loc = $loc . chr(65 + floor($lang)) . chr(65 + floor($breit));
	
	return $loc;
}

Links zu diesem Thema

http://dk3red.homepage.t-online.de/de/s5_22.htm

https://dc4fs.de/index.php/locator

https://www.revilodesign.de/blog/sonstiges/latitude-und-longitude-in-gps-koordinaten-umrechnen/