functie Omrekenen coördinaten
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
function amersfoort2greenwich($ax, $ay, &$gx, &$gy){
/* This is formula in sql to calculate Greenwich co-ordinates from
* the Dutch "Amersfoort" co-ordinates ("N" in quadrant).
* Our computer on the Dutch Ringing Ringing does use this program.
*/
/* from Amersfoort (quadrant "N") coordinates to Greenwich */
/*
select $ca="180"
select $cb="450"
*/
/* first amsfrt coordinaat : lengte = smallest number
* second amsfrt coordinaat : breedte= largest number
* first geogr coordinaat : breedte
* second geogr coordinaat : lengte
*/
/* coordinaten outside min and max ? */
if (($ax < 0) ||($ax > 300) ||($ay < 300) ||($ay > 650)) return
false;
$abr=187762.0; /* latitude Amersfoort in seconden */
$ale=19395.5; /* longitude Amersfoort in seconden */
/* calculate the point 500 m NorthEast from point of intersection
from given line */
$x= ($ax -154.5)/100;
$y= ($ay-462.5)/100;
/* calculate greenwich latitude */
$z=3236.033*$y-32.592*$x*$x-.247*$y*$y-.85*$x*$x*$y;
$z=$z-.065*$y*$y*$y+.005*$x*$x*$x*$x-.017*$x*$x*$y*$y;
/* $z is the difference to amfrt in sec */
$gr=floor(($z+$abr)/3600); /* latitude degrees */
$m=($z+$abr)/36;
$z=$m-$gr*100;
$mn=floor($z*.6+.5); /* latitude in minutes */
if ($mn >= 60){
$mn=0;
$gr=$gr+1;
}
if ($mn < 10) $ca=$gr."0".substr($mn,strlen($mn)-1,1);
else $ca=$gr.substr($mn,strlen($mn)-2,2);
/* calculate greenwich longitude */
$z=5261.305*$x+105.979*$x*$y+2.458*$x*$y*$y-.819*$x*$x*$x;
$z=$z+.056*$x*$y*$y*$y-.056*$x*$x*$x*$y;
/* $z is the difference to amfrt in sec */
$gr=floor(($z+$ale)/3600); /* longitude degrees */
$m=($z+$ale)/36;
$z=$m-$gr*100;
$mn=floor($z*.6+.5); /* longitude minutes */
if ($mn >= 60){
$mn=0;
$gr=$gr+1;
}
if ($mn < 10) $cb=$gr."0".substr($mn,strlen($mn)-1,1);
else $cb=$gr.substr($mn,strlen($mn)-2,2);
$q="E";
$gx = $ca/100;
$gy = $cb/100;
return true;
}
?>
function amersfoort2greenwich($ax, $ay, &$gx, &$gy){
/* This is formula in sql to calculate Greenwich co-ordinates from
* the Dutch "Amersfoort" co-ordinates ("N" in quadrant).
* Our computer on the Dutch Ringing Ringing does use this program.
*/
/* from Amersfoort (quadrant "N") coordinates to Greenwich */
/*
select $ca="180"
select $cb="450"
*/
/* first amsfrt coordinaat : lengte = smallest number
* second amsfrt coordinaat : breedte= largest number
* first geogr coordinaat : breedte
* second geogr coordinaat : lengte
*/
/* coordinaten outside min and max ? */
if (($ax < 0) ||($ax > 300) ||($ay < 300) ||($ay > 650)) return
false;
$abr=187762.0; /* latitude Amersfoort in seconden */
$ale=19395.5; /* longitude Amersfoort in seconden */
/* calculate the point 500 m NorthEast from point of intersection
from given line */
$x= ($ax -154.5)/100;
$y= ($ay-462.5)/100;
/* calculate greenwich latitude */
$z=3236.033*$y-32.592*$x*$x-.247*$y*$y-.85*$x*$x*$y;
$z=$z-.065*$y*$y*$y+.005*$x*$x*$x*$x-.017*$x*$x*$y*$y;
/* $z is the difference to amfrt in sec */
$gr=floor(($z+$abr)/3600); /* latitude degrees */
$m=($z+$abr)/36;
$z=$m-$gr*100;
$mn=floor($z*.6+.5); /* latitude in minutes */
if ($mn >= 60){
$mn=0;
$gr=$gr+1;
}
if ($mn < 10) $ca=$gr."0".substr($mn,strlen($mn)-1,1);
else $ca=$gr.substr($mn,strlen($mn)-2,2);
/* calculate greenwich longitude */
$z=5261.305*$x+105.979*$x*$y+2.458*$x*$y*$y-.819*$x*$x*$x;
$z=$z+.056*$x*$y*$y*$y-.056*$x*$x*$x*$y;
/* $z is the difference to amfrt in sec */
$gr=floor(($z+$ale)/3600); /* longitude degrees */
$m=($z+$ale)/36;
$z=$m-$gr*100;
$mn=floor($z*.6+.5); /* longitude minutes */
if ($mn >= 60){
$mn=0;
$gr=$gr+1;
}
if ($mn < 10) $cb=$gr."0".substr($mn,strlen($mn)-1,1);
else $cb=$gr.substr($mn,strlen($mn)-2,2);
$q="E";
$gx = $ca/100;
$gy = $cb/100;
return true;
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$ax = 194.965 ; // Uitdrukken in km, niet in m
$ay = 328.209 ;
$gx = ''; // de variabele moet aangemaakt worden vooraleer de functie te gebruiken
$gy = ''; // dito
$result = amersfoort2greenwich($ax, $ay, $gx, $gy);
echo '<div>'. $gx .'</div><div>'. $gy .'</div>';
function amersfoort2greenwich($ax, $ay, &$gx, &$gy){
...
?>
$ax = 194.965 ; // Uitdrukken in km, niet in m
$ay = 328.209 ;
$gx = ''; // de variabele moet aangemaakt worden vooraleer de functie te gebruiken
$gy = ''; // dito
$result = amersfoort2greenwich($ax, $ay, $gx, $gy);
echo '<div>'. $gx .'</div><div>'. $gy .'</div>';
function amersfoort2greenwich($ax, $ay, &$gx, &$gy){
...
?>
EDIT:
(een beetje off topic)
Heeft Nederland echt zo een eigen coördinatenstelsel?
Wordt dat gebruikt?
Ik (Belg) had er nog nooit van gehoord.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Ja, het rijksdriehoek systeem wordt gebruikt, het is iig de standaard voor natuurwaarnemingen. Ook Belgie heeft een rijksdriehoek grid, maar dat is iets minder slim opgezet dan het Nederlandse. In het Nederlandse grid zijn x en y coordinaten niet te verwarren (x<y oid). Het belgische heeft dat niet.
complegendary schreef op 30.11.2009 14:21:
Ook Belgie heeft een rijksdriehoek grid, maar dat is iets minder slim opgezet dan het Nederlandse...
Hehe, verwondert me niets.
:)
Daarnaast rekent de functie volgens mij kilometer en zou moeten rekenen in meters...
Gewijzigd op 01/01/1970 01:00:00 door bart nukem