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

SIG : Système d'information Géographique Discussion :

Géolocalisation d'une zone


Sujet :

SIG : Système d'information Géographique

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut Géolocalisation d'une zone
    Bonjour,
    Je suis actuellement entrain de développer une application géographique en java standard, je voudrais avoir quelques renseignements.

    Mon but: Si je délimite une zone à l'aide de coordonnées, peu importe la forme, comment puis je savoir si un point fait parti de cette zone ?

    Ex:


    Donc comment puis je savoir si le point rouge fait parti de la zone ?

    Pour le moment, je ne souhaite pas faire de partie graphique. Connaissez vous une api java qui me permettrait de faire ces opérations ?

    Déjà si j'arrive à faire ça, ça sera pas mal.

    Plus tard, est ce qu'il sera possible de superposer ce que j'aurais fais au dessus sur un fond de carte ?

    Enfin priorité sur la 1ere question

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    tout depend de jusqu'ou tu veux aller.

    tu peux faire tes affichages avec Google (fichier KML)


    pour faire du traitement Topologique (si un point est contenu dans une géométrie) tu peux utiliser JTS (Java Topologic suite).


    si tu cherche a faire une représentation avec une carte en fond ca se complique (hormis solution googlemap). Le problème c'est que les données cartographiques sont très chers. Se pose aussi les problèmes de représentation sur plan d'une terre qu'est pas plate (malheureusement).


    Il existe quelques API java cartographique : GeoTools, alov man, open map et d'autres. je conseil GeoTools, sans te cacher que ce n'est pas évident a prendre en main.

    il y a quelques articles que j'ai réaliser qui pourront t'interesser : http://jsorel.developpez.com

    Il y a la solution base de données aussi, avec PostGIS qui permet de stocker des géométries et de faire ta recherche topologique. quand a l'affichage tu pourras utiliser un logiciel libre comme QGis, GVSIG ou UDIG.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci pour ta réponse.

    Pour le moment, je cherche à faire un truc assez simple. On verra plus tard si je dois intégrer une carte ou non.

    Pour google map, vu que je voudrais le faire en J2SE, je pense pas que ça soit possible. Enfin, je crois qu'on a pas le droit.

    Je vais aller voir du coter de geotools. As tu une idée par où je pourrais commencer pour établir une zone à partir de coordonnées, et vérifier si une coordonnées est contenue dans cette zone ?

    Pour le moment, je voudrais faire une simple methode qui à partir d'une zone, et une coordonnée, me renvoie un booléen.

    Merci encore

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Pour le moment, je voudrais faire une simple methode qui à partir d'une zone, et une coordonnée, me renvoie un booléen.
    regarde du côté de JTS dans ce cas.
    http://www.vividsolutions.com/jts/jtshome.htm

    tu t'embetera beaucoup moins qu'avec Geotools si tu ne veux pas faire d'affichage.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci, je vais aller voir JTS.

    Par contre, tu penses que plutard je pourrais faire une superposition sur une carte ? Ou faudra que je passe à geotools ?

  6. #6
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Par contre, tu penses que plutard je pourrais faire une superposition sur une carte ? Ou faudra que je passe à geotools ?
    JTS est intégré à geotools donc il ne devrait pas y avoir trop de soucis.

    Mais apres pour les afficher, ca depend de tes coordonnées.

    sais tu en quelle projection elles sont? relevé GPS ou données sur projection française (Lambert 2 Etendu ...etc...) ou est ce de l'arbitraire?

    l'idéale serait de travailler avec des fichiers shapes (.shp) géoréférencés.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ca serait pour travailler avec des relevés GPS.

  8. #8
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    il y a quelqu'un qui fait du SIG la ou tu es?

    quelqu'un qui utilise MapInfo, ArcGIS, Geomédia ou Géoconcept?

    - si tu as un GPS à disposition je pense que oui.
    Essai de voir si cette personne ne peut pas récupérer tes points GPS et les géométries pour en faire un fichier shape géoréférencé. si c'est faisable tu as plus qu'a suivre le tuto sur ma page.


    - dans le cas contraire on peut aussi le faire en code dans geotools mais c'est plus compliqué.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Non je suis seul, mais oui j'ai un GPS à ma dispostion.

    Donc récupérer les points GPS, je pense que c'est faisable. Pour le reste ... je sais pas si j'en suis capable

    Le but ça serait que la zone soit pas toujours la même, donc que ça fonctionne pour n'importe quelle zone.

  10. #10
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Le but ça serait que la zone soit pas toujours la même, donc que ça fonctionne pour n'importe quelle zone.
    ca ne serat pas le problème à mon avis.


    Fais ta méthode avec JTS et essaye toi apres sur Geotools.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    JTS c'est assez bizarre je trouve. Ils livrent pas de jar, mais direct le dossier src.

    Et le tuto dispo sur leur site est assez pauvre je trouve :-(

    Voici ce que j'ai fais:

    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
    // creer les coordonnées des points qui délimitent la zone
    Coordinate[] coordinates = new Coordinate[] {new Coordinate(0,3), new Coordinate(10,10), new Coordinate(0,10), new Coordinate(0,3)};
    
    Geometry g = new GeometryFactory().createLinearRing(coordinates);
    
    //récupère l'enveloppe (?) de g
    Geometry g1 = g.getEnvelope();
    
    //récupère la plus petite surface contenant tous les points
    Geometry g2 = g.convexHull();
    
    //Le point dont on veut savoir si il fait partie de la zone
    Geometry g3 = new GeometryFactory().createPoint(new Coordinate(5,3);
    
    System.out.println("A contenu dans g1 ?: "+g1.contains(g3));
    System.out.println("A contenu dans g2 ?: "+g2.contains(g3));
    Alors apparemment le point est contenu dans l'enveloppe mais pas dans le convex ? oO

    J'ai du mal à saisir la chose.

    T'as déjà manipulé JTS eclesia ?

  12. #12
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    l'enveloppe correspond au rectangle englobant ta geometrie.

    la convex hull c'est la surface minimum cotenant tous les points.
    cf : http://en.wikipedia.org/wiki/Convex_hull


    T'as déjà manipulé JTS eclesia ?
    une fois seulement


    regarde ici :
    http://www.vividsolutions.com/jts/jtshome.htm
    prend Run3 et Case10

    la methode que tu dois utiliser est intersects.
    g1.intersects(g2)
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  13. #13
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    hmm
    Intersect c'est pas plutot pour récupérer la zone en commun ?

    Je pensais plutot utiliser g1.contains(g2) pour vérifier que g2 est bien inclus dans g1.

  14. #14
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    intersects c'est pour savoir s'ils sont en intersection.

    sinon tu peux aussi utiliser within (contenu dans)
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Si vraiment ça marche pas, tu as une méthode plus primitive pour faire ça à la main (même si je suis 100% pour utiliser les outils qui existent).

    Tu compte combien de coté de ton polygone intersecte la droite (0,0)->(x,y)
    -> Résultat = paire => (x,y) pas dans le polygone
    -> Résultat = impaire => (x,y) dans le polygone

    J'avais utiliser cette méthode pour une IHM SIG on le devait présenter des cartes, et pouvoir sélectionner des zones... maintenant les outils présentés par eclesia ont l'air d'être assez puissant pour le faire.

  16. #16
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Et dire qu'avant de demander de l'aide, j'ai cherché pdt un moment comment pouvoir le faire, et j'avais pas pensé à une solution "si simple"

    Merci beaucoup

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Il y a plein d'algo géométriques qui sont pas très compliqués mais il faut trouver l'idée. Celui-là, je me suis cassé les dents dessus à l'époque pendant un pti moment

    Et n'hésite pas à googleliser, tu trouve plein de truc, genre des rapports de thèse sur des algo géométriques très intéressant

  18. #18
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Il y a plein d'algo géométriques qui sont pas très compliqués mais il faut trouver l'idée
    fait attention a une chose quand meme avec les algos que tu trouves, la quasi totalite d'entre eux ne marchent qu'avec les geometries simples (format patatoide).
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    j'utilise actuellement JTS pour manipuler des images vectorielles. Son utilisation m'a été conseillée mais plus j'avance et moins je le trouve adapté.
    J'ai l'impression que JTS est utile pour des données qui ne bougent pas, mais, du fait de sa représentation des figures géométriques par des tableaux de Coordinate, il est très peu pratique de faire évoluer ces figures (notamment pour les ajouts/suppression de sommets, une liste m'aurait semblé bien plus pratique).
    Quelqu'un a-t-il un avis?
    Je dois en discuter sérieusement sous peu, et j'ai du mal à peser le pour et le contre, j'ai déjà fait pas mal de code (et bien sur énormément de débuggage ).

    merci d'avance

  20. #20
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    JTS marche bien (et utilise des algos performants et fiables).

    c'est vrai que si tu pars du principe que tu dois modifier facilement tes figures, la structure de JTS n'est pas idéale. Mais c'est tout de même faisable.

    Je ne l'ai utilisé que tres peu donc je ne vais pas m'etaler (je risquerai de dire des betises).


    Je sais par contre qu'un projet est en cours dans GEOAPI pour fournir un meilleur outil d'analyse spatial. JTS est uniquement 2Dimension (on peut stocker la 3eme si je me trompe pas mais pas de calcul dessus).

    Cette nouvelle implémentation supportera les nouveaux formats sig à N dimensions (exemple : X,Y,Z,Temps,...etc...). Je ne sais pas où cela en est mais il faudra encore attendre 1 an ou 2 .

    peu d'info sur le sujet, mais c'est bien vivant :
    http://docs.codehaus.org/display/GEOTDOC/02+GeoAPI
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

Discussions similaires

  1. Remplissage d'une zone d'un canvas
    Par ulysse66x dans le forum Composants VCL
    Réponses: 5
    Dernier message: 31/01/2004, 12h41
  2. Tabulation dans une zone SELECT
    Par jfphan dans le forum ASP
    Réponses: 4
    Dernier message: 03/10/2003, 15h30
  3. Réponses: 11
    Dernier message: 24/07/2003, 09h24
  4. Réponses: 17
    Dernier message: 25/03/2003, 13h45
  5. Réponses: 17
    Dernier message: 17/10/2002, 20h06

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