Seite 1 von 1

NAC Locator Entfernungsberechnung +- 1km

Verfasst: Sa 18. Feb 2017, 15:49
von DB7MM
Hallo zusammen,

die Auswertung vom 2m NAC Februar 2017 ist raus. Dabei fällt mir auf, daß die vom Auswerter berechneten Entfernungen häufig 1 km größer sind als die in der von cqGMA exportierten EDI-Datei:
http://www.vushf.dk/contest/ubn.php?con ... gn=DB7MM/P
Das ist bei allen von GMA-Teilnehmern beim NAC eingereichten Logs so. Sieht nach einem Rundungsproblem aus. cqGMA scheint immer abzurunden, NAC rundet immer auf.
Gibt es da bei den Contesten einen Standard, wie da zu verfahren ist? 1 km pro QSO, da kommt bei den big guns mit ein paar hundert QSOs ganz schön was zusammen.
Die berechneten Entfernungen von HamOffice und cqGMA stimmen übrigens überein, UCXLog rundet tendenziell auch mal auf.

73 (oder soll ich auf 74 aufrunden?) Michael, DB7MM

Re: NAC Locator Entfernungsberechnung +- 1km

Verfasst: Sa 18. Feb 2017, 18:38
von dg7ac
Die Formel steht in den Basic Contest Rules.
Kurz gesagt, wird ab 'Komma-Null' aufgerundet mit dem praktischen Effekt, dass man einen Punkt für ein QSO im eigenen Kleinfeld erhalten würde.

Außer dem Hinweis im Contestlog hat ein anderes Runden aber keine Auswirkungen. Der Logroboter berechnet die Punkte selbst und benutzt sein eigenes Ergebnis.

Ahoi
Pom

Re: NAC Locator Entfernungsberechnung +- 1km

Verfasst: Di 21. Feb 2017, 16:55
von dl4mfm
Muss ich mal nachschauen, wenn ich etwas Luft habe. Diese 1km Differenz ist mir auch schon aufgefallen.

Dass die Routinen etwas älter sind, ist dabei ja nicht schlimm, an der Erde verändert sich ja nicht so viel ;) Ich dachte immer, dass ich die Turbo Pascal-Entfernungsroutinen von DL1MEN (sk) umgesetzt hätte - stimmt ja aber gar nicht :lol: es ist DL5FBD. Wenn einer Langeweile hat, kann er ja mal drüberschauen.
<?php
# ******************************************************************************
# *** QRB-Calculation DC7CCC ***
# *** ***
# *** email: dc7ccc@darc.de ***
# *** www : www.AdventureRadio.de ***
# *** ***
# *** Die Berechnung erfolgt(e) nach Folke Rosvall, SM5AGM. ***
# *** Das Programm war in BASIC geschrieben fuer den ***
# *** COMMODORE PET 2001-32 Personal Computer. ***
# *** ***
# *** 24-Mar-1991 Basic umgesetzt in Turbo Pascal ***
# *** 07-Nov-1993 QRBberechnung nach DL5FBD eingebaut (Turbo Pascal) ***
# *** 01-Oct-1995 umgesetzt in Object-Pascal fuer Borland DELPHI 1.0 ***
# *** 07-Apr-1998 umgesetzt in JAVA-Script ***
# *** 15-Mar-1999 umgesetzt in die JAVA Klasse QwjLocator ***
# *** 11-Sep-2002 umgesetzt in PHP4 ***
# *** 17-Aug-2010 verschiedene Rundungsmoeglichkeiten in function qrbQtf ***
# *** ***
# ******************************************************************************



#-------------------------------------------------------------------------------------
#
# Berechnung des Cosinus zu einem gegebenen Gradwinkel
#
#-------------------------------------------------------------------------------------

function gCos($winkel) {
return cos($winkel * pi() / 180.0);
}

#-------------------------------------------------------------------------------------
#
# Berechnung des Gradwinkels zum gegebenen Cosinuswer
#
#-------------------------------------------------------------------------------------

function arcgCos($cosinus) {
$arcBog = 0; // Hilfsvariable vor Gradumrechnung
$result = 0; // return-Wert

if ($cosinus >= 1.0) {
$result = 0.0;
} // Sonderfall 0 Grad
else
if ($cosinus <= -1.0) {
$result = 180.0;
} // Sonderfall 180 Grad
else {
// ARCBOG:=PI/2-ARCTAN(COSINUS/(SQRT(1-SQR(COSINUS))));
$arcBog = pi() / 2.0 - atan($cosinus / (sqrt(1 - ($cosinus * $cosinus))));
// Umrechnung vom Bogenmass in Grad
$result = $arcBog * 180.0 / pi();
};
return $result;
}


#-------------------------------------------------------------------------------------
#
# Berechnung des Sinus zu einem gegebenen Gradwinkel
#
#-------------------------------------------------------------------------------------

function gSin($winkel) {
$gsin=sin($winkel*pi()/180);
return $gsin;
}

#-------------------------------------------------------------------------------------
#
# Die Funktion "QrbQtf" berechnet die Entfernung (QRB) zwischen zwei geografischen
# Koordinaten und den Winkel (Antennenrichtung, QTF)
#
#-------------------------------------------------------------------------------------

function QrbQtf($o1, $n1, $o2, $n2) {

global $yqrb;
global $yqtf;
global $yqrbround;

$yqrb = 0;
$yqtf = 0;

if (($o1 == $o2) && ($n1 == $n2)) return;


$ew = 0; // Entfernungswinkel
$rv = 0; // vorlaeufige Richtung

// Entfernungsberechnung

$ew = arcgCos(gSin($n1) * gSin($n2) + gCos($n1) * gCos($n2) * gCos($o2 - $o1));
$yqrb = 40009.0 / 360.0 * $ew;

// Richtungsberechnung

$rv = arcgCos((gSin($n2) - gSin($n1) * gCos($ew)) / (gCos($n1) * gSin($ew)));

$oo = gSin($o2 * -1 - $o1 * -1);

if ($oo >= 0)
$yqtf = $rv;
else
$yqtf = 360.0 - $rv;

switch ($yqrbround):
case 1 : $yqrb = round($yqrb,1); break;
case 2 : $yqrb = round($yqrb,2); break;
default : $yqrb = round($yqrb);
endswitch;

$yqtf = round($yqtf);

return;
}

#-------------------------------------------------------------------------------------
#
# Die Funktion "toDeg" rechnet einen QTH-Locator in geografische Koordinaten um
#
#-------------------------------------------------------------------------------------

function toDeg($yqth, $yeast, $ynorth) {

global $yeast;
global $ynorth;

$ywi = array (0,0,0,0,0,0);
$ychr = array ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');

$yeast = 0.0;
$ynorth = 0.0;

$yqth=strtoupper($yqth);

# Ermittlung der Indexziffern aus dem QTH-Kenner

$yc = 0;
while ($yc < 6) {
$yco = substr($yqth,$yc,1);
$yy=0;
foreach ($ychr as $letter)
{
$yy++;
if ($letter==$yco) {
$ywi[$yc]=$yy;
if ($ywi[$yc]>26) $ywi[$yc] = $yy-26;
$ywi[$yc] = $ywi[$yc] -1 ;
}
}
$yc++;
}

# Berechnung der geografischen Koordinate aus den Indexziffern

$yeast = (-180 + ($ywi[0]*20) + ($ywi[2]*2) + ($ywi[4]/12.0) + (1/24.0)) * -1;
$ynorth= -90 + ($ywi[1]*10) + ($ywi[3]*1) + ($ywi[5]/24.0) + (1/48.0);

return;
}

#-------------------------------------------------------------------------------------
#
# Die Funktion "QRB" erhaelt zwei Maidenhead-Locator und initialisiert die globalen
# Variablen "$yqrb" und "$yqtf".
#
#-------------------------------------------------------------------------------------

function qrb ($locfrom, $locto, $errcode) {

global $yeast;
global $ynorth;
global $yqrb;
global $yqtf;

$errcode=0;

$yc="";
$yc=checkLoc($locfrom);
if ($yc>"") {
$yqrb=0;
$yqtf=0;
return $yc;
}

$yc="";
$yc=checkLoc($locto);
if ($yc>"") {
$yqrb=0;
$yqtf=0;
return $yc;
}

if ($locfrom == $locto) {
$yqrb=0;
$yqtf=0;
return $errcode;
}

toDeg($locfrom, $yeast, $ynorth);

$yeast1 = $yeast;
$ynorth1 = $ynorth;
toDeg($locto, $yeast, $ynorth);

QrbQtf($yeast1, $ynorth1, $yeast, $ynorth);

}

#-------------------------------------------------------------------------------------
#
# QTH-Locator auf Gueltigkeit pruefen
#
#-------------------------------------------------------------------------------------

function checkLoc($yploc) {

$ych1 = array ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S');
$ych2 = array ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X');
$ynum = array ('0','1','2','3','4','5','6','7','8','9');
$yrtn = "";

$yploc=strtoupper($yploc);
if (strlen($yploc)<>6) {
return "error: wrong locator length";
}

if (! in_array (substr($yploc,0,1), $ych1)) {return "error in locator (char 1 out of bounds)"; }
if (! in_array (substr($yploc,1,1), $ych1)) {return "error in locator (char 2 out of bounds)"; }
if (! in_array (substr($yploc,2,1), $ynum)) {return "error in locator (num 1 out of bounds)"; }
if (! in_array (substr($yploc,3,1), $ynum)) {return "error in locator (num 2 out of bounds)"; }
if (! in_array (substr($yploc,4,1), $ych2)) {return "error in locator (char 5 out of bounds)"; }
if (! in_array (substr($yploc,5,1), $ych2)) {return "error in locator (char 6 out of bounds)"; }

return $yrtn;
}



Re: NAC Locator Entfernungsberechnung +- 1km

Verfasst: Di 21. Feb 2017, 22:22
von DB7MM
dl4mfm hat geschrieben:
Di 21. Feb 2017, 16:55
Muss ich mal nachschauen, wenn ich etwas Luft habe. Diese 1km Differenz ist mir auch schon aufgefallen.
Nur keinen Streß machen! Wie in Poms Link zu sehen ist, runden die NAC-Leute konsequent auf. Selbst das eigene Locator Kleinfeld bekommt damit 1 km, ab 1,01 km wird dann schon auf 2 km aufgerundet.
Es ist also nichts falsch an Deinem Code, es geht nur um die Frage, wie man die Entfernungen rundet. Immer ab, immer auf oder kaufmännisch.

Mich würde interessieren, wie das bei anderen Contesten gehandhabt wird.

Ach ja: Hier steht's im Code. Wenn ich das richtig sehe, ist ab PHP 5.3 PHP_ROUND_HALF_UP der Standardwert, also kaufmännisch runden. Keine Ahnung, was PHP 4 macht.
switch ($yqrbround):
case 1 : $yqrb = round($yqrb,1); break;
case 2 : $yqrb = round($yqrb,2); break;
default : $yqrb = round($yqrb);
endswitch;
73 de Michael, DB7MM

Re: NAC Locator Entfernungsberechnung +- 1km

Verfasst: Mi 7. Feb 2018, 15:06
von dl4mfm
.
Ich habe jetzt die Enfernungsberechnung ab sofort den IARU Region I Contestregeln angepasst.


Mir ist beim Durchsehen der UKW-Contestlogs aufgefallen, dass manchmal sogar eine Differenz von 2 Kilometern zur GMA Berechnung waren.

Das Original der GMA-Berechnung stammt ja von DL5FBD und er hatte einen Erdumfang von 40009 km angegeben, die in 360° aufgeteilt werden. Das ergibt einen Faktor von 111.136

Dazu habe ich im Internet gefunden:
How Far Is One Degree?

Converting NASA's measurement of the Earth's radius into meters and substituting it in the formula for arc length, we find that each degree the radius line of the Earth sweeps out corresponds to 111,139 meters. If the line sweeps out an angle of 360 degrees, it covers a distance of 40,010, 040 meters. This is a little less than the actual equatorial circumference of the planet, which is 40,030,200 meters. The discrepancy is due to the fact that the Earth bulges at the equator.

https://sciencing.com/convert-distances ... 58322.html
In den IARU Contestregeln steht, dass hier zur Entfernungsberechnung ein Faktor 111.2 benutzt wird,
Um Vergleichswerte vergleichbar zu machen, sollte für die Umrechnung von Grad in Kilometer bei der Berechnung der Abstände mit Hilfe der sphärischen Geometriegleichung ein Faktor von 111,2 verwendet werden.

https://www.iaru-r1.org/images/VHF/File ... s_2018.pdf
Der hieraus errechnete Wert wird immer abgerundet und 1 dazugezählt. Das ist das Ergebnis.

GMAC heute - vor der Umstellung:
gmac1.JPG
gmac1.JPG (36.04 KiB) 18293 mal betrachtet
GMAC heute - nach der Umstellung:
gmac2.JPG
gmac2.JPG (38.08 KiB) 18293 mal betrachtet



73 ...

Re: NAC Locator Entfernungsberechnung +- 1km

Verfasst: Mo 19. Feb 2018, 13:25
von dl4mfm
War irgendwie klar, dass die "neue" Entfernungsberechnung sich woanders negativ auswirkt.
Ich habe die Aktivierung auf den Homert (DM/NW-206) geplant und sehe dann, dass in der Liste der nächsten Gipfel der Homert wieder auftaucht. Klar - gleicher QTH-Locator, der jetzt aber mit 1km bewertet wird ;) und deshalb in der Liste auftaucht.
qrb.jpg
qrb.jpg (51.35 KiB) 18190 mal betrachtet