[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