cds.aladin
Class PlanBG
java.lang.Object
cds.aladin.Plan
cds.aladin.PlanImage
cds.aladin.PlanBG
- All Implemented Interfaces:
- java.lang.Runnable
- Direct Known Subclasses:
- PlanHealpix
public class PlanBG
- extends PlanImage
Gestion d'un plan image pour l'affichage du ciel de fond
Nota : Cet objet dérive de PlanImage parce qu'il pourrait être envisageable de l'insérer
dans la pile Aladin (voir tests dans ViewSimple.paintBackground() commenté).
Pour le moment, un seul objet PlanBG est géré dans Calque.
Les classes concernées sont:
- PlanBG : cette classe
- HealpixKey : gère un losange Healpix
- HealpixLoader (classe interne) : gestion asynchrone de la liste des HealpixKeys
- Loader (classe interne) : chargement asynchrone des données
METHODE :
Le fond du ciel est subdivisé dans des losanges HEALPIX accessibles directement via
des URLs du type http://serveur/SURVEY.NorderNNN.NpixXXX.hpx (ou .jpg). Les losanges
les plus appropriés sont chargées du réseau ou d'un cache disque en commençant par les
plus mauvaises résolutions. Le tracé des losanges est effectué à chaque repaint() de chaque
vue d'Aladin (=> doit être au max de qq ms) par transformée affine approchant les coordonnées
célestes des 4 coins dans la solution astrométrique de la vue. Les losanges sont gardés en
mémoire tant qu'ils sont tracés.
Nota : Les coordonnées des 4 coins peuvent être immédiatement connues à partir de l'ordre
et du numéro HEALPIX du losange.
les losanges ont 1024x1024 pixels utilisant eux-mêmes la subdivision HEALPIX d'ordre +10
par rapport à l'ordre du numéro npix du fichier. Ces pixels sont ordonnées en lignes
et colonnes "image", et non pas dans l'ordre de numérotation HEALPIX nested (ça afficherait
n'importe quoi)
Par nécessité de performances, le pixels sont en 8bits. Les losanges sont stockés
en JPEG sur le serveur (optimiser le volume), en FITS sur le cache disque (optimiser
le temps de rechargement)
La liste des serveurs est fournie par des enregistrements GLU
=> classe GluSky, liste dans Glu.vGluSky
Exemple :
%A 2MASSK.hpx
%D 2MASS K survey in HEALPIX access
%O CDS'aladin
%Z ALADIN
%U http://alinda.u-strasbg.fr/~oberto
%Aladin.Profile >=5.9 beta hpx
%Aladin.Label InfraRed (2MASS K)
%Aladin.Survey K
L'algorithme de tracage fonctionne de la manière suivante (voir draw(...)) :
1) Boucle depuis la plus mauvaise résolution HEALPIX (ordre 2 ou 3)
jusqu'à la résolution courante de la vue
1.1) Détermination de tous les losanges HEALPIX candidats (qui couvrent la vue)
=> voir classe HealpixKey
1.2) Affichage (ou demande d'affichage => pixList) des losanges concernées
ssi leurs fils ne vont pas être tous affichés
1.3) Réveil du Thread de gestion des losanges (class HealpixLoader)
L'algorithme du HealpixLoader fonctionne de la manière suivante :
1) Sommeil
2) Réveil (par timeout ou par wakeUp())
2.1) Gestion du cache disque (suppression des plus vieux fichiers accédés si nécessaire)
2.2) Purge des losanges en mémoire inutilisée (temps de vie>dernier affichage forcé)
2.3) Changement des états des losanges (ASKING=>TOBELOAD...) en vue de leur
chargement par les threads de gestion du cache et de gestion du net
2 threads, les loaders, gèrent les chargements (cache et réseau)
L'algorithme des Loader fonctionne de la manière suivante:
1) Sommeil
2) Réveil (par timeout ou wakeUp())
2.1) Chargement du "meilleur" losange à être TOBELOAD..
- Author:
- Pierre Fernique + Anaïs Oberto [CDS]
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Copyright © 2009 UDS/CNRS