[Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?

Holger holgerosm at gmx.net
So Jan 1 19:46:50 UTC 2012


Hallo Manuel,

ich kann das hier bieten:

use Math::Trig;

### Earth radius in meters.  This must be 6378137 for the calculation
### of Spherical Mercator coordinates.
my $earthRadius = 6378137.0;

### Convert Spherical Mercator coordinates into latitude and longitude.
sub merc2latlon {
   my ($xMerc, $yMerc) = @_;
   my ($lat, $lon);
   $lon = rad2deg($xMerc / $earthRadius);
   $lat = rad2deg(atan(sinh($yMerc / $earthRadius)));
   return($lat, $lon);
}

Gruß
Holger


Am 01.01.2012 18:07, schrieb Manuel Reimer:
> Hallo,
>
> für den Längengrad habe ich die Formel schon selber umgestellt:
>
> lon = (merclon * 180) / 20037508.34
>
> Aber ich bekomme es für den Breitengrad nicht hin...
>
> Ursprungsformel, die genau das Gegenteil macht, was ich will (Aber noch
> Javascript):
>
> function Lat2Merc(lat) {
> var PI = 3.14159265358979323846;
> lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
> return 20037508.34 * lat / 180;
> }
>
> Ich brauche die Umgekehrfunktion. Allerdings nicht in Javascript sondern
> in Perl.
>
> Hat da jemand etwas auf die Schnelle bereit?
>
> Gruß
>
> Manuel
>
> P.S. Ich kann auf dem Server *keine* Perl-Module installieren!






Mehr Informationen über die Mailingliste Talk-de