Download - Interface de contrôle et de commande MSG
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Interface de contrôle et de commande MSG
Benoît Larroque1
1Pôle ATISÉcole Supérieure d’Electronique d’Informatique et d’Automatique
Projet XL
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Sommaire
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
En image
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Plus précisément
On souhaite une interface avec les capacités :
• Accéder aux images à distance• Faire des requêtes (temporelles, géographiques)• Surveiller les machines
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Plus précisément
On souhaite une interface avec les capacités :
• Accéder aux images à distance• Faire des requêtes (temporelles, géographiques)• Surveiller les machines
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Plus précisément
On souhaite une interface avec les capacités :
• Accéder aux images à distance• Faire des requêtes (temporelles, géographiques)• Surveiller les machines
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Station
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Ruby on Rails
• Open source• Framework MVC• Fournit une abstraction de la base de données
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Ruby on Rails
• Open source• Framework MVC• Fournit une abstraction de la base de données
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Ruby on Rails
• Open source• Framework MVC• Fournit une abstraction de la base de données
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
PostgreSQL et PostGIS
• Open source• Robuste et performant (+ de 377760images en bases)
• Extensible, ajout des primitivesgéographiques
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
PostgreSQL et PostGIS
• Open source• Robuste et performant (+ de 377760images en bases)
• Extensible, ajout des primitivesgéographiques
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
PostgreSQL et PostGIS
• Open source• Robuste et performant (+ de 377760images en bases)
• Extensible, ajout des primitivesgéographiques
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Schéma
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
SchémaDeux types d’utilisateurs→utilisateurs et possesseurs de jetons
• ont tous des droits (admin, lecteur, analyste. . . )• un possesseur de jetons ne peut pas être admin
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Design
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
• xHTML léger pour un téléchargement plus rapide• Facilement modifiable par conception• Multi-résolution (conçu pour 1024×768)
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
• xHTML léger pour un téléchargement plus rapide• Facilement modifiable par conception• Multi-résolution (conçu pour 1024×768)
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
• xHTML léger pour un téléchargement plus rapide• Facilement modifiable par conception• Multi-résolution (conçu pour 1024×768)
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Recherche
• Formulaire permettant de chercher par :• Date (début et fin)• Canal (ex : VIS008, VIS006, IR_039. . . )• Coordonnées Géographiques (latitude, longitude)
• Les résultats sont affichés dans un tableau réordonnable
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Recherche
• Formulaire permettant de chercher par :• Date (début et fin)• Canal (ex : VIS008, VIS006, IR_039. . . )• Coordonnées Géographiques (latitude, longitude)
• Les résultats sont affichés dans un tableau réordonnable
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Monitoring
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Généralités
• Certaines informations sont disponibles pour lesprogrammeurs :
• Accès REST (Support code d’erreurs HTTP etauthentification, stateless)
• Réponses en xHTML, XML, JSON, YAML et bien sûr PNG,JPEG, PGM.BZ2
FactBibliothèque d’accès Ruby déjà disponible
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Généralités
• Certaines informations sont disponibles pour lesprogrammeurs :
• Accès REST (Support code d’erreurs HTTP etauthentification, stateless)
• Réponses en xHTML, XML, JSON, YAML et bien sûr PNG,JPEG, PGM.BZ2
FactBibliothèque d’accès Ruby déjà disponible
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Endpoints• Images :
• /images/index. :format → liste d’image (params. : pagination,ordre)
• /images/search. :format→recherche d’image (params. :précédent et recherche )
• /image/ :id. :format→Infos sur une image ou binaire de l’image• images/coverage. :format→Couverture géographique et
spatiale• Composition : composite/compose. :format (params. : canaux)• Monitoring : monitor/inst_info/ :machine. :format• Analyses
• analysis/images_to_process/ :id. :format (params :pagination)
• analysis/set_result/ :id. :format (params. analyse, image,résultat)
• analysis/results/ :id. :format
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Endpoints• Images :
• /images/index. :format → liste d’image (params. : pagination,ordre)
• /images/search. :format→recherche d’image (params. :précédent et recherche )
• /image/ :id. :format→Infos sur une image ou binaire de l’image• images/coverage. :format→Couverture géographique et
spatiale• Composition : composite/compose. :format (params. : canaux)• Monitoring : monitor/inst_info/ :machine. :format• Analyses
• analysis/images_to_process/ :id. :format (params :pagination)
• analysis/set_result/ :id. :format (params. analyse, image,résultat)
• analysis/results/ :id. :format
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Endpoints• Images :
• /images/index. :format → liste d’image (params. : pagination,ordre)
• /images/search. :format→recherche d’image (params. :précédent et recherche )
• /image/ :id. :format→Infos sur une image ou binaire de l’image• images/coverage. :format→Couverture géographique et
spatiale• Composition : composite/compose. :format (params. : canaux)• Monitoring : monitor/inst_info/ :machine. :format• Analyses
• analysis/images_to_process/ :id. :format (params :pagination)
• analysis/set_result/ :id. :format (params. analyse, image,résultat)
• analysis/results/ :id. :format
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Endpoints• Images :
• /images/index. :format → liste d’image (params. : pagination,ordre)
• /images/search. :format→recherche d’image (params. :précédent et recherche )
• /image/ :id. :format→Infos sur une image ou binaire de l’image• images/coverage. :format→Couverture géographique et
spatiale• Composition : composite/compose. :format (params. : canaux)• Monitoring : monitor/inst_info/ :machine. :format• Analyses
• analysis/images_to_process/ :id. :format (params :pagination)
• analysis/set_result/ :id. :format (params. analyse, image,résultat)
• analysis/results/ :id. :format
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Fait
FactL’interface est conçue pour nécessiter peu de maintenance
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Opérations de maintenance
• Surveiller la tailles des logs• tail log/production.log > log/production.log
• Surveiller la bonne marche de PostgreSQL• VACCUM FULL ANALYZE
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Opérations de maintenance
• Surveiller la tailles des logs• tail log/production.log > log/production.log
• Surveiller la bonne marche de PostgreSQL• VACCUM FULL ANALYZE
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
En cas de problème
• Regarder les logs du serveur• redémarrer lighttpd
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
MotivationPourquoi une nouvelle interface ?
Interface MSGStationTechnologies utiliséesModélisationInterface utilisateurUtilisation
API, Maintenance, PerspectivesAPIMaintenancePerspectives d’avenir
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Idées de projet
Nombreuses !
• Analyses déportées• Client lourd, interfaçage Google Earth• Aide à la destruction des images inintéressantes
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Idées de projet
Nombreuses !
• Analyses déportées• Client lourd, interfaçage Google Earth• Aide à la destruction des images inintéressantes
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Idées de projet
Nombreuses !
• Analyses déportées• Client lourd, interfaçage Google Earth• Aide à la destruction des images inintéressantes
Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Conclusion
• Enfin une interface simple et accessible à tous.• Facile à maintenir.• Un projet intéressant.
Appendices
One more thing...
Film
Appendices
Coder e q u i r e ’ a t i s ’r e q u i r e ’ RMagick ’i n c l u d e MagickTOKEN=’ 1∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗TOKEN∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗e ’de f compos i t e ( tab )
tab .map{ | f | f . s ave ( ’ / v e r s a t i l e / ’+f . f i l e n ame ) }t=tab . c o l l e c t { | f | pu t s f . f i l e n ame ; ( Image . r ead ( ’ / v e r s a t i l e / ’+f .
f i l e n ame ) ) [ 0 ] ; }Image . combine ( t [ 0 ] , t [ 1 ] , t [ 2 ] ) . thumbna i l (1080 ,1080) . w r i t e ( " . / out /
compos i te−#{tab . f i r s t . date . s t r f t i m e ( ’%Y%m%d%H%M’) } . png" )put s " compos i te−#{tab . f i r s t . date . s t r f t i m e ( ’%Y%m%d%H%M’) } . png"tab .map{ | f | F i l e . u n l i n k ( ’ / v e r s a t i l e / ’+f . f i l e n ame ) }
endput s "START␣SCRIPT"con=At i sConne c t i on . new ( : token => TOKEN)s=At i s S e a r c h . new conr e t={}cache=Di r . new ( ’ . / out / ’ ) . r e j e c t { | t | t [0]== ’ . ’ [ 0 ] } . c o l l e c t { | t | Time . r ead (
F i l e . basename ( t , ’ . png ’ ) . s p l i t ( ’− ’ ) . l a s t ) }s . s e a r c h ( : channe l => [ ’ VIS006 ’ , ’ VIS008 ’ , ’ IR_016 ’ ] , : end =>Time . read ( "
200901111200" ) , : beg i n => Time . utc (2009) ) do | im |r e t [ im . date ]=Hash . new i f r e t [ im . date ] . n i l ?r e t [ im . date ] [ im . channe l ]=im u n l e s s cache . i n c l u d e ? im . datei f r e t [ im . date ] . s i z e > 2
put s "compose␣#{im . date }"compos i t e ( [ r e t [ im . date ] [ ’ IR_016 ’ ] , r e t [ im . date ] [ ’ VIS008
’ ] , r e t [ im . date ] [ ’ VIS006 ’ ] ] )end: more
end
Appendices
One other thing
Deuxième film
Appendices
Coder e q u i r e ’ a t i s ’r e q u i r e ’ RMagick ’i n c l u d e MagickTOKEN=’ 1∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗TOKEN∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗e ’put s "START␣SCRIPT"con=At i sConne c t i on . new ( : token => TOKEN) ; s=At i s S e a r c h . new con ; r e t={}cache=Di r . new ( ’ . / out / ’ ) . r e j e c t { | t | t [0]== ’ . ’ [ 0 ] } . c o l l e c t { | t | Time . r ead (
F i l e . basename ( t , ’ . png ’ ) . s p l i t ( ’− ’ ) . l a s t ) }cache2=Di r . new ( ’ . / out2 / ’ ) . r e j e c t { | t | t [0]== ’ . ’ [ 0 ] } . c o l l e c t { | t | Time . r ead
( F i l e . basename ( t , ’ . png ’ ) . s p l i t ( ’− ’ ) . l a s t ) }b l a c k = Magick : : Image . new (1080 ,1080) { s e l f . background_co lo r = ’ b l a c k ’ }s . s e a r c h ( : channe l => [ ’ IR_039 ’ ] , : end =>Time . read ( "200901111200" ) , :
beg i n => Time . utc (2009) ) do | im |i f ( cache . i n c l u d e ?( im . date ) && ! cache2 . i n c l u d e ?( im . date ) )
put s "compose␣#{im . date }"i=Image . r ead ( " . / out / compos i te−#{im . date . s t r f t i m e ( ’%Y%m%d
%H%M’) } . png" ) [ 0 ]i . f u z z="5.1%" ; t r a n s=i . t r a n s p a r e n t ( ’ b l a c k ’ )im . save ( ’ / v e r s a t i l e / ’+im . f i l e n ame )n_ight=(Image . r ead ( ’ / v e r s a t i l e / ’+im . f i l e n ame ) [ 0 ] ) .
thumbna i l (1080 ,1080)n i g h t=Magick : : Image . combine ( b l a c k . copy , n_ight , b l a c k . copy
)p=n i g h t . compos i t e ( t r an s , 0 , 0 , Magick : : OverCompositeOp )p . w r i t e ( " . / out2 / compos i te2−#{im . date . s t r f t i m e ( ’%Y%m%d%H%
M’) } . png" ) { s e l f . depth=8}F i l e . u n l i n k ( ’ / v e r s a t i l e / ’+im . f i l e n ame )
end: more
end