/*
* PHP code snippet to calculate the distance and bearing between two
* maidenhead QTH locators.
*
* Written by Fabian Kurz, DJ1YFK; losely based on wwl+db by VA3DB.
* https://fkurz.net/ham/stuff.html?maidenhead
* You can do whatever you want with this code.
*
*/
function valid_locator ($loc) {
if (preg_match("/^[A-R]{2}[0-9]{2}[A-X]{2}$/", $loc)) {
return 1;
}
else {
return 0;
}
}
function loc_to_latlon ($loc) {
/* lat */
$l[0] =
(ord(substr($loc, 1, 1))-65) * 10 - 90 +
(ord(substr($loc, 3, 1))-48) +
(ord(substr($loc, 5, 1))-65) / 24 + 1/48;
$l[0] = deg_to_rad($l[0]);
/* lon */
$l[1] =
(ord(substr($loc, 0, 1))-65) * 20 - 180 +
(ord(substr($loc, 2, 1))-48) * 2 +
(ord(substr($loc, 4, 1))-65) / 12 + 1/24;
$l[1] = deg_to_rad($l[1]);
return $l;
}
function deg_to_rad ($deg) {
return (M_PI * $deg/180);
}
function rad_to_deg ($rad) {
return (($rad/M_PI) * 180);
}
function bearing_dist($loc1, $loc2) {
if (!valid_locator($loc1) || !valid_locator($loc2)) {
return 0;
}
$l1 = loc_to_latlon($loc1);
$l2 = loc_to_latlon($loc2);
$co = cos($l1[1] - $l2[1]) * cos($l1[0]) * cos($l2[0]) + sin($l1[0]) * sin($l2[0]);
$ca = atan2(sqrt(1 - $co*$co), $co);
$az = atan2(sin($l2[1] - $l1[1]) * cos($l1[0]) * cos($l2[0]), sin($l2[0]) - sin($l1[0]) * cos($ca));
if ($az < 0) {
$az += 2 * M_PI;
}
/*
$ret['km'] = round(6371*$ca);
$ret['deg'] = round(rad_to_deg($az));
*/
$ret[0] = round(6371*$ca);
$ret[1] = round(rad_to_deg($az));
return $ret;
}
/* Example usage: Distance and heading from JO60LK to JO61UA:
$bd = bearing_dist("JO60LK", "JO61UA");
echo "$bd[km]km, $bd[deg]deg";
*/
?>
Ponti VHF/UHF italiani dati ricavati da Elenco ponti del 07/05/2021 (data mantained by Walter IK2ANE - motore di ricerca Carlo IZ4SJP [vers.0.9.2]
calcolo distanza e direzione Fabian Kurz, DJ1YFK)
Locator di riferimento JN34VJ
Ricerca di tutti i ponti: attivare il checkbox
Ricerca per regione: scegli dalla lista
Ricerca per provincia: introdurre la sigla automobilistica della provincia (non serve preselezionare la regione)
poi cliccare su
'avvia la ricerca'
(indifferenti maiuscole o minuscole)