Question

SpatialKey génère des cartes thermiques qui cherchent vraiment sympa, et nous nous penchons sur ce qui est impliqué à faire cela pour un projet interne de visualiser de grandes quantités de points. Je cherche des commentaires sur quelques idées sur où commencer (et il est juste un problème vraiment intéressant).

SpatialKey heatmap http://img697.imageshack.us/img697/7964/resolutiondays508x17550. jpg

Nous savons qu'ils utilisent Flash, et de ce que nous pouvons dire, les heatmaps sont interactifs plutôt que d'être rendu à partir d'un serveur de tuiles. Notre première estimation comment cette mise en oeuvre est que le serveur fournit son client Flash avec une grille - chaque cellule ayant un nombre calculé par le serveur. Le client Flash ne puis une interpolation basée sur les valeurs des cellules dans la grille pour faire la jolie sortie que vous voyez ci-dessus.

A ce stade, je suis juste intéressé par la façon dont ils pourraient éventuellement générer la grille côté serveur efficace (si notre hypothèse sur leur mise en œuvre est encore correcte). Il semble que cela impliquerait:

  1. Effectuer une requête pour ce qui est actuellement dans les limites de carte
  2. Exécution d'une sous-requête d'agrégation pour chaque cellule à l'intérieur de ces limites (faire un comptage, somme, moyenne ou comme dans l'exemple ci-dessus).

Throw faire cela à plusieurs niveaux de zoom à une résolution de grille sain d'esprit et il semble que vous auriez besoin d'un index spatial personnalisé pour faire de cette efficacité.

Des preneurs à expliquer un autre itinéraire? Si cela importe, nous sommes habitués ici pour stocker nos données dans PostgreSQL avec PostGIS pour l'index spatial, mais je suis ouvert à essayer quoi que ce soit.

Était-ce utile?

La solution

juste une supposition, j'imagine qu'ils ont mis en place une bibliothèque SIG en Flash du côté client et utilisent ce projet de latitude et la longitude dans un espace de pixels. Ensuite, ils agrègent par pixel pour déterminer la « hauteur » de chaque pixel et le rendre comme vous rendriez un cercle, mais en utilisant un remplissage en dégradé avec une transparence, avec les couleurs de début et de fin du remplissage de gradient déterminé par la hauteur du pixel. cercles multiples superposées les unes sur les autres pixels créera plus lumineux.

Une autre solution pourrait être de le faire dans un fond gris, la carte alors la valeur de la luminosité à une échelle de couleurs. Cela pourrait être le plus efficace.

Nous vendons les cartes thermiques treemap plus traditionnels pour d'intégration dans les applications visuelles d'analyse (par exemple: SDK carte thermique), et maintenant des cartes de chaleur géographiques coloriser les zones. Nous avons lu les cartes standards Esri Shapefile et faire toute la projection et le rendu sur le côté client (en Java, pas Flash, mais même concept). Je pense que SpatialKey fait la même chose, car ils prennent en charge le rendu rempli la zone, ce qui ne peut pas vraiment être fait si vous utilisez un serveur de tuiles comme Google Maps.

Nous ne sommes pas encore faire des cartes de chaleur de densité comme celle-ci, mais des tests effectués une couple utilisant des images statiques comme arrière-plan. Si vous voulez plus d'informations, laissez-moi savoir et je peux demander à mon développeur comment nous l'avons fait. Je sais que nous sommes actuellement en développement sur plus de fonctionnalités basées sur un point, mais je ne sais pas où les cartes de chaleur de densité sont à l'horaire encore.

SpatialKey juste fait écrit un bon poste sur la différence entre les cartes de chaleur à surface remplie (ex: cartes thématiques) et des cartes de chaleur de densité. Vous pouvez le vérifier à http: // blog. spatialkey.com/2010/02/comparing-thematic-maps-with-density-heatmaps/.

Si vous ne figurez une bonne façon de faire des cartes de chaleur de densité, je serais intéressé à apprendre comment vous l'avez fait, car il serait un ajout précieux à notre SDK d'analyse visuelle. Bonne chance.

Autres conseils

MapReduce pour vos totaux de carte réelle globale, et quelque chose avec l'indexation géospatiale pour la base de données - pour alimenter ces emplois MapReduce. Je suis à la recherche dans l'application de cette même approche exacte, mais pour les interfaces au lieu de cartes :) MongoDB semble être un bon ajustement pour le moment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top