Bytechanger schrieb:

> am liebsten in JavaScript oder VB(.NET) / VBA.
> Ich möchte die Umrechnung selber in einem VBA Macro
> vornehmen...

Ich hatte das mal in Progress programmiert, anhand
der Formeln aus der untenstehenden URL.

Weiss nicht mehr genau was der Input-Parameter long0
war. Vermutlich die UTM Zone oder der Mittelmeridian.

sq(x) = x * x, exp(x,y) = x^y

/* UTM CONVERSION PROCEDURE */
/* Ref: http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm */

procedure utm2latlon:
   def input parameter x     as dec.
   def input parameter y     as dec.
   def input parameter long0 as dec.

   def output parameter lat  as dec.
   def output parameter lon  as dec.

   x =  x - 500000.

   def var k0  as dec init 0.9996.
   def var pi  as dec init 3.14159265358979323846264338328.

   def var M   as dec.
   def var mu  as dec.
   def var a   as dec init 6378137.
   def var b   as dec init 6356752.3142.
   def var e   as dec.
   def var es2 as dec.
   def var e1  as dec.
   def var C1 as dec.
   def var T1 as dec.
   def var N1 as dec.
   def var R1 as dec.
   def var D  as dec.
   def var fp as dec.
   def var J1 as dec.
   def var J2 as dec.
   def var J3 as dec.
   def var J4 as dec.
   def var Q1 as dec.
   def var Q2 as dec.
   def var Q3 as dec.
   def var Q4 as dec.
   def var Q5 as dec.
   def var Q6 as dec.
   def var Q7 as dec.

   e = exp(1 - sq(b) / sq(a), 0.5).
   es2 =  e * e / (1 - e * e).

   M = y / k0.

   mu = M / (a * (1 - e * e / 4 - 3 * exp(e,4) / 64 - 5 * exp(e,6) /
256.0)).
   e1 = (1 - exp(1 - e * e, 0.5)) / (1 + exp(1 - e * e, 0.5)).

   J1 = 3.0 * e1 / 2.0 - 27.0 * exp(e1,3) / 32.0.
   J2 = 21.0 * e1 * e1 / 16.0 - 55.0 * exp(e1,4) / 32.0.
   J3 = 151.0 * exp(e1,3)  / 96.0.
   J4 = 1097.0 * exp(e1,4) / 512.0.

   fp = mu + J1 * sinus(2 * mu) + J2 * sinus(4 * mu) + J3 * sinus(6 *
mu) + J4 * sinus(8 * mu).

   C1 = es2 * sq(cosinus(fp)).
   T1 = sq(tangens(fp)).
   R1 = a * (1 - e * e) / exp(1 - e * e * sq(sinus(fp)), 1.5).
   N1 = a / exp( 1 - sq(e) * sq(sinus(fp)), 0.5).
   D = x / (N1 * k0).

   Q1 = N1 * tangens(fp) / R1.
   Q2 = D * D / 2.0.
   Q3 = (5.0 + 3.0 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * es2) * exp(D,4) /
24.0.
   Q4 = (61.0 + 90.0 * T1 + 298 * C1 + 45 * T1 * T1 - 3 * C1 * C1 -
252.0 * es2) * exp(D,6) / 720.0.
   Q5 = D.
   Q6 = (1.0 + 2.0 * T1 + C1) * exp(D,3) / 6.0.
   Q7 = (5.0 - 2.0 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * es2 + 24 * T1 *
T1) * exp(D,5) / 120.0.

   lat = fp - Q1 * (Q2 - Q3 + Q4).
   lat = lat * 180.0 / pi.

   lon = (Q5 - Q6 + Q7) / cosinus(fp).
   lon = lon * 180.0 / pi.
   lon = lon + long0.

end procedure.


_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an