Omrekenen coordinaten vice versa
Ze zijn toegevoegd.
Iedereen blijkbaar zit er nog een probleem in
Test het met de volgende cords en het is niet juist :
$latitude = 50.0015;
$longitude = 8.331667;
Test het met de volgende cords en het is juist :
$latitude = 53.568783;
$longitude = 6.749766;
waar zit de fout nu ?
Hier nogmaals 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
<?php
# referentiepunt: https://www.javawa.nl/coords.html
function decimalToDMS($decimal, $isLatitude) {
if ($isLatitude) {
$h = ($decimal >= 0) ? 'N' : 'S';
} else {
$h = ($decimal >= 0) ? 'E' : 'W';
}
$decimaal = round($decimal,5);
$graden_explode = explode(".", $decimaal);
$graden = abs(intval($graden_explode[0]));
$uren = $graden_explode[1];
//$minuten = round($uren*60/100000,3);
$minuten = round((('0.'.$uren)*60),3);
if ($isLatitude) {
$graden = $graden;
} else {
$graden = sprintf("%'.03d", $graden);
}
//cho 'Decimaal: '.$decimaal.'<br/>';
//echo 'Graden: '.$graden.'<br/>';
//echo 'Graden: '.$graden_explode[1].'<br/>';
//echo 'h ddd.ddddd° (graden): '.$h.' '.$graden.'.'.$uren.'°<br/>';
//echo 'h ddd° mm.mmm\' (graden en minuten): '.$h.' '.$graden.'° '.$minuten.'\'<br/>';
$full_format = ''.$h.''.$graden.'° '.$minuten.'';
return $full_format;
}
$latitude = 50.0015;
$longitude = 8.331667;
//$latitude = 53.568783;
//$longitude = 6.749766;
$dmsLatitude = decimalToDMS($latitude, true);
$dmsLongitude = decimalToDMS($longitude, false);
echo "Breedtegraad: $dmsLatitude<br>";
echo "Lengtegraad: $dmsLongitude<br>";
?>
# referentiepunt: https://www.javawa.nl/coords.html
function decimalToDMS($decimal, $isLatitude) {
if ($isLatitude) {
$h = ($decimal >= 0) ? 'N' : 'S';
} else {
$h = ($decimal >= 0) ? 'E' : 'W';
}
$decimaal = round($decimal,5);
$graden_explode = explode(".", $decimaal);
$graden = abs(intval($graden_explode[0]));
$uren = $graden_explode[1];
//$minuten = round($uren*60/100000,3);
$minuten = round((('0.'.$uren)*60),3);
if ($isLatitude) {
$graden = $graden;
} else {
$graden = sprintf("%'.03d", $graden);
}
//cho 'Decimaal: '.$decimaal.'<br/>';
//echo 'Graden: '.$graden.'<br/>';
//echo 'Graden: '.$graden_explode[1].'<br/>';
//echo 'h ddd.ddddd° (graden): '.$h.' '.$graden.'.'.$uren.'°<br/>';
//echo 'h ddd° mm.mmm\' (graden en minuten): '.$h.' '.$graden.'° '.$minuten.'\'<br/>';
$full_format = ''.$h.''.$graden.'° '.$minuten.'';
return $full_format;
}
$latitude = 50.0015;
$longitude = 8.331667;
//$latitude = 53.568783;
//$longitude = 6.749766;
$dmsLatitude = decimalToDMS($latitude, true);
$dmsLongitude = decimalToDMS($longitude, false);
echo "Breedtegraad: $dmsLatitude<br>";
echo "Lengtegraad: $dmsLongitude<br>";
?>
Misschien komt er iets anders uit dan jij verwacht.
Dat kan.
Wij hebben geen idee.
Maar mogelijk als je dan kijkt naar wat jij verwacht en wat er uitkomt, je een aanwijzing hebt.
En dan is ook nog de vraag waarom jouw verwachting dan wel zou kloppen. Want dat kan ook nog he.
Toevoeging op 09/11/2023 19:18:34:
maar de opmerking "het gaat niet goed" is er 1 in de categorie: heb een probleem met mijn auto: ik geraak niet op mijn werk"
En dat een garagist dan na 25 vragen er achter moet komen dat dat is, omdat de brug halverwege de route afgesloten is.
Als je het volgende ingeeft :
$latitude = 50.0015;
$longitude = 8.331667;
Dan is de output dit
Breedtegraad: N50° 0.09
Lengtegraad: E008° 19.9
moet zijn N50° 00.090 E008° 19.900
Is daar iets aan te doen AUB.
Dank bij voorbaat
Berta Pappens op 09/11/2023 17:57:57:
[...]
waar zit de fout nu ?
waar zit de fout nu ?
Goedemorgen Berta,
Er is geen "fout".. het script, doet wat het moet doen.
Er is alleen een uitkomst uit het script, die niet voldoet aan de verwachting.
Dat betekend dat dit ingebouwd moet worden in het script.
Alleen; ik zie de logica even niet helemaal.
Als ik als uitgangspunt neem:
Quote:
Breedtegraad: N50° 0.09
Lengtegraad: E008° 19.9
Lengtegraad: E008° 19.9
Dan zit mijn issue niet in de lengtegraad.. deze kunnen wij laten afronden op 3 cijfers.
Het probleem zit hem even in de breedtegraad...kun jij mij uitleggen waarom er een (voorloop)nul voor 0.09 geplaatst moet worden en bij andere uitkomsten niet?
Zodra dat duidelijk is, is het vrij makkelijk te corrigeren.
Gewijzigd op 10/11/2023 09:01:57 door E vH
bedankt voor uw reactie maar bij de minuten moet er steeds 2 getallen zijn, bij seconden 3.
Als het cijfer bij minuten lager is dan 10 moet er een 0 bijgeplaatst worden.
de seconden moeten altijd uit 3 cijfers bestaan ook als de twee laatste een 0 zijn.
de berekening is nu 0.0015x60 = 0.09 dus hier nul minuten dit wordt 00
de seconden zijn 09 dit wordt dan 090 (2 cijfers dan wordt er een 0 bij geplaatst).
is het een beetje duidelijk
dank bij voorbaat
PS :In het script staan ook nog andere cords daar moet dan ook op getest worden.
Duidelijk verhaal! Ik heb op dit moment even geen tijd, maar je hebt het antwoord nu gegeven waardoor het vrij makkelijk om te bouwen is.
Hier de laatste code
ook testen met deze aub
//$latitude = 53.568783;
//$longitude = 6.749766;
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
52
53
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
52
53
<?php
# referentiepunt: https://www.javawa.nl/coords.html
function decimalToDMS($decimal, $isLatitude) {
if ($isLatitude) {
$h = ($decimal >= 0) ? 'N' : 'S';
} else {
$h = ($decimal >= 0) ? 'E' : 'W';
}
$decimaal = round($decimal,5);
$graden_explode = explode(".", $decimaal);
$graden = abs(intval($graden_explode[0]));
$uren = $graden_explode[1];
//$minuten = round($uren*60/100000,3);
$minuten = round((('0.'.$uren)*60),3);
echo $minuten ;
echo '<br/>';
if ($isLatitude) {
$graden = $graden;
} else {
$graden = sprintf("%'.03d", $graden);
}
echo 'Decimaal: '.$decimaal.'<br/>';
echo 'Graden: '.$graden.'<br/>';
echo 'min/sec: '.$graden_explode[1].'<br/>';
echo 'h ddd.ddddd° (graden): '.$h.' '.$graden.'.'.$uren.'°<br/>';
echo 'h ddd° mm.mmm\' (graden en minuten): '.$h.' '.$graden.'° '.$minuten.'\'<br/>';
$full_format = ''.$h.''.$graden.'° '.$minuten.'';
return $full_format;
}
$latitude = 50.0015;
$longitude = 8.331667;
//$latitude = 53.568783;
//$longitude = 6.749766;
$dmsLatitude = decimalToDMS($latitude, true);
$dmsLongitude = decimalToDMS($longitude, false);
echo "Breedtegraad: $dmsLatitude<br>";
echo "Lengtegraad: $dmsLongitude<br>";
?>
# referentiepunt: https://www.javawa.nl/coords.html
function decimalToDMS($decimal, $isLatitude) {
if ($isLatitude) {
$h = ($decimal >= 0) ? 'N' : 'S';
} else {
$h = ($decimal >= 0) ? 'E' : 'W';
}
$decimaal = round($decimal,5);
$graden_explode = explode(".", $decimaal);
$graden = abs(intval($graden_explode[0]));
$uren = $graden_explode[1];
//$minuten = round($uren*60/100000,3);
$minuten = round((('0.'.$uren)*60),3);
echo $minuten ;
echo '<br/>';
if ($isLatitude) {
$graden = $graden;
} else {
$graden = sprintf("%'.03d", $graden);
}
echo 'Decimaal: '.$decimaal.'<br/>';
echo 'Graden: '.$graden.'<br/>';
echo 'min/sec: '.$graden_explode[1].'<br/>';
echo 'h ddd.ddddd° (graden): '.$h.' '.$graden.'.'.$uren.'°<br/>';
echo 'h ddd° mm.mmm\' (graden en minuten): '.$h.' '.$graden.'° '.$minuten.'\'<br/>';
$full_format = ''.$h.''.$graden.'° '.$minuten.'';
return $full_format;
}
$latitude = 50.0015;
$longitude = 8.331667;
//$latitude = 53.568783;
//$longitude = 6.749766;
$dmsLatitude = decimalToDMS($latitude, true);
$dmsLongitude = decimalToDMS($longitude, false);
echo "Breedtegraad: $dmsLatitude<br>";
echo "Lengtegraad: $dmsLongitude<br>";
?>
Toevoeging op 10/11/2023 15:56:04:
Hallo E vH,
Ik heb zelf zitten zoeken naar een oplossing en dit is het volgens mij.
Misschien kan het eenvoudiger.
daar waar staat //bijgemaakt dat is wat ik toegevoegd heb.
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
52
53
54
55
56
57
58
59
60
61
62
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
52
53
54
55
56
57
58
59
60
61
62
<?php
function decimalToDMS($decimal, $isLatitude) {
if ($isLatitude) {
$h = ($decimal >= 0) ? 'N' : 'S';
} else {
$h = ($decimal >= 0) ? 'E' : 'W';
}
$decimaal = round($decimal,5);
$graden_explode = explode(".", $decimaal);
$graden = abs(intval($graden_explode[0]));
$uren = $graden_explode[1];
//$minuten = round($uren*60/100000,3);
$minuten = round((('0.'.$uren)*60),3);
$minuten_explode = explode(".", $minuten); // bijgemaakt
if ($isLatitude) {
$graden = $graden;
} else {
$graden = sprintf("%'.03d", $graden);
}
//bijgemaakt
if($minuten_explode[0]< 10)
{
$minuten = '0'.$minuten.'';
}
if (strlen($minuten_explode[1])==2)
{
$minuten = ''.$minuten.'0';
}
if (strlen($minuten_explode[1])==1)
{
$minuten = ''.$minuten.'00';
}
$full_format = ''.$h.''.$graden.'° '.$minuten.'';
return $full_format;
}
$latitude = 50.0015;
$longitude = 8.331667;
//N50° 00.090 E008° 19.900
$dmsLatitude = decimalToDMS($latitude, true);
$dmsLongitude = decimalToDMS($longitude, false);
echo "Breedtegraad: $dmsLatitude<br>";
echo "Lengtegraad: $dmsLongitude<br>";
?>
function decimalToDMS($decimal, $isLatitude) {
if ($isLatitude) {
$h = ($decimal >= 0) ? 'N' : 'S';
} else {
$h = ($decimal >= 0) ? 'E' : 'W';
}
$decimaal = round($decimal,5);
$graden_explode = explode(".", $decimaal);
$graden = abs(intval($graden_explode[0]));
$uren = $graden_explode[1];
//$minuten = round($uren*60/100000,3);
$minuten = round((('0.'.$uren)*60),3);
$minuten_explode = explode(".", $minuten); // bijgemaakt
if ($isLatitude) {
$graden = $graden;
} else {
$graden = sprintf("%'.03d", $graden);
}
//bijgemaakt
if($minuten_explode[0]< 10)
{
$minuten = '0'.$minuten.'';
}
if (strlen($minuten_explode[1])==2)
{
$minuten = ''.$minuten.'0';
}
if (strlen($minuten_explode[1])==1)
{
$minuten = ''.$minuten.'00';
}
$full_format = ''.$h.''.$graden.'° '.$minuten.'';
return $full_format;
}
$latitude = 50.0015;
$longitude = 8.331667;
//N50° 00.090 E008° 19.900
$dmsLatitude = decimalToDMS($latitude, true);
$dmsLongitude = decimalToDMS($longitude, false);
echo "Breedtegraad: $dmsLatitude<br>";
echo "Lengtegraad: $dmsLongitude<br>";
?>
in plaats van een stapel if statements die de "lengte" van een getal controleren
Ik wil steeds bijleren en jullie zijn de specialisten, geef dan eens een voorbeeld op mijn if statements
Ben niet zo goed met functies.
bedankt
en ik heb je al eerder naar example #5 verwezen op die pagina.
Bedankt, maar zie er mij geen gat aan via sprint functie.
Waar loop je op vast? Wat heb je al geprobeerd?
bij de minuten moet er steeds 2 getallen zijn, bij seconden 3.
Als het cijfer bij minuten lager is dan 10 moet er een 0 bijgeplaatst worden.
de seconden moeten altijd uit 3 cijfers bestaan ook als de twee laatste een 0 zijn.
de berekening is nu 0.0015x60 = 0.09 dus hier nul minuten dit wordt 00
de seconden zijn 09 dit wordt dan 090 (2 cijfers dan wordt er een 0 bij geplaatst).
dit snap ik wel
Code (php)
1
2
3
4
2
3
4
$number = 9;
$str = "Beijing";
$txt = sprintf("There are %u million bicycles in %s.",$number,$str);
echo $txt;
$str = "Beijing";
$txt = sprintf("There are %u million bicycles in %s.",$number,$str);
echo $txt;
verder is het te moeilijk voor mij.
bedankt
Toevoeging op 12/11/2023 19:52:43:
Ik probeer maar er komt niks goeds uit de minten zijn :
minuten: 0.09
minuten: 19.9
met dit krijg ik
$minuten =sprintf('%02d' , $minuten);
h ddd° mm.mmm' (graden en minuten): N 50° 00'
minuten: 19.9
h ddd° mm.mmm' (graden en minuten): E 008° 19'
dat is al iets goeds maar hoe krijg ik er nog de 090 en de 900 achter ?
Kan iemand een hint geven aub.
Toevoeging op 12/11/2023 20:06:53:
blijkbaar heb ik het gevonden :
$minuten =sprintf('%06.3f' , $minuten);
toch bedankt heren ...
Het eerste is een samentrekking tussen VISA (voor het pinnen) en Versa (gezondheidsorganisatie)...
Die laatste is de beoogde latijnse uitdrukking.
Vooruit: Service van de zaak ;-)
zou niet weten hoe ik dit kan doen ???