Omrekenen coordinaten vice versa
Pagina: « vorige 1 2 3 4 5 volgende »
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.
Welke manier gebruik je nu Bertha? Losse functies In mijn optiek is dit gewoon het enigste beste. Waarom zou je steeds opnieuw een functie bouwen? Probeer dat anders eens te beredeneren.
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.....
- 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
Als ik echo doe van $dms krijg ik dit : N51° 51.802 E004° 32.262
Welk script gebruik je nu?
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+)
Scherp!
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.
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 :)
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")
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.
Code (php)
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
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];
}
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)
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
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];
}
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];
}
dit is momenteel de code
Code (php)
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
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;
}
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;
}
Berta Pappens op 08/11/2023 11:11:55:
E vH
dit is momenteel de code:
dit is momenteel de code:
verander hem naar:
Code (php)
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
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;
}
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
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.
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
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.
Natuurlijk moet ik dat doen of ga jij dit doen ?
Tenslotte heb ik dit niet gemaakt.
Jij bent niks verplicht ;-)