Hallo,

heeft er iemand een script of functie om decimale coordinaten ( breedtegraad :52.09065 lengtegraad :5.12132) om te zetten naar h ddd° mm.mmm' (graden en minuten) breedtegraad :N52° 05.439 lengetgraad :E005° 07.279 en omgekeerd.

Dank bij voorbaat
Maar snap je nu wel wat je fout doet? ( Zie anders mijn vorige reactie )
Je plaatst al meer dan 2 jaar posts op dit forum.
Functions zijn toch wel een van de basale zaken in PHP....
Ivo P op 08/11/2023 09:42:28

Je plaatst al meer dan 2 jaar posts op dit forum.
Functions zijn toch wel een van de basale zaken in PHP....


Als je goed kijkt is het meer: Geef mij svp een werkende script met minimale info.
Je zou haast voorstellen: hier heb je een tikke a x uur ;-)

Heren,

Alvast bedankt voor alles.
Maar is het nu opgelost?
neen, maar aangezien de reacties is het misschien beter dat ik hier stop.
Ik weet dat ik een leek ben, en aangezien de ouderdom kan ik niet zo vlug alles opslaan.

Dank bij voorbaat
Berta,

Als je stopt, bereik je nog niks.
De adviezen zijn wel al diverse keren gegeven, alleen gebeurd er niks mee ( vinden wij zonde van onze tijd, mede omdat wij je proberen te helpen )

Ik heb je zelfs uitgelegd in een paar posts terug waarom het fout gaat ( begrijpen van de code en de werking ervan ).

Hierbij nogmaals de code zoals ik het bedoelde... splits de functies op..:

function BeforeProcessRowList(&$data, $pageObject){
	$dmsLatitude=$data["Breedtegraad"];
	$dmsLongitude=$data["Lengtegraad"];


	$coordinates = DMSToDecimal($dmsLatitude . " " . $dmsLongitude);

	if ($coordinates) {
		$latitude = $coordinates['latitude'];
		$longitude = $coordinates['longitude'];
		
		echo "Breedtegraad (decimaal): $latitude<br>";
		echo "Lengtegraad (decimaal): $longitude<br>";
	} else {
		echo "Ongeldige DMS-cordinaten.";
	}

	return true;
}


function DMSToDecimal($dms) {
    echo $dms ;
    preg_match('/([NS])(\d+) (\d+\.\d+)/', $dms, $latMatches);
    preg_match('/([EW])(\d+) (\d+\.\d+)/', $dms, $lonMatches);

    if (!empty($latMatches)) {
        $latDirection = $latMatches[1];
        $latDegrees = (float)$latMatches[2];
        $latMinutes = (float)$latMatches[3];

        $latitude = ($latDirection === 'N') ? ($latDegrees + ($latMinutes / 60)) : -($latDegrees + ($latMinutes / 60));
    } else {
        return false; // Invalid latitude format
    }

    if (!empty($lonMatches)) {
        $lonDirection = $lonMatches[1];
        $lonDegrees = (float)$lonMatches[2];
        $lonMinutes = (float)$lonMatches[3];

        $longitude = ($lonDirection === 'E') ? ($lonDegrees + ($lonMinutes / 60)) : -($lonDegrees + ($lonMinutes / 60));
    } else {
        return false; // Invalid longitude format
    }

    return ['latitude' => $latitude, 'longitude' => $longitude];
}
 
e vH,

bedankt dat je dit wil doen.
Kort uitgelegd , ik werk via phprunner en in dit programma kan je niet onder de functie function BeforeProcessRowList(&$data, $pageObject) gaan schrijven , enkel door de eventslist manueel aan te passen, maar zodra je iets wijzigt wordt dit ook herschreven. Zo probeer ik iets te leren van php, en nogmaals op mijn ouderdom gaat alles niet zo vlug meer in het kopje.
Daarom vroeg ik ook of het mogelijk is om de function DMSToDecimal($dms) om te vormen in een klein scriptje , zodat het onder de function BeforeProcessRowList(&$data, $pageObject)kan blijven staan.

Maar alvast heel erg bedankt voor alle moeite die je steekt in deze leek.
we zouden nog iets over
if (!function_exists()) {}

kunnen zeggen, maar dat maak het script niet beter.

En wat phprunner zou zijn? Geen idee, maar klinkt niet best

Reageren