|
Тема |
Re: Latitude / Longitude към X/Y координати [re: SPetrov] |
|
Автор |
SPetrov (непознат
) |
|
Публикувано | 03.05.06 11:40 |
|
|
Намерих кода, който върши работа
$lat = 51.0897;
$lon = -0.0345;
$deg2rad = pi() / 180;
$rad2deg = 180.0 / pi();
$phip = $lat * $deg2rad;
$lambdap = $lon * $deg2rad;
$AXIS = 6377563.396;
$ECCENTRIC = 0.00667054;
$LAT_ORIG = 49 * $deg2rad;
$LONG_ORIG = -2 * $deg2rad;
$FALSE_EAST = 400000.0;
$FALSE_NORTH = -100000.0;
$SCALE = 0.9996012717;
$east = '';
$north = '';
$j = ($lambdap - $LONG_ORIG) * cos($phip);
$nsqd = $ECCENTRIC * (cos($phip) * cos($phip)) / (1 - $ECCENTRIC);
$tsqd = pow(sin($phip) / (cos($phip)), 2);
$up = $AXIS / sqrt(1 - ($ECCENTRIC * (sin($phip) * sin($phip))));
$p = $ECCENTRIC / 8.0;
$a = $AXIS * (1 - (2 * $p) - (3 * $p * $p) - (10 * $p * $p * $p));
$b = $AXIS * ((6 * $p) + (12 * $p * $p) + (45 * $p * $p * $p)) / 2;
$c = $AXIS * ((15 * $p * $p) + (90 * $p * $p * $p)) / 4;
$mo = ($a * $LAT_ORIG) - ($b * sin(2 * $LAT_ORIG)) + ($c * sin(4 * $LAT_ORIG));
$mp = ($a * $phip) - ($b * sin(2 * $phip)) + ($c * sin(4 * $phip));
$east = 0.5 + $FALSE_EAST + (($SCALE * $up) * ($j + (($j * $j * $j) / 6) * (1 - $tsqd + $nsqd)));
$north = 0.5 + $FALSE_NORTH + ($SCALE * ($mp - $mo)) + ($SCALE * ($up) * ((sin($phip)) / (cos($phip)))) * ((($j * $j)/ 2) + (($j * $j * $j * $j) / 24 * (5 - $tsqd)));
$east = round($east);
$north = round($north);
$nstr = $north;
$estr = $east;
Благодаря на всички ![](http://i.dirbg.com/clubs/icons/cool.gif)
|
| |
|
|
|