Donnez vie à vos documents numériques !
 

Format personnalisé pour coordonnées latitude-longitude

abracadabraPDF Forums PDF – Général Format personnalisé pour coordonnées latitude-longitude

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45141
    chess
    Membre

    Bonjour,

    Je suis nouveau sur le forum et je souhaiterai créer un format personnalisé latitude / longitude dans une forme Acrobat XI.

    Pour mémoire, latitute: 00° 00,0′ N/S
    longitude: 000° 00,00 E/O

    l’objectif est également de récupérer ces données et de les convertir en numérique.

    Eg: 05° 43′ N –>  +5,7166 ( soit une division par 60 pour la partie décimale)

    Merci pour votre aide,

    CHESS

Affichage de 3 réponses de 1 à 3 (sur un total de 3)
  • Auteur
    Réponses
  • #58847
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Pour « normaliser » le format de saisie il faut utiliser un Masque arbitraire, voir : http://help.adobe.com/fr_FR/acrobat/pro/using/WS58a04a822e3e50102bd615109794195ff-7de4.w.html#WS8CA28D85-6E94-4898-9C2B-5308C15B1F3B.w

    Pour ensuite convertir les données saisies il faudra utiliser du code JavaScript, mais pour pouvoir t’aider plus avant il faudrait que je sache exactement ce qu’il faut calculer et comment (ce que tu expliques ci-dessus, pour moi c’est du chinois).

    :Smiley15:

    #58848
    chess
    Membre

    Bonjour,

    Le script ci dessous est en java. Il permet de calculer la distance entre deux points (latitude et longitude).J’ai essayé de le coller bêtement dans un champ sous acrobat mais il ne renvoie pas de réponse.Y’a t-il des adaptations à faire pour pouvoir l’utiliser sous acrobat?Aussi, j’aimerai avoir la distance en milles marin. Pour info, un mille= 1852 m.Je vous remercie par avance pour votre aide.


    Cordialement,
    /*! 

    * JavaScript function to calculate the geodetic distance between two points specified by latitude/longitude using the Vincenty inverse formula for ellipsoids.

    * Original scripts by Chris Veness 
    * Taken from http://movable-type.co.uk/scripts/latlong-vincenty.html and optimized / cleaned up by Mathias Bynens http://mathiasbynens.be/> 
    * Based on the Vincenty direct formula by T. Vincenty, “Direct and Inverse Solutions of Geodesics on the Ellipsoid with application of nested equations”, Survey Review, vol XXII no 176,  1975 http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf> 

    * @param  {Number} lat1, lon1: first point in decimal degrees 
    * @param  {Number} lat2, lon2: second point in decimal degrees 
    * @returns {Number} distance in metres between points
    */
    function toRad(n) {  return n * Math.PI / 180; };
    function distVincenty(lat1, lon1, lat2, lon2)
    {
    var a = 6378137,     
    b = 6356752.3142,     
    f = 1 / 298.257223563, // WGS-84 ellipsoid params     
    L = toRad(lon2-lon1),     
    U1 = Math.atan((1 – f) * Math.tan(toRad(lat1))),     
    U2 = Math.atan((1 – f) * Math.tan(toRad(lat2))),     
    sinU1 = Math.sin(U1),     
    cosU1 = Math.cos(U1),     
    sinU2 = Math.sin(U2),     
    cosU2 = Math.cos(U2),     
    lambda = L,      lambdaP,   
    iterLimit = 100; 
    do { 
    var sinLambda = Math.sin(lambda),     
    cosLambda = Math.cos(lambda),     
    sinSigma = Math.sqrt((cosU2 * sinLambda) * (cosU2 * sinLambda) + (cosU1 * sinU2 – sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 – sinU1 * cosU2 * cosLambda)); 
    if (0 === sinSigma) {   
    return 0; // co-incident points 
    }; 
    var cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda,     
    sigma = Math.atan2(sinSigma, cosSigma),     
    sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma,     
    cosSqAlpha = 1 – sinAlpha * sinAlpha,     
    cos2SigmaM = cosSigma – 2 * sinU1 * sinU2 / cosSqAlpha,     
    C = f / 16 * cosSqAlpha * (4 + f * (4 – 3 * cosSqAlpha)); 
    if (isNaN(cos2SigmaM)) { 
    cos2SigmaM = 0; // equatorial line: cosSqAlpha = 0 (§6) 
    }; 
    lambdaP = lambda; 
    lambda = L + (1 – C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM))); 
    }
    while (Math.abs(lambda – lambdaP) > 1e-12 && –iterLimit > 0);   
    if (!iterLimit) {
      return NaN; // formula failed to converge 
    };   
    var uSq = cosSqAlpha * (a * a – b * b) / (b * b),     
    A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 – 175 * uSq))),     
    B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 – 47 * uSq))),     
    deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) – B / 6 * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM))),   
    s = b * A * (sigma – deltaSigma); 
    return s.toFixed(3); // round to 1mm precision
    };

    #58849
    brumbies
    Membre

    Bonsoir,

    ATTENTION : java et javascript sont 2 langages différent… http://abracadabrapdf.net/forum/index.php/topic,2160.msg10980.html#msg10980

    Maintenant, perso par principe de codage je mets les fonctions au niveau des scripts de document et ensuite je les appelle au niveau des champs de formulaire (soit via un bouton au niveau des actions par exemple.

    Ensuite pour le code que tu as trouvé… tu parles de java et on lit javascript dans les commentaires du programme… Est ce que tu peux nous donner une maquette de ton doc et l’url ou tu as trouvé ce code…
    :Smiley01:

Affichage de 3 réponses de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.