IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Problème d'affichage polygone kml


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut Problème d'affichage polygone kml
    Bonsoir à tous.

    Je suis actuellement entrain de programmer une petite applications, qui permet de récupérer les polygones d'un fichier kml.

    Seulement problème : les cordonnées des polygones sont des latitudes et longitudes, donc quand je récupère mes coordonnées je dois les stocker dans des double ou flottant, cependant 2ème problème c'est que la Classe Polygon n'accepte que des entiers, et donc je perd beaucoup au niveau de la précision .

    Voilà donc mes petits soucis, et donc je voudrais savoir si quelqu'un avait une petite technique pour que la précision des latitudes et longitudes soit préserver lors de l'affichage du polygone.

    Je remercies d'avances à toutes l'aides qui sera apportées.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Hum Path2D, cool . Merci sinok.

    Mais j'ai juste une question est ce qu'il est possible de fermer le path parce que j'aurais pas le temps de le tester cette semaine ?

    Mais, sinon merci.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Bonsoir à tous.

    Alors là je ne comprend plus rien, j'ai utilisé la méthode avec le Path2D.Double. Mais sa me donne un tout petit pixel.

    Voici mon code pour voir si j'ai fait une bêtises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
           // canavasPolygon = nom de mon canvas
           Graphics2D g = (Graphics2D) canvasPolygon.getGraphics(); 
     
            Path2D.Double path2 = new Path2D.Double();
     
            path2.moveTo(7.748175646263692,48.629056806693107 );
            path2.lineTo(7.748157575425049,48.629142234497543);
            path2.lineTo(7.748297776149309,48.629159166832196);
            path2.lineTo(7.748321101157464,48.629071727973418);
            path2.lineTo(7.748175646263692,48.629056806693107);
            path2.closePath();
     
     
            g.draw(path2);
    Est-ce que quelqu'un aurait une idée, parce que je sèche là.

    Merci d'avances.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 929
    Points
    22 929
    Billets dans le blog
    53
    Par défaut
    Ben les coordonnées du polygone saisies sont celles d'un tout petit pixel...
    ça change au 4ème chiffre après la virgule !

    Faudrait peut-être faire un scale() a ton Graphics pour afficher tout cela en plus gros (ou appliquer une AffineTransform.getScaleInstance()).

    Ensuite, il n'est pas conseille de dessiner de la manière dont tu le fait la car ce faisant, il n'y a pas de persistance du dessin a l’écran.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Ok, merci bouye.
    Je pensais bien que ce n'était pas une très bonne idée de dessiner comme ça . Tu me proposerais quoi pour bien dessiner ce genre de coordonnées en Java ?

    Merci pour vos réponses.

    Bye

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 929
    Points
    22 929
    Billets dans le blog
    53
    Par défaut
    Hein ? Ah non pour le Path et tout ça tout est très bien. Et ça sera affiche mieux lorsque le scale() sera fait.

    C'est pour le dessin a l’écran que ce n'est pas le cas. Il faut eviter de faire un getGraphics() pour dessiner dedans mais privilegier la surcharge de paintComponent() d'une classe contrôle existante (JComponent, JPanel, etc.). A moins bien sur que ton canvasPolygon soit une image offscreen.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    OK bouye pour la technique de dessin, j'y penserais quand je ferais l’application final, parce que là en faite je veux aller vite, car je veux juste tester ce que ça donne .

    De plus la méthode scale ne fonctionne pas sur mon path, alors j'ai essayer de dessiner un rectangle qui s'affiche très bien et qui est bien transformé lors du scale. Donc je ne vois pas le problème, bref voici mon code XD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
               Graphics2D g = (Graphics2D) canvasPolygon.getGraphics();
     
                Path2D.Double path2 = new Path2D.Double();
                AffineTransform at = new AffineTransform();
                at.scale(2.1, 2.1);
     
     
     
            path2.moveTo(7.748175646263692,48.629056806693107 );
            path2.lineTo(7.748157575425049,48.629142234497543);
            path2.lineTo(7.748297776149309,48.629159166832196);
            path2.lineTo(7.748321101157464,48.629071727973418);
            path2.lineTo(7.748175646263692,48.629056806693107);
            path2.closePath();
     
     
                g.setTransform(at);
                g.drawRect(48,48,48,48);
               g.draw(path2);

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 929
    Points
    22 929
    Billets dans le blog
    53
    Par défaut
    J'crois que tu n'as pas compris à quel point ton polygone est petit genre minuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    package test;
     
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.AffineTransform;
    import java.awt.geom.Path2D;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    /**
     *
     * @author Fabrice
     */
    public class Main extends JComponent {
     
        private Path2D.Double path2;
        private double scaleFactor = 2000000;
        private AffineTransform zoom = AffineTransform.getScaleInstance(scaleFactor, scaleFactor);
        private BasicStroke stroke = new BasicStroke(1 / (float) scaleFactor);
     
        public Main() {
            path2 = new Path2D.Double();
            path2.moveTo(7.748175646263692, 48.629056806693107);
            path2.lineTo(7.748157575425049, 48.629142234497543);
            path2.lineTo(7.748297776149309, 48.629159166832196);
            path2.lineTo(7.748321101157464, 48.629071727973418);
            path2.lineTo(7.748175646263692, 48.629056806693107);
            path2.closePath();
        }
     
        @Override
        protected void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g.create();
            try {
                g2d.setTransform(zoom);
                g2d.translate(-7.748, -48.629);
                g2d.setPaint(Color.BLACK);
                g2d.drawRect(48, 48, 48, 48);
                g2d.fillRect(7, 48, 1, 1);
                g2d.setPaint(Color.RED);
                g2d.setPaint(Color.BLUE);
                g2d.fill(path2);
                g2d.setStroke(stroke);
                g2d.draw(path2.getBounds2D());
            } finally {
                g2d.dispose();
            }
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
     
                @Override
                public void run() {
                    JFrame frame = new JFrame("Test");
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setSize(1500, 600);
                    frame.setContentPane(new Main());
                    frame.setVisible(true);
                }
            });
        }
    }
    Et pour info le fond noir derrière c'est un carré de 1 pixel de coté agrandi 2.000.000 de fois !

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Ah ok ! Je pensais pas qu'il fallait agrandir autant, merci Bouye .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'affichage popup kml
    Par vizar29 dans le forum IGN API Géoportail
    Réponses: 12
    Dernier message: 28/12/2014, 14h53
  2. Problème d'affichage des polygones
    Par 07918919 dans le forum 2D
    Réponses: 1
    Dernier message: 02/12/2013, 14h16
  3. Problème d'affichage des textes issus de fichiers KML
    Par wikimaginot dans le forum IGN API Géoportail
    Réponses: 10
    Dernier message: 07/01/2013, 13h28
  4. Affichage des KMLs - Problèmes de couleurs
    Par AMAPE dans le forum IGN API Géoportail
    Réponses: 13
    Dernier message: 04/01/2013, 21h33
  5. affichage polygon kml
    Par Ambassador dans le forum APIs Google
    Réponses: 2
    Dernier message: 05/06/2012, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo