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.



   BASIC
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:


   SQL
/* 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


   PHP
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.


Copyright © 2002-2009  Vogeltrekstation  Heteren  G. Speek        colofon    disclaimer    zoeken    FAQ