| Coordinaten Amersfoort omzetten / omrekenen Greenwich |
home → vogeltrekstation → informatie algemeen → coördinaten
English language also on this page.
Op het Vogeltrekstation hanteren we twee systemen coördinaten: 'Amersfoort' en 'Greenwich', heel handig...
Greenwich natuurlijk omdat die wereldwijd bekend en in gebruik zijn en voor Amersfoort hebben we gekozen bij het ontstaan
van het programma 'POOT' omdat (1) die nauwkeuriger zijn dan Greenwich graden-minuten en (2) dat gecombineerd kan worden
met een onafhankelijk 5 km blok wat binnen POOT een controle mogelijk maakte. Amersfoort coördinaten worden alleen
in Nederland gebruikt.
Af en toe moeten we dus een coördinaat omrekenen, omzetten van het ene systeem naar het andere. Daar is een formule voor. Zelf het
wiel uitvinden is natuurlijk leuker, maar minder practisch. Dus zijn hier een aantal manieren die formule weergegeven,
(a) twee websites, (b) in basic, (c) in sql en d) in php.
Pas op: 'breedte' en 'lengte' bij Amersfoort (de volgorde waarin de getallen worden weergegeven) is omgekeerd aan die
van Greenwich.
On the Dutch Ringing Scheme we do use two types of co-ordinates: 'Amersfoort' and 'Greenwich'. Greenwich of course
because it is known and in use all over the world and for our computer-program to administrate ringing- and recovery
details we do use Amersfoort because (1) they are more accurate than the Greenwich degrees-minutes and (2) we do use
an internal check within the computer-program. Amersfoort co-ordinates do only 'exist' in the Netherlands.
Sometimes a conversion is needed, so on this pages a few computer-languages are mentioned: (a) 2 websites, (b) in basic,
and (c) in sql.
Take care: 'latitude' and 'longitude' on Amersfoort (the sequence) is turned round to that of Greenwich.
Website met meerdere omrekentools.
Website met meerdere omrekentools.
L0:
' give first part amersfoort coordinaat
' breedte=latitude !!!
INPUT "Geef eerste deel Amersfoort coordinaat: ", breedte!
IF breedte! <= 0 THEN STOP
' give second part amersfoort coordinaat
' lengte=longitude !!!
INPUT "Geef tweede deel Amersfoort coordinaat: ", lengte!
IF lengte! <= 0 THEN STOP
code$ = "................................................................."
' berekening van geografische coordinaten uit Amerfoort coordinaten
' calculate greenwich coordinates from amersfoort coordinates
IF lengte! > breedte! THEN
a! = lengte!
lengte! = breedte!
breedte! = a!
END IF
IF lengte! > 300! THEN PRINT " lengte te groot "
IF breedte! < 300! THEN PRINT " breedte te klein "
IF breedte! > 650! THEN PRINT " breedte te groot "
abr! = 187762!'breedte in sec ; NB amfrt: 52 9' 22.178"
ale! = 19395.5'lengte in sec ; OL amfrt: 5 23' 15.5 "
' bereken het punt 500 m ten NO van het snijpunt vd opgegeven lijnen
' calcutale the point 500m NordtEast from crossing given lines
X! = (lengte! - 154.5) / 100!
y! = (breedte! - 462.5) / 100!
' berekening geografische breedte :
' calculate 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 breedte verschil tov amfrt in sec
' z! is difference to amersfoort in sec.
gr! = INT((z! + abr!) / 3600!)' breedte graden
m! = (z! + abr!) / 36!
z! = m! - gr! * 100!
mn% = INT(z! * .6 + .5) ' breedte minuten
IF mn% = 60 THEN
mn% = 0
gr! = gr! + 1!
END IF
MID$(code$, 35, 8) = STRING$(8, "0")
MID$(code$, 43, 1) = "E"
MID$(code$, 35, 2) = MID$(STR$(gr!), 2, 2)
IF mn% < 10 THEN
MID$(code$, 38, 1) = MID$(STR$(mn%), 2, 1)
ELSE
MID$(code$, 37, 2) = MID$(STR$(mn%), 2, 2)
END IF
' berekening geografische lengte :
' calculate 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 lengte verschil tov amfrt in sec
' z! is difference longitude to amersfoort
gr! = INT((z! + ale!) / 3600!)' lengte graden
m! = (z! + ale!) / 36!
z! = m! - gr! * 100!
mn% = INT(z! * .6 + .5) ' lengte minuten
IF mn% = 60 THEN
mn% = 0
gr! = gr! + 1!
END IF
MID$(code$, 40, 1) = MID$(STR$(gr!), 2, 1)
IF mn% < 10 THEN
MID$(code$, 42, 1) = MID$(STR$(mn%), 2, 1)
ELSE
MID$(code$, 41, 2) = MID$(STR$(mn%), 2, 2)
END IF
PRINT MID$(code$, 35, 4) + " " + MID$(code$, 39, 4) + " E"
PRINT " "
GOTO L0:
/* 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.
*/
create proc amtogeo (
@ca char(4) output,
@cb char(4) output,
@q char(1) output
)
as
/* from Amersfoort (quadrant "N") coordinates to Greenwich */
declare
@breedte float,
@lengte float,
@abr float,
@ale float,
@x float,
@y float,
@z float,
@gr float,
@m float,
@mn float,
@dum char(4)
/*
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
*/
select @breedte=convert(float,@cb)
select @lengte =convert(float,@ca)
/* coordinaten outside min and max ? */
if @lengte < 0. return 2
if @lengte > 300. return 2
if @breedte < 300. return 2
if @breedte > 650. return 2
select @abr=187762.0 /* latitude Amersfoort in seconden */
select @ale=19395.5 /* longitude Amersfoort in seconden */
/* calculate the point 500 m NorthEast from point of intersection from given line */
select @x=(@lengte -154.5)/100.
select @y=(@breedte-462.5)/100.
/* calculate greenwich latitude */
select @z=3236.033*@y-32.592*@x*@x-.247*@y*@y-.85*@x*@x*@y
select @z=@z-.065*@y*@y*@y+.005*@x*@x*@x*@x-.017*@x*@x*@y*@y
/* @z is the difference to amfrt in sec */
select @gr=floor((@z+@abr)/3600.) /* latitude degrees */
select @m=(@z+@abr)/36.
select @z=@m-@gr*100.
select @mn=floor(@z*.6+.5) /* latitude in minutes */
if @mn >= 60.
begin
select @mn=0.
select @gr=@gr+1.
end
if @mn < 10 select @ca=str(@gr,2,0)+"0"+str(@mn,1,0)
else select @ca=str(@gr,2,0)+str(@mn,2,0)
/* calculate greenwich longitude */
select @z=5261.305*@x+105.979*@x*@y+2.458*@x*@y*@y-.819*@x*@x*@x
select @z=@z+.056*@x*@y*@y*@y-.056*@x*@x*@x*@y
/* @z is the difference to amfrt in sec */
select @gr=floor((@z+@ale)/3600.) /* longitude degrees */
select @m=(@z+@ale)/36.
select @z=@m-@gr*100.
select @mn=floor(@z*.6+.5) /* longitude minutes */
if @mn >= 60.
begin
select @mn=0.
select @gr=@gr+1.
end
if @mn < 10 select @cb=str(@gr,2,0)+"0"+str(@mn,1,0)
else select @cb=str(@gr,2,0)+str(@mn,2,0)
select @q="E"
/* select @ca,@cb,@q */
return 1
From: Vasco Tenner [mailto:vascotenner@gmail.com]
Sent: Friday, July 08, 2005 11:21 AM
To: VOGELTREKSTATION
Subject: coordineaten omrekenen
Beste G. Speek,
mischien is het leuk/handig om de volgende php functie erbij te zetten zodat er ene nog grotere keuze uit talen bestaat.
Vasco
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;
}
Deze pagina is voor het laatst bijgewerkt op 15 september 2005.