[OSM-talk-nl] Geocalculaties

Christ van Willegen cvwillegen at gmail.com
Mon Mar 15 07:17:31 UTC 2010


Hoi,

2010/3/15 ce-test, qualified testing bv - Gert Gremmen <g.gremmen at cetest.nl>:
> Wie heeft voor mij nog een paar standaard
> Formules die GPS coördinaten omzetten in
> Meters UTM, voor de Nederlandse Zone(s)

Gert, misschien is dit een deel van de informatie die je zoekt (RD
omrekenen naar WGS):

<?php

function sumOver($A, $dX, $dY)
{
        // This function is used in the RD2WGS function below
        // It calculates \sigma_p \sigma_q A_pq \times dX^p \times dY^q
        // p are the first indices of A, q are the second

        $result = 0;

        foreach ($A as $p => $qs) {
                foreach ($qs as $q => $val) {
                        $result += $val*pow($dX, $p)*pow($dY, $q);
                }
        }

        return $result;
}

function RD2WGS($X, $Y)
{
        // This function takes as parameters the values X and Y of the RD
        // system, and returns an array of WGS84 coordinates \phi, \lambda
        // or lattitude and longitude.

        // The data in the transformational arrays is taken from
        // http://www.dekoepel.nl/pdf/Transformatieformules.pdf
        // which describes the techniques followed to retrieve these values.

        // Base point Amersfoort
        $X0 = 155000.00;
        $Y0 = 463000.00;

        $lat0 = 52.15517440;
        $long0 = 5.38720621;

        $K = array(
                0 => array(
                        1 => 3235.65389,
                        2 => -0.24750,
                        3 => -0.06550
                ),
                1 => array(
                        0 => -0.00738,
                        1 => -0.00012
                ),
                2 => array(
                        0 => -32.58297,
                        1 => -0.84978,
                        2 => -0.01709,
                        3 => -0.00039
                ),

                4 => array(
                        0 => 0.00530,
                        1 => 0.00033
                )
        );

        $L = array(
                0 => array(
                        1 => 0.01199,
                        2 => 0.00022
                ),
                1 => array(
                        0 => 5260.52916,
                        1 => 105.94684,
                        2 => 2.45656,
                        3 => 0.05594,
                        4 => 0.00128,
                ),
                2 => array(
                        0 => -0.00022
                ),
                3 => array(
                        0 => -0.81885,
                        1 => -0.05607,
                        2 => -0.00256
                ),
                5 => array(
                        0 => 0.00026
                )
        );

        $dX = ($X - $X0) / 100000;
        $dY = ($Y - $Y0) / 100000;

        $lat  = $lat0  + sumOver($K, $dX, $dY) / 3600;
        $long = $long0 + sumOver($L, $dX, $dY) / 3600;


        return array($lat, $long);
}

?>

Christ van Willegen
-- 
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0




More information about the Talk-nl mailing list