Modélisation 2D/3D de données : conseils ?
Bonjour,
Je vous expose la situation :
* Je dois créer un logiciel X qui lit un fichier créer par un autre logiciel Y
* Les données des fichiers générés par Y sont une succession de lignes qui décrivent comment dessiner de(s) objet(s). Les fichiers peuvent être décomposer ainsi :
> En en-tête : De quel type de modélisation traite-t-on, s'agit-il d'un dessin 2D, etc etc
> Dans le corps, il y a les données : x0 = 1, y0 = 2(ligne) x1 = 5.3 y1 = 6
* Une fois que le logiciel X a lu le fichier, il doit modéliser ces données.
* Je n'ai pas l'autorisation de modifier Y. Par contre, je peux demander au programmeur de Y de modifier la manière dont sont écrites les données dans les fichiers.
Ma vision de la solution est la suivante :
0] Demander au programmeur de Y de formater les fichiers de sorties. Pour cela, utiliser le format XML par exemple.
Ainsi, la notion de position des données est supprimée. Effectivement, avant les données étaient enregistrées tel quel :
x = 3 y = 5
Donc, on savait que la valeur de x était en position 4 et y en 10.
Avec un système de balisage, j'aurais :
<x>3</x><y>5</y>
L'extraction de la donnée est plus longue mais plus facile et non dépendante de la position des données.
1] Créer une interface entre Y et X. J'appellerais ce logiciel Z.
Ce logiciel Z s'occupe de lire le fichier généré par Y.
Il effectue une première lecture durant laquelle il va stocker l'en-tête ainsi que la position des balises. Il crée un index en somme.
Ensuite, Z se met en attente de requête de la part de X.
2] Pour le logiciel X, je vais l'articuler ainsi :
> Lorsque l'utilisateur demande d'ouvrir un fichier(généré par Y), X exécute l'interface Z avec comme paramètre ce fichier.
> Ensuite, le logiciel X communique avec Z. X demande à Z de lui fournir des données(qu'il sait afficher). C'est donc Z qui va indiquer comment afficher les données, X ne s'occupe que d'afficher.
> Lorsque l'utilisateur ne fait rien, la communication est en pause.
> Lorsque l'utilisateur ferme le fichier, la communication est fermée.
Précisions diverses :
* Les fichiers générés par Y peuvent être très lourds(> 1Go).
Mais peu importe la taille des fichiers, il ne doit pas y avoir de ralentissement lors de l'ouverture. Donc un fichier de 10Go doit être ouvert aussi rapidement qu'un fichier de 10Ko. Bien entendu, le traitement est forcément plus long, mais ça je ne peux rien y faire ?
Voilà l'histoire.
J'aimerais savoir si vous pensez qu'il s'agit d'une bonne solution.
Le format XML est-il bien approprié ? Un meilleur format(pas trop compliqué pour le programmeur de Y) ?
L'interface peut-elle être améliorée ? Comment programmer l'interface : un exécutable indépendant, un objet de Y ?
En ce qui concerne X, connaissez vous de bonne librairies qui permettent la modélisation 2D/3D et qui peuvent traiter de façon fluide énormément de données ?
Un grand merci pour votre aide :)