Omrekenen coordinaten vice versa
Pagina: « vorige 1 2 3 4 5 volgende »
ik krijg als output:
Breedtegraad: N 47° 49.782'
Lengtegraad: W 003° 41.806'
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 ?
In mijn buurt heb ik er zelf vier neergelegd.
Fijn dat het nu werkt :)
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)
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
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.";
}
?>
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.";
}
?>
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
de code ziet er dan zo uit, maar blijkbaar werkt dit niet
de foutmelding is :
Fatal error: Cannot redeclare DMSToDecimal() (previously declared
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
51
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;
;
}
{
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;
;
}
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 -
Er is geen functie met dezelfde naam aanwezig function DMSToDecimal()
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()
Berta Pappens op 08/11/2023 09:29:16:
Ariën,
Er is geen functie met dezelfde naam aanwezig function DMSToDecimal()
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
Fatal error: Cannot redeclare DMSToDecimal() (previously declared
staat precies waar. Helaas knip je dat stuk net weg van de foutmelding.
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 -
een tabel af loopt van honderd records
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
een tabel af loopt van honderd records
ondanks de fatal error?
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
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 -
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:
maak er dit van:
Dat is nu ook de vraag die ik mij stel Ariën..
Volgens mij snap je iets niet aan het hele function-concept.
Een functie kan je prima aanroepen in een andere functie, maar aanmaken in een andere functie is not-done.
Dat is het inderdaad zo , ik ben een leek .