Bonjour,
En javascript, comment trier un tableau de latitude Longitude par distance à vol d'oiseau ?
But, ne conserver qu'un seul point tous les x mètres ?
Des formules de calcul existent pour la distance voire des mots clef comme distanceTo en leaflet mais dépendent de l'ordre des coordonnées GPS lues ?
Merci par avance !
Bien cordialement,
PS : De mémoire sur le site https://www.datavis.fr il existait une formule pour un "parcours de représentant" ordonnant des points de passage malheureusement ce site semble ne plus exister.
Conserver un seul point d'intérêt latitude longitude par zone
Conserver un seul point d'intérêt latitude longitude par zone
Modifié en dernier par Jpe54 le 02 sept. 2023, 10:31, modifié 1 fois.
Re: Comment Trier latitude longitude par distance
La ténacité finit peut-être par payer....
je partage avec vous cette page github lié à l'algorithme que je recherchais sous un nom erroné. Il s'agit du "problème du voyageur de commerce" :
https://github.com/jhackshaw/tspvis qui contient des exemples de routines javascript... et un lien https://tspvis.com/ ouvrant une page de test qui, en cliquant sur le point d'interrogation face au mot ALGORITHME, permet la visualisation de la routine utilisée !
c'est un début, en l'état reste à savoir si cela va permettre d'avancer faute de code html exemple
Bon usage à tous.
je partage avec vous cette page github lié à l'algorithme que je recherchais sous un nom erroné. Il s'agit du "problème du voyageur de commerce" :
https://github.com/jhackshaw/tspvis qui contient des exemples de routines javascript... et un lien https://tspvis.com/ ouvrant une page de test qui, en cliquant sur le point d'interrogation face au mot ALGORITHME, permet la visualisation de la routine utilisée !
c'est un début, en l'état reste à savoir si cela va permettre d'avancer faute de code html exemple
Bon usage à tous.
Re: Comment Trier latitude longitude par distance
Bonjour Jpe,
C'est pas évident ce genre d'algo en JS. Il faut cogiter et faire des essais.
Ou alors chercher des librairies toute prêtes...
C'est pas évident ce genre d'algo en JS. Il faut cogiter et faire des essais.
Ou alors chercher des librairies toute prêtes...
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
Re: Comment Trier latitude longitude par distance
Bonsoir,
Effectivement, j'ai aussi l'impression que nombre de sites "pédagogue" ont disparu...
Cogitation pour qu'à l'issu de nombreuses photos prises lors de voyages ne reste plus qu'un WayPoint pour chaque lieu intéressant :
Voici une solution exclusivement javascript liée à cette problématique, avec l'assistance de L'IA (ChatGPT : https://www.chatbotgpt.fr) à condition d'évaluer correctement le cahier des charges de cette manière :
************************************
Regrouper l'intégralité d'un tableau de latitude Longitude par zone selon une distance souhaitée
1- Regrouper tous les points d'une zone par distance
2- Ne conserver qu'un seul point dans chaque zone
3- Compiler toutes les zones en un seul fichier.
************************************
Résultat sur une collecte de 850 photos et autant coordonnées GPS il ne reste que les 140 endroit photographiés si choix de distance de 50 mètres à vol d'oiseau...
Le code à nécessité quelques retouches mais le résultat est Impressionnant !
Toutes remarques sont les bienvenues.
Amitiés à tous
Voici le script :
Effectivement, j'ai aussi l'impression que nombre de sites "pédagogue" ont disparu...
Cogitation pour qu'à l'issu de nombreuses photos prises lors de voyages ne reste plus qu'un WayPoint pour chaque lieu intéressant :
Voici une solution exclusivement javascript liée à cette problématique, avec l'assistance de L'IA (ChatGPT : https://www.chatbotgpt.fr) à condition d'évaluer correctement le cahier des charges de cette manière :
************************************
Regrouper l'intégralité d'un tableau de latitude Longitude par zone selon une distance souhaitée
1- Regrouper tous les points d'une zone par distance
2- Ne conserver qu'un seul point dans chaque zone
3- Compiler toutes les zones en un seul fichier.
************************************
Résultat sur une collecte de 850 photos et autant coordonnées GPS il ne reste que les 140 endroit photographiés si choix de distance de 50 mètres à vol d'oiseau...
Le code à nécessité quelques retouches mais le résultat est Impressionnant !
Toutes remarques sont les bienvenues.
Amitiés à tous
Voici le script :
Code : Tout sélectionner
// ======================================================================================================================
// 1- Extraire dans cet ordre lat, lng, name d'un tableau ["Libellé", latitude, longitude]
// ======================================================================================================================
const coordinates = wpt[0].map((item) => [item[1], item[2], item[0]]);
// ======================================================================================================================
// 2- Regroupement [latitude, longitude, name] par zone selon distance voulue
// ======================================================================================================================
// Ecart souhaité en mètres entre deux Points d'intérêt à conserver
const distanceMax = 50;
const groupes = regrouperParZoneEtDistance(coordinates, distanceMax);
// ======================================================================================================================
// ======================================================================================================================
// Regrouper les coordonnées [latitude, longitude, name] par zone et par distance
// ======================================================================================================================
function regrouperParZoneEtDistance(coordinates, distanceMax) {
const groupes = [];
// Créer les zones
for (let i = 0; i < coordinates.length; i++) {
const point = coordinates[i];
let groupeExistant = false;
// Récupérer uniquements les coordonnées de la zone
for (let j = 0; j < groupes.length; j++) {
const groupe = groupes[j];
const distanceEntrePoints = distance(point[0], point[1], groupe.latitude, groupe.longitude);
if (distanceEntrePoints <= distanceMax) {
groupe.coordinates.push({
latitude: point[0],
longitude: point[1],
name: point[2],
});
groupeExistant = true;
break;
}
}
if (!groupeExistant) {
groupes.push({
latitude: point[0],
longitude: point[1],
coordinates: [
{
latitude: point[0],
longitude: point[1],
name: point[2],
},
],
});
}
}
return groupes;
}
// ======================================================================================================================
// Formule de Haversine pour calcul de distance en mètres entre deux coordonnées au format [latitude, longitude]
// ======================================================================================================================
function distance(lat1, lon1, lat2, lon2) {
// Rayon de la Terre en km
const R = 6371;
const dLat = ((lat2 - lat1) * Math.PI) / 180;
const dLon = ((lon2 - lon1) * Math.PI) / 180;
const lat1Rad = (lat1 * Math.PI) / 180;
const lat2Rad = (lat2 * Math.PI) / 180;
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1Rad) * Math.cos(lat2Rad);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
// Convertir en mètres;
const distance = R * c * 1000;
return distance;
}
// ======================================================================================================================
// 4- Compiler les coordonnées de toutes les zones en un seul tableau
// ======================================================================================================================
var tableauCoordonnees = groupes.map((groupe) => [groupe.latitude, groupe.longitude, groupe.coordinates[0].name]);
Re: Conserver un seul point d'intérêt latitude longitude par zone
Intéressant retour de l'IA sur le développement
Je m'en sers pas mal pour la génération d'images d'illustrations et pour faire des pictos et icones
Faudra que je m'y mette aussi comme assistant sur le developpement de fonctionnalités
Je m'en sers pas mal pour la génération d'images d'illustrations et pour faire des pictos et icones
Faudra que je m'y mette aussi comme assistant sur le developpement de fonctionnalités
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php
https://www.toutjavascript.com/livre/index.php
Re: Conserver un seul point d'intérêt latitude longitude par zone
Pour Information le site https://www.datavis.fr est de nouveau accessible !
Le problème du "voyageur de commerce" pour optimiser un parcours est toujours présent avec LA solution : https://www.datavis.fr/playing/salesman-problem
Bon usage à qui est interessé. Ce site est une mine d'information...
Le problème du "voyageur de commerce" pour optimiser un parcours est toujours présent avec LA solution : https://www.datavis.fr/playing/salesman-problem
Bon usage à qui est interessé. Ce site est une mine d'information...
Re: Conserver un seul point d'intérêt latitude longitude par zone
To sort a table of latitude and longitude points by undertale yellow distance in JavaScript, you can use the Haversine formula to calculate the great-circle distance between two points on the Earth's surface.
-
- Messages : 2
- Enregistré le : 25 juil. 2023, 11:51
Re: Conserver un seul point d'intérêt latitude longitude par zone
Cela nécessite de déterminer l’algorithme utilisé pour garantir que la latitude correcte est calculée. Apprenez des algorithmes plus intéressantsgeometry dash lite. Il est difficile d'exploiter une bonne capacité de réflexion.