Omrekenen coordinaten vice versa

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5

Berta Pappens

Berta Pappens

08/11/2023 12:04:14
Quote Anchor link
Ariën,

Ze zijn toegevoegd.
 
PHP hulp

PHP hulp

09/05/2024 15:08:55
 
Berta Pappens

Berta Pappens

09/11/2023 17:57:57
Quote Anchor link
Hallo,

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)
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
<?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>";

?>
 
Ivo P

Ivo P

09/11/2023 19:16:31
Quote Anchor link
Je script zegt nergens dat het juist of niet juist is.

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.
 
Berta Pappens

Berta Pappens

09/11/2023 19:49:44
Quote Anchor link
Ivo,

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
 
Ivo P

Ivo P

09/11/2023 21:14:16
Quote Anchor link
iets met https://www.php.net/sprintf

zie example #5
 
E vH

E vH

10/11/2023 09:01:19
Quote Anchor link
Berta Pappens op 09/11/2023 17:57:57:
[...]
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

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
 
Berta Pappens

Berta Pappens

10/11/2023 09:11:31
Quote Anchor link
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.
 
E vH

E vH

10/11/2023 09:13:13
Quote Anchor link
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.
 
Berta Pappens

Berta Pappens

10/11/2023 09:20:10
Quote Anchor link
E vH

Hier de laatste code
ook testen met deze aub
//$latitude = 53.568783;
//$longitude = 6.749766;

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
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>";

?>



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)
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
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>";

?>
 
Ivo P

Ivo P

10/11/2023 21:24:46
Quote Anchor link
daar kun je dus ook de php functie sprintf() voor gebruiken

in plaats van een stapel if statements die de "lengte" van een getal controleren
 
Berta Pappens

Berta Pappens

11/11/2023 09:47:30
Quote Anchor link
Hallo ivo,

Ik wil steeds bijleren en jullie zijn de specialisten, geef dan eens een voorbeeld op mijn if statements
Ben niet zo goed met functies.
 
- Ariën  -
Beheerder

- Ariën -

11/11/2023 10:02:14
Quote Anchor link
Daarom staat de werking daarvan beschreven op php.net.

sprintf
 
Berta Pappens

Berta Pappens

11/11/2023 10:03:32
Quote Anchor link
bedankt
 
Ivo P

Ivo P

11/11/2023 13:10:54
Quote Anchor link
en ik heb je al eerder naar example #5 verwezen op die pagina.
 
Berta Pappens

Berta Pappens

12/11/2023 10:13:01
Quote Anchor link
Ivo,

Bedankt, maar zie er mij geen gat aan via sprint functie.
 
- Ariën  -
Beheerder

- Ariën -

12/11/2023 10:54:17
Quote Anchor link
Waar loop je op vast? Wat heb je al geprobeerd?
 
Berta Pappens

Berta Pappens

12/11/2023 11:01:07
Quote Anchor link
snap het totaal niet hoe ik dit in deze functie krijg ...

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$number = 9;
$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 ...
 
Ad Fundum

Ad Fundum

17/11/2023 14:51:16
Quote Anchor link
Misschien wil je de titel aanpassen van 'visa versa' naar 'vice versa'?
Het eerste is een samentrekking tussen VISA (voor het pinnen) en Versa (gezondheidsorganisatie)...
Die laatste is de beoogde latijnse uitdrukking.
 
- Ariën  -
Beheerder

- Ariën -

17/11/2023 15:11:38
Quote Anchor link
Vooruit: Service van de zaak ;-)
 
Berta Pappens

Berta Pappens

17/11/2023 15:14:35
Quote Anchor link
zou niet weten hoe ik dit kan doen ???
 

Pagina: « vorige 1 2 3 4 5



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.