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

API standards et tierces Android Discussion :

Calculer le périmètre d'un terrain avec le GPS du mobile


Sujet :

API standards et tierces Android

  1. #1
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 56
    Points : 59
    Points
    59
    Par défaut Calculer le périmètre d'un terrain avec le GPS du mobile
    Bonjour la communauté. J'ai un projet qui consiste à calculer le perimetre et la surface d'un terrain avec le gps d'un smartphone android. Merci de me faire part de vos idées.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Suffit de calculer la distance entre 2 coordoonées retournée par le GPS et de les ajoutée tant que tu ne stop la mesure.
    Tu aura donc le périmètre.

    Pour la surface ça risque d'être un peu plus compliqué puisque il y'a peut de chance que ce soit des rectangles parfaits , mais c'est juste des maths.

    Pour info : calcul de distance entre 2 coordonnées

    Attention ça reste quand même approximatif et ne pourra pas rivaliser avec le travail d'un géomètre.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Sinon, il y a une librairie développée par l'équipe Google Maps qui permet de faire plein de calculs de ce genre.

    Pour le calcul de surface : computeArea(...)

    Pour le calcul de périmètre : computeLength(...)

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    si tu fait un prog ou quelqu'un se déplace aux différents coins d'un terrain et clique à chaque fois sur un bouton "enregistrer", tu auras un certain nombre de points qui forment un polygone
    - il faut ordonner les points pour calculer le périmètre et la surface : soit tu forces la personne qui prend les mesures à ne pas croiser son parcourt,
    - soit, là je ne connais pas d'algo, mais je me dis qu'en déterminant le barycentre et en calculant les angles et les distances au barycentre, on doit pouvoir déterminer l'ordre... on peut optimiser en déterminant la couverture convexe : si tous les points appartiennent à la couverture convexe, c'est trié

    tu calcules la distance en faisant la somme des distances (voir post àgrunk)
    tu calcules la surface d'un polygone par :
    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
    public double airePolygone(double[] x, double[] y) {
     
    	  int nbpoints=x.length;
    	  if ( y.length!=nbpoints ) throw new IllegalArgumentException();
    	  double  aire=0 ;
    	  int i=0, j=nbpoints-1  ;
     
    	  while( i<nbpoints ) {
    	    aire+=(x[j]+x[i])*(y[j]-y[i]);
    	    j=i; 
    	    i++;
    	  }
     
    	  return aire/2;
     
     
      }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    j'ai réfléchis à la problématique d'ordonner les points : tu vas être obligé de demander à parcourir les sommets de la surface à mesurer dans l'ordre, car il y a certaines configuration de points qui peuvent donner plusieurs polygones différents, de surfaces différentes, comme par exemple :

    Images attachées Images attachées  
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    tu calcules la surface d'un polygone par :
    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
    public double airePolygone(double[] x, double[] y) {
     
    	  int nbpoints=x.length;
    	  if ( y.length!=nbpoints ) throw new IllegalArgumentException();
    	  double  aire=0 ;
    	  int i=0, j=nbpoints-1  ;
     
    	  while( i<nbpoints ) {
    	    aire+=(x[j]+x[i])*(y[j]-y[i]);
    	    j=i; 
    	    i++;
    	  }
     
    	  return aire/2;
     
     
      }

    Bonjour excusez moi de rouvrir cette discussion mais j'ai besoin que vous donniez svp des précisions. Est ce que double[] x contient les latitudes des différents points et double[] y les longitudes? Et quel sera l'unité de la surface.
    Merci d'avance

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Les x et y sont des coordonnées dans un plan. Longitude et latitude (coordonnées GPS) sont des mesures angulaires. Il est donc nécessaire de les convertir en utilisant une projection, ce qui donnera une approximation de la surface(comme la projection de Mercator par exemple) mais c'est hors de mon champ de compétences. On doit pouvoir trouver ça sur des sites dédiés (peut-être même qu'il y a des API Android qui traitent ça, mais c'est également, hors de mon champ de compétences).

    L'unité de surface dépend de l'unité des coordonnées en entrée : si c'est des mètres, on obtient des mètres carrés, si c'est des kilomètres, on obtient des kilomètres carrés, et pour des coudes, des coudes carrés...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Terrain avec octree
    Par lXT95l dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/02/2008, 00h35
  2. [XI] Calcul de valeurs dans un graphique avec une periode de temps
    Par campia dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 23/04/2007, 09h17
  3. Réponses: 10
    Dernier message: 21/01/2007, 01h04
  4. [Tuto] [OpenGL] Afficher un terrain avec un fichier RAW
    Par Bakura dans le forum Contribuez
    Réponses: 1
    Dernier message: 05/09/2006, 20h03

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