abracadabraPDF › Forums › PDF – Général › Format personnalisé pour coordonnées latitude-longitude
- Ce sujet est vide.
- CréateurSujet
- 29 avril 2015 à 15:53 #45141
chess
MembreBonjour,
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/Ol’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
- CréateurSujet
- AuteurRéponses
- 30 avril 2015 à 09:09 #58847
Merlin
Maître des clésBonjour 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:
24 juin 2015 à 15:37 #58848chess
MembreBonjour,
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
};24 juin 2015 à 21:00 #58849brumbies
MembreBonsoir,
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: - AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.