Salut la communauté, je suis sur un projet qui nécessite de calculer le périmètre d'un terrain en utilisant le gps. Quelqu'un aurait-il une idée de la mise en oeuvre?
Salut la communauté, je suis sur un projet qui nécessite de calculer le périmètre d'un terrain en utilisant le gps. Quelqu'un aurait-il une idée de la mise en oeuvre?
Bonjour, pourrons nous avoir plus de détails ?
Comment se fait la saisie ?
On choisie des points sur une carte et à partir des coordonnées, on calcule des longueurs et ensuite le périmètre ?
Bonjour,
je pense que vous devez faire un calcul mathmatique selon une carte geograhique et la formule de Mircator
selon de la dimension de carte vous devz spécifie les valeurs lal et longitude puis la forume vous donnez le droit de calculer la distance entre les points
Une fois la distance est calculé vous pouvez calculer le perimètre.
Cette méthode est utilisé dans des grandes distances mais pour un terrain je ne sais pas c'elle peut vous aider.
Merci
Bonjour, je m'excuse du retard de la réponse. En fait j'aimerai à partir du téléphone (GPS activé) faire un tour du terrain. Quand je finis (je reviens au point initial) que je sache le périmetre.
Ben juste stocker la différence de distance depuis la dernière position connue à chaque modification de la position... Attention, faire *très* attentions aux points "fantaisistes" qui pourraient être renvoyer (exclure par exemple ceux dont la précision inclurait la localisation précédente).
Ne pas oublier de rajouter la distance jusqu'à la position initiale....
Par exemple (pseudo code):
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 class PerimetreActivity extends Activity implements OnLocationListener { private Location currentLocation = null; private boolean started = false; private Location startLocation = null;; // null if not started private double accumulationFromStart = 0.0; private double totalPerimeter = 0.0; public void onCreate(...) { .... } public void onResume() { LocationManager manager = ....; manager.startListening(this); this.currentLocation = manager.getLastKnownLocation(...); } public void onPause() { manager.stopListener(this); } public void onStartRecord() { if (this.started) return; this.started = true; this.startLocation = this.currentLocation; this.accumulationFromStart = 0.0; this totalPerimeter = 0.0; if (this.startLocation == null) { // no location yet... waiting for one.... displayProgress(); } } public void onStopRecord() { if (!this.started) return; this.started = false; } public void onLocationChanged(Location loc) { // updating current (see alogithm to update accurately location)... // here loc is a better estimation... keeping it float dist = 0.0f; if (this.currentLocation != null) dist = this.currentLocation.distanceTo(loc); this.currentLocation = loc; // if started... updating the accumulations as well if (this.started) { if (this.startLocation == null) { this.startLocation = this.currentLocation; hideProgress(); } else { this.accumulationFromStart += dist; this.totalPerimeter = this.startLocation.distanceTo(loc) + this.accumulationFromStart; } // update interface } } }
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager