Algorithme de Clustering pour l'Application de Cartographie
Je suis à la recherche dans le clustering des points sur une carte (latitude/longitude). Existe-il des recommandations sur un algorithme rapide et évolutive?
Plus précisément, j'ai une série de coordonnées latitude/longitude et une fenêtre de la carte. Je suis en train de regrouper les points qui sont en étroite collaboration afin de supprimer l'encombrement.
J'ai déjà une solution pour le problème (voir ici), que je me demandais si il n'y a aucune formelle de l'algorithme qui résout le problème de manière efficace.
- Pourriez-vous peut-être poster du code à montrer ce que vous voulez accomplir? Je suis confus quant à ce qu'est exactement que vous entendez par "clustering". Êtes-vous en les traçant sur une carte du monde?
Vous devez vous connecter pour publier un commentaire.
Pour une terre virtuelle de l'application, j'ai utilisé le clustering décrit
ici. Il est rapide comme l'éclair et facilement extensible.
Google Maps Hacks a un hack, "Hack" 69. Cluster de Marqueurs à un niveau de Zoom Élevé", sur que.
Aussi, voir Wikipédia sur les algorithmes de clustering.
Vous pourriez regarder à l'indexation de tous vos points à l'aide d'un QuadTile régime, et puis, fondé sur le barème le plus bas de la quadri-splits vous allez. Tout de même situé à points sera ensuite près les uns des autres dans votre index, permettant le regroupement de produire efficacement.
QuadTiles sont un exemple de Morton Codes, et il est un exemple python lié à partir de cet article de wikipedia qui peuvent vous aider.
J'ai regardé les différentes bibliothèques et les a trouvés si complexe ne comprenais pas un mot, donc j'ai décidé de faire mon propre algorithme de clustering
Voici mon code en Java
//Calcule la distance en pixel entre deux latitude et de la longitude des points à un niveau de zoom
//La fonction principale qui fait calcule les clusters
1. Liste de tableaux de la latitude et de la longitude des points est itéré jusqu'à la longueur .
2. intérieur de la boucle de la même copie de la liste de tableaux est itéré de i+1, ie laissant la boucle du haut de l'index
3. 0e élément est considéré comme le centre du centre de gravité et de tous les autres points sont comparées si leur distance en pixel est très inférieur de l'ajouter dans le cluster
4. supprimer tous les éléments de haut de liste de tableaux et de copie de liste de tableaux qui ont servi de cluster
5 redémarrez le processus de réinitialiser l'index à partir de 0;
6 si le centre de gravité a pas de clusters alors que l'élément n'est pas supprimé