[PHP] Coordinaten in plaatje adhv gps coordinaten

Pagina: 1
Acties:
  • 218 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • KolNedra
  • Registratie: September 2001
  • Laatst online: 18-04-2020
Ik heb een scriptje geschreven waarin je adhv gps coordinaten de positie in nederland kan bepalen, alleen deze is niet exact:


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
<? 
function omrekenen($ola,$nba,$olb,$nbb) {
    $ola = deg2rad($ola);   
    $nba = deg2rad($nba);
    $olb = deg2rad($olb);   
    $nbb = deg2rad($nbb);
    $gamma = abs($ola-$olb);  
    $a = $nbb;
    $b = $nba; 
    if ($gamma>pi()) { $gamma=2*pi()-$gamma; }
    $resultaat = cos($a)*cos($b)+sin($a)*sin($b)*cos($gamma);
    $resultaat=acos($resultaat)*40000/2/pi();
    return $resultaat;
}
// Uiterste GPS coordinaten van Nederland (wikipedia)
$noorderBreedte[0] = 50.45;
$noorderBreedte[1] = 53.5;

$oosterLengte[0] = 3.20;
$oosterLengte[1] = 7.1336;

// A'dam GPS coordinaten
$nb = 52.378268;
$ol = 4.905987;

$breedteNlPlaatje = 250;
$hoogteNlPlaatje = 284;

$omhoog =  omrekenen($oosterLengte[0],$noorderBreedte[0],$oosterLengte[0],$nb); // Hoeveel km omhoog vanaf uiterste punt onderaan
$rechts =  omrekenen($oosterLengte[0],$noorderBreedte[0],$ol,$noorderBreedte[0]); // Hoeveel km naar rechts vanaf uiterste punt links 
$maxOmhoog = omrekenen($oosterLengte[0],$noorderBreedte[0],$oosterLengte[0],$noorderBreedte[1]); // "Hoogte" van Nederland in km
$maxRechts =  omrekenen($oosterLengte[0],$noorderBreedte[0],$oosterLengte[1],$noorderBreedte[0]); // "Breedte" van Nederland in km

$tmpX = $rechts/$maxRechts;
$zetX = (($breedteNlPlaatje*$tmpX)+8); // +8 XOffset v/h plaatje

$tmpY = $omhoog/$maxOmhoog;
$zetY = ($hoogteNlPlaatje -(($hoogteNlPlaatje *$tmpY)))+4; // YOffset (onderkant) vh plaatje

echo "X&Y positie van Amsterdam op plaatje: ".$zetX.",".$zetY;


Hij is wel beetje in de buurt, alleen hij verschilt toch te drastisch en het verschil vanaf het daadwerkelijke punt en berekende punt is niet een vast waarde... Iemand een idee wat er mis mee is.

Ikzelf denk dat het aan de gps coordinaten ligt waar nederland tussen ligt, omdat als ik dezelfde formule gebruik om afstanden te meten tussen gps coordinaten het op de km nauwkeurig klopt

::: flickr.com/kolnedra ::: Nikon D80 + Sigma 18-200mm f/3.5-6.3 DC + Sigma 10-20mm f/4-5.6 EX DC HSM


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Het kan natuurlijk ook liggen aan de projectie die voor het plaatje is gebruikt.

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 20-09 00:06
De aarde is niet plat ;)

Dit zou inderdaad alleen werken met een juist geprojecteerde kaart, maar als je Nederland in lat/lon bekijkt ziet het er nogal vervormd uit. Wil je met een kaart in de "normale" vorm van Nederland zou je bijvoorbeeld met de Rijksdriehoekmeting projectie kunnen werken.

Acties:
  • 0 Henk 'm!

  • KolNedra
  • Registratie: September 2001
  • Laatst online: 18-04-2020
WormLord schreef op vrijdag 28 oktober 2005 @ 10:36:
Het kan natuurlijk ook liggen aan de projectie die voor het plaatje is gebruikt.
Dat zou zijn als ze op de pixel nauwkeurig zouden moeten kloppen, heb nu toch elke keer een verschil van 30 a 40 pixels (x / y)
matthijsln schreef op vrijdag 28 oktober 2005 @ 10:47:
De aarde is niet plat ;)

Dit zou inderdaad alleen werken met een juist geprojecteerde kaart, maar als je Nederland in lat/lon bekijkt ziet het er nogal vervormd uit. Wil je met een kaart in de "normale" vorm van Nederland zou je bijvoorbeeld met de Rijksdriehoekmeting projectie kunnen werken.
Moet ik dus eerst Long / Lat omzetten naar RDx en RDy.
Eens even zoeken

Iemand enig idee waar ik kan vinden hoe ik Lang/Lat -> Rijksdriehoek

[ Voor 6% gewijzigd door KolNedra op 28-10-2005 11:11 ]

::: flickr.com/kolnedra ::: Nikon D80 + Sigma 18-200mm f/3.5-6.3 DC + Sigma 10-20mm f/4-5.6 EX DC HSM


Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 20-09 00:06
KolNedra schreef op vrijdag 28 oktober 2005 @ 10:58:
Iemand enig idee waar ik kan vinden hoe ik Lang/Lat -> Rijksdriehoek
Dit kan met PROJ.4: http://www.remotesensing.org/proj/

Bijvoorbeeld (EPSG 28992 is een aanduiding voor de RD projectie):

$ proj +init=epsg:28992 -r
tik in: 52.378268 4.905987
resultaat: 122207.30 487818.25

Dit zijn RD coordinaten van Amsterdam (dit kan je controleren op https://rdinfo.kadaster.nl/rd/transformator.html)

In PHP zou je iets met popen() oid kunnen doen.