Omrekenen coordinaten vice versa

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 volgende »

E vH

E vH

07/11/2023 12:16:26
Quote Anchor link
je hebt mijn edit niet gezien.

ik krijg als output:
Breedtegraad: N 47° 49.782'
Lengtegraad: W 003° 41.806'
 
PHP hulp

PHP hulp

13/05/2024 20:26:41
 
Berta Pappens

Berta Pappens

07/11/2023 12:21:08
Quote Anchor link
EvH,

Prachtig van U, blijkbaar klopt het nu helemaal
heb ook andere ingaves gedaan en ze kloppen ook .

Nogmaals heel vriendelijk bedankt voor deze hulp.
Ben je toevallig een geocacher ?
 
- Ariën  -
Beheerder

- Ariën -

07/11/2023 12:23:25
Quote Anchor link
Ik wel in ieder geval! :-)
In mijn buurt heb ik er zelf vier neergelegd.
 
E vH

E vH

07/11/2023 12:31:35
Quote Anchor link
Geen geocacher, maar heb wel eens meegewerkt aan een project door een fanatieke geocacher.

Fijn dat het nu werkt :)
 
Berta Pappens

Berta Pappens

07/11/2023 13:04:28
Quote Anchor link
ariën,

Dan ken jij het programma Gsak.
Gsak zal verdwijnen en geen toegang meer krijgen bij geocaching door de aanpassing van de API's
Misschien is het een doel om er eentje te maken zoals gsak maar dan in php.


Toevoeging op 07/11/2023 13:05:46:

EvH,

Nogmaals bedankt voor alles, en als je nog een project wil geen probleem, het programma Gsak dat zal verdwijnen namaken in php.


Toevoeging op 07/11/2023 17:05:22:

E vH ,

Is het mogelijk om het script ook te wijzigen zonder dat het een functie is AUB.
Dank bij voorbaat.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
function DMSToDecimal($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];
}


$dmsLatitude = "N53° 34.127";
$dmsLongitude = "E006° 44.986";

$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-coördinaten.";
}

?>

 
 
E vH

E vH

08/11/2023 09:08:18
Quote Anchor link
Hoi Berta,

Waarom zou je dat willen? Iets meer toelichting zou wenselijk zijn als je het mij vraagt.

Een functie gebruik je namelijk om een bepaald doel te behalen... en deze specifieke functie doet precies dat toch?
Gewijzigd op 08/11/2023 09:08:31 door E vH
 
Berta Pappens

Berta Pappens

08/11/2023 09:24:41
Quote Anchor link
Omdat deze functie niet werkt binnen een andere functie

de code ziet er dan zo uit, maar blijkbaar werkt dit niet

de foutmelding is :
Fatal error: Cannot redeclare DMSToDecimal() (previously declared

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function BeforeProcessRowList(&$data, $pageObject)
{


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];
}

$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;
;
}
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 09:26:07
Quote Anchor link
Je kan prima een functie aanroepen in een andere functie.

Die foutmelding die jij krijgt betekent dat jij een functie aanmaakt met dezelfde naam, en dat kan niet. In jouw code gaat daar niks fout.
Gewijzigd op 08/11/2023 09:27:31 door - Ariën -
 
Berta Pappens

Berta Pappens

08/11/2023 09:29:16
Quote Anchor link
Ariën,

Er is geen functie met dezelfde naam aanwezig function DMSToDecimal()
 
E vH

E vH

08/11/2023 09:31:33
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Fatal error: Cannot redeclare DMSToDecimal() (previously declared


Dit is niet de gehele foutmelding. Er hoort namelijk een verwijzing te zijn naar een bepaalde regel.

Wat Ariën zegt klopt, je hebt nu 2 dezelfde functienamen, waarschijnlijk door een loop?

Zet die functie DMSToDecimal() eens buiten de functie BeforeProcessRowList()
 
Ivo P

Ivo P

08/11/2023 09:31:44
Quote Anchor link
Berta Pappens op 08/11/2023 09:29:16:
Ariën,

Er is geen functie met dezelfde naam aanwezig function DMSToDecimal()


jawel.

Achter jouw foutmeldng
Quote:
de foutmelding is :
Fatal error: Cannot redeclare DMSToDecimal() (previously declared


staat precies waar. Helaas knip je dat stuk net weg van de foutmelding.
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 09:32:30
Quote Anchor link
Blijkbaar vindt PHP van wel. Mogelijk vanwege een include() of require() die dezelfde functie meerdere keren includeert

Met jouw functie lijkt niks mis. Er staat in je foutmelding ook een pad met lijnnummer?
Gewijzigd op 08/11/2023 09:33:13 door - Ariën -
 
Berta Pappens

Berta Pappens

08/11/2023 09:33:09
Quote Anchor link
wat er wel gebeurd is dat de functie function BeforeProcessRowList(&$data, $pageObject)
een tabel af loopt van honderd records
 
Ivo P

Ivo P

08/11/2023 09:34:35
Quote Anchor link
Berta Pappens op 08/11/2023 09:33:09:
wat er wel gebeurd is dat de functie function BeforeProcessRowList(&$data, $pageObject)
een tabel af loopt van honderd records


ondanks de fatal error?
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 09:35:09
Quote Anchor link
Berta Pappens op 08/11/2023 09:33:09:
wat er wel gebeurd is dat de functie function BeforeProcessRowList(&$data, $pageObject)
een tabel af loopt van honderd records

Ok! Wat zou daar het probleem van moeten zijn?
Gewijzigd op 08/11/2023 09:35:46 door - Ariën -
 
E vH

E vH

08/11/2023 09:36:20
Quote Anchor link
Dat klopt het toch wat je functie doet..

je roept BeforeProcessRowList() aan..

Die gaat vervolgens DMSToDecimal() aanroepen.

Zodra BeforeProcessRowList() klaar is, start je BeforeProcessRowList() weer.. ( want honderd records ).
En vervolgens roept BeforeProcessRowList() weer functie DMSToDecimal() aan.. en dat levert je de error op.

Je hebt nu zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
BeforeProcessRowList($data({
  DMSToDecimal($data2) {
  }
}


maak er dit van:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
BeforeProcessRowList($data({
 // roep hier DMSToDecimal data aan
}
DMSToDecimal($data) {
// hier alle data enzo
}
 
Berta Pappens

Berta Pappens

08/11/2023 09:36:33
Quote Anchor link
Dat is nu ook de vraag die ik mij stel Ariën..
 
Ivo P

Ivo P

08/11/2023 09:37:54
Quote Anchor link
ah: je definieert dus een functie BINNEN een andere functie.

Volgens mij snap je iets niet aan het hele function-concept.
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 09:39:33
Quote Anchor link
Ik denk dat het nu wel duidelijk is:

Een functie kan je prima aanroepen in een andere functie, maar aanmaken in een andere functie is not-done.
 
Berta Pappens

Berta Pappens

08/11/2023 09:40:00
Quote Anchor link
Ivo P,

Dat is het inderdaad zo , ik ben een leek .
 

Pagina: « vorige 1 2 3 4 5 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.