Omrekenen coordinaten vice versa

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 volgende »

- Ariën  -
Beheerder

- Ariën -

08/11/2023 10:50:13
Quote Anchor link
Welke manier gebruik je nu Bertha? Losse functies onder elkaar?

In mijn optiek is dit gewoon het enigste beste. Waarom zou je steeds opnieuw een functie bouwen? Probeer dat anders eens te beredeneren.
 
PHP hulp

PHP hulp

22/12/2024 14:43:35
 
Ivo P

Ivo P

08/11/2023 10:52:30
Quote Anchor link
kennelijk zijn je coordinaten niet juist.

Laten we eens diep nadenken. Wie zouden we kunnen vragen waarom de functie denkt dat het niet juist is?
Wie zou weten wat we in de functie gooien?

Dan zouden we kunnen kijken WAT er in gaat.
En waarom er dan FALSE terug komt.....
 
E vH

E vH

08/11/2023 10:54:28
Quote Anchor link
- Ariën - op 08/11/2023 10:50:13:
Probeer dat anders eens te beredeneren.



ik denk dat we dit even moeten proberen:
https://www.phphulp.nl/php/forum/topic/omrekenen-coordinaten-visa-versa/104816/3/#760846
 
Berta Pappens

Berta Pappens

08/11/2023 10:55:27
Quote Anchor link
Als ik echo doe van $dms krijg ik dit : N51° 51.802 E004° 32.262
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 10:59:43
Quote Anchor link
Welk script gebruik je nu?
 
Ivo P

Ivo P

08/11/2023 11:01:54
Quote Anchor link
je regex klopt niet.

je zoekt in
N51° 51.802 E004° 32.262

naar

([NS])(\d+) (\d+\.\d+)

Dat graden symbool komt niet voor in de regex. Na de N51 zoek je naar een spatie....

probeer

([NS])(\d+)[^0-9]+(\d+\.\d+)
 
E vH

E vH

08/11/2023 11:02:43
Quote Anchor link
Scherp!
 
Berta Pappens

Berta Pappens

08/11/2023 11:04:41
Quote Anchor link
Hallo Heren,

zoals jullie nu bezig zijn kan ik niet meer volgen.
Daarom zou het misschien beter zijn dat we hier stoppen.
Maar mijn dank gaat uit naar jullie allemaal.
De enige oplossing die ik zie is dat de functie dmstodecimal omgevormd wordt tot een script zodat het in een event kan geplaats worden.
Maar als jullie dat niet zien zitten is het voor mij geen probleem.
Jullie zijn knappe kerels en ik ben een leek.
 
E vH

E vH

08/11/2023 11:08:48
Quote Anchor link
Berta,

Wat is je huidige code...waarin je de meldingen krijgt: ongeldige coordinaten?
Koppel deze even aan ons terug

De oplossing is er bijna.. ivo gaf het juiste resultaat :)
 
Ivo P

Ivo P

08/11/2023 11:08:59
Quote Anchor link
volgens mij ben je nu op 99.9% van het probleem.

Alleen 2x die spatie vervangen door [^0-9]+ (wat staat voor "elk teken, behalve cijfers")

Toevoeging op 08/11/2023 11:09:05:

volgens mij ben je nu op 99.9% van het probleem.

Alleen 2x die spatie vervangen door [^0-9]+ (wat staat voor "elk teken, behalve cijfers")
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 11:09:16
Quote Anchor link
je kan proberen om de reguliere expressie (zie Ivo P) aan te passen. Misschien ben je al op 99% van een werkende code, en is dit de oplossing.
 
E vH

E vH

08/11/2023 11:10:44
Quote Anchor link
verander

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


naar dit:
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
function DMSToDecimal($dms) {
            echo $dms ;
            preg_match('/([NS])(\d+)[^0-9]+(\d+\.\d+)/', $dms, $latMatches);
            preg_match('/([EW])(\d+)[^0-9]+(\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];
        }
 
Berta Pappens

Berta Pappens

08/11/2023 11:11:55
Quote Anchor link
E vH

dit is momenteel de code
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
if(!function_exists('DMSToDecimal')) {
        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=$data["Breedtegraad"];
    $dmsLongitude=$data["Lengtegraad"];


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

// Place event code here.
// Use "Add Action" button to add code snippets.

return true;
}
 
E vH

E vH

08/11/2023 11:13:09
Quote Anchor link
Berta Pappens op 08/11/2023 11:11:55:
E vH

dit is momenteel de code:


verander hem naar:
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
if(!function_exists('DMSToDecimal')) {
        function DMSToDecimal($dms) {

            preg_match('/([NS])(\d+)[^0-9]+(\d+\.\d+)/', $dms, $latMatches);
            preg_match('/([EW])(\d+)[^0-9]+(\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.";
    }

// Place event code here.
// Use "Add Action" button to add code snippets.

return true;
}
Gewijzigd op 08/11/2023 11:13:33 door E vH
 
Berta Pappens

Berta Pappens

08/11/2023 11:18:00
Quote Anchor link
Allemaal,

Denk dat we er zijn :
output met de var_dump erbij .

N51° 51.802 E004° 32.262array(2) { ["latitude"]=> float(51.863366666667) ["longitude"]=> float(4.5377) } Breedtegraad (decimaal): 51.863366666667
Lengtegraad (decimaal): 4.5377
N50° 54.062 E006° 54.411array(2) { ["latitude"]=> float(50.901033333333) ["longitude"]=> float(6.90685) } Breedtegraad (decimaal): 50.901033333333
Lengtegraad (decimaal): 6.90685
N50° 21.471 E015° 47.393array(2) { ["latitude"]=> float(50.35785) ["longitude"]=> float(15.789883333333) } Breedtegraad (decimaal): 50.35785
Lengtegraad (decimaal): 15.789883333333
N49° 32.138 E017° 43.389array(2) { ["latitude"]=> float(49.535633333333) ["longitude"]=> float(17.72315) } Breedtegraad (decimaal): 49.535633333333
Lengtegraad (decimaal): 17.72315

nogmaals allemaal heel hartelijk bedankt om mij te helpen als oud leek en heel veel begrip voor jullie geduld.
Jullie zijn professionele tegenover een nietsnut.
 
E vH

E vH

08/11/2023 11:18:31
Quote Anchor link
Kudos voor Ivo :-)

En top dat je het niet opgaf Berta!
Gewijzigd op 08/11/2023 11:18:55 door E vH
 
Berta Pappens

Berta Pappens

08/11/2023 11:26:20
Quote Anchor link
allemaal,

Bedankt voor alles en als je wil kan je kijken naar mijn sites gemaakt met phprunner
https://www.dcjt.be/camperplaatsen en ook
https://www.dcjt.be/camper12

Nogmaals iedereen 1000 maal bedankt en respect voor jullie geduld
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 11:29:19
Quote Anchor link
Graag gedaan, Berta!

Toevoeging op 08/11/2023 11:37:15:

Anyway, misschien is het de moeite waard om de functie te delen in de scripts-sectie hier op PHPhulp.
 
Berta Pappens

Berta Pappens

08/11/2023 11:39:17
Quote Anchor link
Ariën,
Natuurlijk moet ik dat doen of ga jij dit doen ?
Tenslotte heb ik dit niet gemaakt.
 
- Ariën  -
Beheerder

- Ariën -

08/11/2023 11:50:22
Quote Anchor link
Jij bent niks verplicht ;-)
 

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.