Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4872 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Conversion pixel/latitude,longitude

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion pixel/latitude,longitude

n°1556305
jo08
Posté le 07-05-2007 à 08:26:13  profilanswer
 

bonjour, :)  
j'aimerais de l'aide pour convertir des pixels en latitude/longitude si vous avez des exemples de méthode se serai sympa de me les transmettre le plus vite possible merci d'avance a tous les membres! ;)  :hello:

mood
Publicité
Posté le 07-05-2007 à 08:26:13  profilanswer
 

n°1556318
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 09:09:29  profilanswer
 

prendre la position du pixel et faire une règle de 3 :??:
 
 
 
(pas sûr d'avoir compris)


---------------
oui oui
n°1556319
jo08
Posté le 07-05-2007 à 09:17:19  profilanswer
 

oui je sais sa mais je veux afficher les vrai latitude/longitude
par exemple sur la carte qui s'affiche je veux définir les coordonnées en pixel(0,0) en latitude/longitude(N14°57' W61°31')

n°1556324
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 09:37:53  profilanswer
 

bien si tu connais les coordonnées "pixel" et "réelles" de deux points, tu fais une règle de 3 entre les deux systèmes.

 

Si tu vois pas, donnes deux points et leurs coordonnées


Message édité par art_dupond le 07-05-2007 à 09:54:43

---------------
oui oui
n°1556331
jo08
Posté le 07-05-2007 à 09:54:32  profilanswer
 

pixel(351,347) latitude/longitude(60°51'/14°23')
pixel(189,76) latitude/longitude(61°10'/14°52')

n°1556336
art_dupond
je suis neuneu... oui oui !!
Posté le 07-05-2007 à 10:03:39  profilanswer
 

ok donc, pour la latitude :

 

351-189 = +162 pixels représentent 60°51' - 61°10' = -19'

 

si +162 pixels représentent -19' => 1 pixel représente -19'/162

 

idem pour l'autre coordonnée


Message édité par art_dupond le 07-05-2007 à 10:05:00

---------------
oui oui
n°1556340
jo08
Posté le 07-05-2007 à 10:07:38  profilanswer
 

merci je vais essayer je vous tiens au courant

n°1556428
jo08
Posté le 07-05-2007 à 11:32:07  profilanswer
 

si il y a d'autre solution n'hésiter pas a men faire part merci

n°1559442
Tyrant
Posté le 12-05-2007 à 18:22:41  profilanswer
 

Salut,
 
je me permets de remonter le topic parce que je ne comprends pas comment passer des coordonnées normales aux pixels (art_dupond, tu dis qu'il y a une règle de 3 mais est-ce que c'est bien comme ça : Xp = a*Xn + b (avec Xp les coordonnées en pixel et Xn les coordonnées normales) ?)
 
Dans ce cas, comment passer de Xn à Xp en fonction de la taille de la fenêtre ? J'ai pensé à un getSize(), mais bon...
 
Merci :jap:

n°1559537
art_dupond
je suis neuneu... oui oui !!
Posté le 13-05-2007 à 10:41:51  profilanswer
 

Repère "normal"


 
    .(Xn,Yn)
 
 
                                                                             .(An,Bn)
 


 
Repère "pixel"


 
    .(Xp,Yp)
 
 
                                                                             .(Ap,Bp)
 


 
Soit la taille de la carte en pixels Tp et la taille "normale" de la carte Tn.
 
Pour récupérer la taille de la carte, tu peux récupérer la largeur de ton image en javascript (J'ai pas compris le rapport avec la taille de la fenêtre, je suppose que tu voulais dire la taille de ton image).

Spoiler :


Google : javascript get image width me donne
 
function getImageWidth(myImage) {
 var x, obj;
 if (document.layers) {
  var img = getImage(myImage);
  return img.width;
 } else {
  return getElementWidth(myImage);
 }
 return -1;
}


 
Pour passer des coordonnées "normales" -> "pixel" :
Le facteur d'échelle dans ce 'sens' est Ep = Tp/Tn
On connait (Xn,Yn), (Xp,Yp) et (An,Bn)
On veut trouver (Ap,Bp)

  • Ap = Xp + Ep * (An - Xn)
  • Bp = Yp + Ep * (Bn - Yn)


 
Pour passer de "pixel" -> "normal" :
Le facteur d'échelle dans ce 'sens' est En = Tn/Tp
On connait (Xn,Yn), (Xp,Yp) et (Ap,Bp).
On veut trouver (An,Bn)

  • An = Xn + En * (Ap - Xp)
  • Bn = Yn + En * (Bp - Yp)


 
edit : si t'as une image tordue et que l'échelle verticale et l'échelle horizontale sont différentes, il faut calculer un facteur d'échelle "horizontal" et un facteur d'échelle "vertical".


Message édité par art_dupond le 13-05-2007 à 10:43:48

---------------
oui oui
mood
Publicité
Posté le 13-05-2007 à 10:41:51  profilanswer
 

n°1559614
Tyrant
Posté le 13-05-2007 à 17:03:22  profilanswer
 

Salut, merci pour ta réponse, je vais essayer de mieux expliquer mon problème (j'aurais dû le faire au début :sweat:) :  
 
Mon programme est une JFrame dans laquelle il y a un JPanel, et j'essaye de tracer la courbe représentative d'une fonction (admettons sin(x)). Vu que l'origine est normalement en haut à gauche, je l'ai déplacée pour pouvoir être au centre de la fenêtre en fonction de la taille de celle-ci (donc lors du redimensionnement, le centre du repère est toujours au centre de la fenêtre) ; pour cela, j'ai fait un translate(largeur/2, hauteur/2).
 
Maintenant mon problème, c'est si je veux tracer la fonction sin(x) sur [-PI, PI] en largeur et sur [-1, 1] en hauteur, comment faire pour que le tracé prenne l'ensemble du Jpanel ?
 
Pour la largeur, j'ai trouvé (et ça semble fonctionner, mais je n'ai pas compris pourquoi :cry:) :
 
pour x de -PI à PI (avec un delta x quelconque) faire
    [largeur / (PI - (-PI))] * x
 
C'est là que je parlais de la règle de 3 (a * x + b, mais comme j'ai déjà transformé l'origine du repère, b = 0)
 
Mais pour la hauteur, je n'ai pas encore trouvé.
 
Merci pour ton aide en tout cas :wahoo:

n°1559770
art_dupond
je suis neuneu... oui oui !!
Posté le 13-05-2007 à 22:55:04  profilanswer
 

oups, j'ai complètement zappé que c'était du java :p
 
Pour la hauteur, ca devrait être sin(x) * demi hauteur de ton Jpanel.
 
Reste à trouver la hauteur, mais comme je ne connais pas java :p
 
Par contre, si c'est juste ça le problème, crée pit-être un topic pour demander comment trouver cette hauteur.


---------------
oui oui
n°1559785
Tyrant
Posté le 14-05-2007 à 00:24:20  profilanswer
 

Ah ok, c'était pour ça le javascript ^^
 
Bon sinon pour la hauteur c'est (hauteur / Ymin - Ymax) * sin(x), mais bon je tâtonne en fait, donc si quelqu'un pouvait m'expliquer la raison :sweat:
 
Merci à toi art_dupond !

n°1559788
art_dupond
je suis neuneu... oui oui !!
Posté le 14-05-2007 à 00:54:13  profilanswer
 

Ici, tu as un sinus que tu veux mettre dans un JPanel de hauteur H.
 
Ton sinus varie de -1 à 1, c'est à dire qu'en tout, tu as besoin de "2" ( = 1-(-1) ) pour dessiner ton sinus.
 
 
Ici, tu ne disposes pas de 2 mais de H (la hauteur).
Comment passer de 2 à H ? Ben il faut diviser par 2 puis multiplier par H :  
 
2 -> 2 (/2 * H) = H
 
Donc si tu appliques la même règle pour toutes tes valeurs, c'est-à-dire que tu appliques la règle à ton sinus, il sera comme tu le veux dans ton JPanel, c'est-à-dire que quand il sera max (ou min), il touchera le bord haut (ou bas).
 
=> sin(x) -> sin(x) (/2 * H) = sin(x) dans le JPanel
 
 
 
 
note : c'est (Ymax - Ymin) ou |Ymin - Ymax| (en valeur absolue)


Message édité par art_dupond le 14-05-2007 à 00:56:41

---------------
oui oui
n°1560269
Tyrant
Posté le 14-05-2007 à 16:41:43  profilanswer
 

Salut, merci pour ton explication, c'est beaucoup plus clair maintenant :jap:
 
Sinon pour la hauteur, étant donné que l'axe des ordonnées "pointe" vers le bas, je suis obligé de prendre une valeur négative, mais ça reste juste du détail.
 
 :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Conversion pixel/latitude,longitude

 

Sujets relatifs
Conversion d'une chaine de caracterespixel? pouce? millimètre?
Conversion durées -> secondes sur un fichier avec sedconversion html contenant du css en pdf (ou rtf)
Lire un fichier BMP pixel par pixelC++ conversion type const
Problème de type: Pixel =int, char ?conversion de date
Conversion binaire...Conversion implicite
Plus de sujets relatifs à : Conversion pixel/latitude,longitude


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)