2009-06-13 6 views
0

Vous cherchez des options pour une plate-forme de cartographie de grands ensembles de données en direct pour traiter une grande quantité de données en constante évolution et l'afficher via un navigateur de manière utilisable.plate-forme de cartographie

Doit être basé sur un backend DB par rapport à l'approche «lit le fichier XML» de certaines applications Flash.

Répondre

2

JFreeChart est une solution gratuite et évolutive.

http://www.jfree.org/jfreechart/

+0

JFreeChart pourrait ne pas être le meilleur choix pour les données en direct comme la FAQ indique qu'il ne supporte pas vraiment la cartographie en temps réel. – Mark

+0

Oui, le temps quasi réel est une exigence clé. –

+0

FYI: nous utilisons JFreechart pour la cartographie en temps réel tous les jours. –

0

Comme les tableaux vont être visibles sur un navigateur, vous pouvez utiliser quelque chose comme gnuplot pour générer des fichiers d'image de vos données et afficher celles-ci. Gnuplot est vraiment flexible, vous pouvez créer à peu près n'importe quoi, et c'est assez rapide. Mais vous devrez lire les données et les transmettre à gnuplot. Il existe des interfaces Java pour gnuplot au cas où vous voudriez coller à Java. Le définir l'en-tête de rafraîchissement pour venir quantité raisonnable et regarder votre mise à jour de données.

Voir ici de gnuplot: http://www.gnuplot.info

Voir ici sur les interfaces Java: http://www.gnuplot.info/links.html

+0

On dirait que la création d'image statique-série. –

0

Une fois, je devais afficher un diagramme de Gantt de 150 machines et 100.000 tâches. J'ai écrit une applet Java personnalisée avec un rendu personnalisé et le transfert de données a été géré par http + java serialization api. J'ai trouvé que toute autre solution (SVG, VML, Flash, tags d'image) était simplement trop lente et difficile à utiliser.

Mise à jour: Here est une image à quoi elle ressemble. Malheureusement pour la communauté, c'était un projet industriel, donc, le code source n'est pas public. Je peux seulement partager quelques concepts à ce sujet.

La zone de diagramme est composée de plusieurs composants distincts: barres de défilement horizontales et verticales, zone de diagramme, étiquette de temps et deux tables de chaque côté. Ces composants sont liés entre eux via des gestionnaires d'événements. Si l'on fait défiler/changer cela affecte les autres. Le diagramme de Gantt se compose de rectangles remplis où la couleur est utilisée pour indiquer le statut de la tâche. Le rendu est effectué dans la méthode paint() en faisant une boucle sur chaque ligne visible et entre les dates de début affichées. Le rendu utilise un écrêtage agressif au lieu de s'appuyer sur la fonction d'écrêtage de Graphics2D. Les utilisateurs ont la possibilité de faire un panoramique et de zoomer sur la vue.

Les données sont stockées dans une structure de données sérialisable. Le code Java côté serveur contient un cache pour l'ensemble de la structure de données. Cette structure est actualisée toutes les 30 secondes, mais seules les différences sont récupérées dans la base de données de sauvegarde. Les données sont ensuite interrogées par l'applet, composées dans le modèle de Gantt, sérialisées et renvoyées au client. L'actualisation des données du côté client/applet n'est pas automatique: les utilisateurs doivent cliquer sur le bouton d'actualisation, ce qui leur permet d'évaluer l'image sans modifications inattendues.

Le rendu d'un diagramme de Gantt n'a pas besoin de beaucoup de fancyness - fillRect, AlphaComposite, drawLine. Si vous avez besoin d'images plus complexes, vous devrez faire plus de codage avec mon approche.

+0

Ceci est une approche intéressante, plus de détails? –

1
  1. Envoyez les données au navigateur en utilisant JSON - comme vous devez probablement - pour mettre à jour les informations côté client;
  2. Dessiner les données à l'aide Raphaël

Cela devrait vous donner un débit beaucoup plus élevé, car les graphiques sont régénérés côté client, et au sein d'une plate-forme fait pour le dessin.

Voici quelques exemples de ce que vous pouvez réaliser:

chart http://img140.imageshack.us/img140/5143/rapahelchart.png graph http://img269.imageshack.us/img269/6679/raphaelgraph.png

+0

Permet-il de "faire défiler" la chronologie, le zoom et d'autres "interactivité"? –