Salome HOME
ajustement doc tutoriel
[modules/hydro.git] / doc / salome / tutorial / format_sinusx.rst
1 ..
2    Copyright (C) 2015-2016 EDF
3
4    This file is part of SALOME HYDRO module.
5
6    SALOME HYDRO module is free software: you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation, either version 3 of the License, or
9    (at your option) any later version.
10
11    SALOME HYDRO module is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with SALOME HYDRO module.  If not, see <http://www.gnu.org/licenses/>.
18
19 ######################################
20 Interprétation du format SinusX
21 ######################################
22
23 Structure du fichier et types de lignes
24 =======================================
25
26 Le fichier ASCII est structuré en blocs de données.
27
28 Les lignes commençant par *B* sont des délimiteurs de bloc.
29
30 Les lignes commençant par *CN* ou *CP* complètent la définition du bloc.
31
32 Les autres lignes commençant par *C* sont des commentaires.
33
34 Les lignes commençant par des nombres sont les points du bloc.
35
36 On peut décrire des semis de points, des courbes xyz, des profils, des courbes de niveau.
37
38 Selon le format, les courbes peuvent être reliées ou non, fermées ou non.
39 En pratique, une courbe non reliée est une sorte de semis de point...
40
41 Le module HYDRO de SALOME prend en compte des points xyz, des courbes dans le plan XoY (z=0),
42 des courbes dans le plan XoZ (profils). 
43 Pour traiter les courbes dans l'espace (Z quelconque, variable ou non),on peut faire 3 types
44 de traitements lors de l'import dans le module HYDRO :
45
46 * projeter en z=0 pour avoir une courbe reliée dans le plan XoY.
47 * créer une ligne dans le plan XoZ (abscisse curviligne de la courbe XoY, altitude).
48 * importer les points x,y,z non reliés comme Bathymétrie/altimétrie.
49
50 Le premier import est le plus important et doit être fait systématiquement.
51
52 Le second est utile pour des courbes xyz, quand Z est variable.
53
54 Le troisième n'est pas facile à utiliser directement dans le module HYDRO, au delà de la simple visualisation
55 des champs de points de Bathymétrie/altimétrie en 3D. Pour l'interpolation d'altitude au noeuds du maillage,
56 on a besoin du contour du champ de Bathymetrie/altimétrie dans le plan XoY.
57 Ce contour n'a pas vraiment de sens pour une ligne.
58 Par contre, en combinant les points de plusieurs lignes (par exemple une série de courbes de niveau)
59 dans un même nuage de points, on peut reconstituer une Bathymétrie/altimétrie.
60
61 Délimiteur de bloc
62 ==================
63
64 ::
65
66   B type x1 y1 z1 dx dy dz rapport
67
68 type
69 ----
70
71 * type = S semis de point    
72 * type = C courbe xyz
73 * type = P profil xyz
74 * type = N courbe de niveau
75
76 x1 y1 z1 dx dy dz rapport
77 -------------------------
78
79 Origine et deltas pour convertir les mesures de la table à digitaliser en mètres.
80
81 On n'en tient pas compte à l'import.
82
83 exemples de lignes B
84 --------------------
85
86 ::
87
88   B S +4.290000E+05 +2.420000E+05 +0.000000E+00 +1.500000E+03 +2.000000E+03 +1.000
89   B N +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E+00 +1.000000E+00 +1.000000E+00 1
90   B C +0.000000E+00 +0.000000E+00 +0.000000E+00 +1.000000E+00 +1.000000E+00 +1.000000E+00 1
91   B C +0.000000E+00 +0.000000E+00 +0.000000E+00 +3.200000E+04 +2.400000E+04 +1.000
92   B C -3.333333E+03 +4.875000E+04 +0.000 A000E+00 +3.333330E+02 +1.666670E+02 +1.000000E+00 0.659154
93   B C -3.333330E+03 +4.875000E+04 +0.000 A000E+00 +3.333330E+02 +1.666670E+02 +1.000000E+00 0.658869
94
95 export
96 ------
97
98 ::
99
100   B type   0.0  0.0  0.0    1.0  1.0  1.0    1.0
101
102 ou plutôt, à préférer
103
104 ::
105
106   B type
107
108
109 Nom du bloc
110 ===========
111
112 ::
113
114   CN le_nom_du_bloc
115
116 Import
117 ------
118
119 Remplacer les espaces par '_' (exemple : courbe 1 --> courbe_1)
120
121 Export
122 ------
123
124 Les noms des objets dans le module HYDRO. Éviter les espaces et caractères accentués dans les noms.
125
126 Liaison Fermeture
127 =================
128
129 Définition historique
130 ---------------------
131
132 ::
133
134   CP fermé relié
135
136 Deux booleens indiquant si la courbe est fermée, et si les points sont reliés
137
138 *exemple* : CP 0 1 : courbe ouverte, points reliés.
139
140 En pratique, on ne doit pas avoir besoin de points non reliés, sauf les semis.
141
142 Proposition d'interprétation et export
143 --------------------------------------
144
145 ::
146
147   CP fermé spline
148
149 Deux booleens indiquant si la courbe est fermée, et si elle est de type spline ou ligne brisée.
150 Il faudra corriger manuellement les jeux de données existant pour les courbes fermées, et les polygones.
151
152 Plan de définition
153 ==================
154
155 ::
156
157   CP numeroPlan
158
159 Le numéro du plan vaut 0, 1 ou 2 (0 : plan XoY, 1 : plan YoZ, 2 : plan XoZ)
160
161 La plupart des blocs sont dans le plan XoY : CP 0
162
163 On peut utiliser les plans 1 ou 2 pour définir des profils / section dans un plan normal à l'axe hydraulique,
164 avec deux coordonnées utiles. En pratique, on utilisera systématiquement le plan 2.
165
166 Paramètres complémentaires selon le type de blocs
167 =================================================
168
169 type = S semis de point
170 -----------------------
171
172 Sans objet
173
174 type = C courbe xyz
175 -------------------
176
177 ::
178
179   CP (16 indicateurs réels)
180
181 Inutilisé - pas interprété à l'import.
182
183 Soit on fait un export compatible::
184
185   CP 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
186
187 Soit on ne met rien : préférable.
188
189 type = P profil xyz
190 -------------------
191
192 Définition historique
193 ~~~~~~~~~~~~~~~~~~~~~
194
195 ::
196
197   CP Zref Xref dz dx
198
199 Je n'ai pas compris comment c'était utilisé en altitude...
200
201 interprétation proposée pour un profil dans le plan *XoZ*
202 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
203
204 En pratique profil dans un plan vertical avec la donnée des 2 extrémités géoreférencées.
205 On suppose que la troisième coordonnée des points est à 0.
206
207 ::
208
209   CP Xorig Yorig Xfin Yfin
210
211 (Xorig, Yorig) et (Xfin, Yfin) extrémités géoréférencées du profil.
212
213 On passe d'un point (x,z) au point géoréférencé (ref +x*dx, yref +x*dy, z), avec (dx,dy) vecteur horizontal 
214 normé calculé à partir des 2 extrémités géoréférencées.
215
216 interprétation proposée pour un profil dans le plan *XoY*
217 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
218
219 On suppose que les points sont déjà géoréférencés, avec leurs 3 coordonnées valides.
220
221 On peut regrouper plusieurs profils dans SALOME HYDRO pour créer un objet rivière ('stream')
222
223 type = N courbe de niveau
224 -------------------------
225
226 ::
227
228   CP altitude
229
230 Altitude de la courbe de niveau. On retrouve la valeur dans la coordonnée Z de chaque point.
231
232 import : prendre cette valeur en référence,
233 ignorer la coordonnée Z des points (toujours la même valeur dans les exemples) ?
234
235 Lignes de Commentaires
236 ======================
237
238 ::
239
240   C texte quelconque
241
242 ignoré à l'import
243
244 on peut mettre en tête de fichier des informations d'export à définir, par exemple : 
245
246 C SALOME HYDRO version xxx
247
248 C nom de l'étude SALOME
249
250 C date 
251
252 Lignes de points
253 ================
254
255 ::
256
257   X Y Z touche texte
258
259 touche
260 ------
261
262 inutilisé, ignorer
263
264 texte
265 -----
266
267 un label associé au point : inutilisé, ignorer
268
269 import
270 ------
271
272 Pour les courbes de niveau, on peut ignorer Z, il est défini au niveau du bloc.
273
274 Quand deux points consécutifs ont les mêmes coordonnées, il faut ignorer le deuxième point.
275 (cas rencontré dans des jeux de données).
276
277 export
278 ------
279
280 Selon la nature des courbes, on met à zéro la coordonnée inutile.
281
282 remarque : les courbes de niveau importées sont transformées en courbes dans le plan Z=0
283 et regroupées en semis de points. On perd l'information courbe de niveau dans SALOME et on ne saura pas
284 les exporter en tant que courbe de niveau avec l'altitude renseignée.
285
286 Pour les courbes projetées dans le plan XoY::
287
288   X Y 0.0
289
290 Pour les courbes projetées dans le plan XoZ::
291
292   X 0.0 Z 
293
294 Pour les profils géoréférencés XoY::
295
296   X Y Z
297
298 exemple de courbe XYZ
299 =====================
300
301 Ici, il s'agit en réalité d'une courbe de niveau Z=9.0, mais elle n'est pas définie comme telle.
302
303 import
304 ------
305
306 ::
307
308   B C -3.333330E+03 +4.875000E+04 +0.000000E+00 +3.333330E+02 +1.666670E+02 +1.000000E+00 0.658992
309   CN trait_cote_ile
310   CP 1 1 
311   CP  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00  +0.000000E+00 
312   CP 0 
313   C 
314      211563.340     133489.165      9.000 A
315      211604.013     133517.519      9.000 A
316      211645.047     133544.734      9.000 A
317      211684.597     133585.430      9.000 A
318      211716.859     133584.277      9.000 A
319      211777.488     133597.853      9.000 A
320      211828.211     133609.896      9.000 A
321      211896.886     133618.448      9.000 A
322      211945.422     133633.990      9.000 A
323      211996.891     133649.326      9.000 A
324      212044.447     133622.576      9.000 A
325      212067.681     133584.157      9.000 A
326      212056.937     133521.369      9.000 A
327      212007.716     133482.464      9.000 A
328      211959.462     133428.999      9.000 A
329      211925.576     133392.362      9.000 A
330      211885.762     133376.207      9.000 A
331      211817.310     133404.427      9.000 A
332      211783.848     133416.811      9.000 A
333      211742.545     133413.025      9.000 A
334      211681.493     133421.775      9.000 A
335      211644.814     133436.616      9.000 A
336      211597.633     133447.736      9.000 A
337      211569.826     133461.954      9.000 A
338
339
340 ``B C -3.3...``
341   bloc de type C (courbe xyz), parametres de digitalisation ignorés
342
343 ``CN ...``
344   nom du bloc = trait_cote_ile
345
346 ``CP 1 1``
347   courbe fermée, spline
348
349 ``CP +0.0...``
350   ignoré
351
352 ``CP 0``
353   plan XoY (ça doit toujours être le plan 0)
354
355 ``C ...``
356   les commentaires sont ignorés
357
358 ``211563.340     133489.165      9.000 A``
359   point x, y, z.  Les informations supplémentaires sont ignorées.
360
361 Si toutes les valeurs Z du bloc sont à zéro, les valeurs Z sont ignorées.
362 Si au moins une valeur Z du bloc est différente de zéro, alors les points alimentent un semis
363 regroupant les différentes courbes du fichier.
364
365 export
366 ------
367
368 Courbe projetée dans le plan XoY sous forme de courbe de niveau à Z=0.
369 C'est une courbe fermée, spline.
370
371 ::
372
373   B N
374   CN trait_cote_ile
375   CP 1 1 
376   CP 0.0
377   CP 0
378   C
379      211563.340     133489.165     0.000
380      211604.013     133517.519     0.000
381      211645.047     133544.734     0.000
382      211684.597     133585.430     0.000
383      211716.859     133584.277     0.000
384      211777.488     133597.853     0.000
385      211828.211     133609.896     0.000
386      211896.886     133618.448     0.000
387      211945.422     133633.990     0.000
388      211996.891     133649.326     0.000
389      212044.447     133622.576     0.000
390      212067.681     133584.157     0.000
391      212056.937     133521.369     0.000
392      212007.716     133482.464     0.000
393      211959.462     133428.999     0.000
394      211925.576     133392.362     0.000
395      211885.762     133376.207     0.000
396      211817.310     133404.427     0.000
397      211783.848     133416.811     0.000
398      211742.545     133413.025     0.000
399      211681.493     133421.775     0.000
400      211644.814     133436.616     0.000
401      211597.633     133447.736     0.000
402      211569.826     133461.954     0.000
403
404
405 exemple de courbe de niveau
406 ===========================
407
408 Ici, on a repris l'exemple précédent en changeant le type de courbe : B N au lieu de B C
409 et indication de l'altitude dans l'en tête : CP 9.0.
410
411 import
412 ------
413
414 ::
415
416   B N -3.333330E+03 +4.875000E+04 +0.000000E+00 +3.333330E+02 +1.666670E+02 +1.000000E+00 0.658992
417   CN trait_cote_ile
418   CP 1 1 
419   CP 9.0 
420   CP 0 
421   C 
422      211563.340     133489.165      9.000 A
423      211604.013     133517.519      9.000 A
424      211645.047     133544.734      9.000 A
425      211684.597     133585.430      9.000 A
426      211716.859     133584.277      9.000 A
427      211777.488     133597.853      9.000 A
428      211828.211     133609.896      9.000 A
429      211896.886     133618.448      9.000 A
430      211945.422     133633.990      9.000 A
431      211996.891     133649.326      9.000 A
432      212044.447     133622.576      9.000 A
433      212067.681     133584.157      9.000 A
434      212056.937     133521.369      9.000 A
435      212007.716     133482.464      9.000 A
436      211959.462     133428.999      9.000 A
437      211925.576     133392.362      9.000 A
438      211885.762     133376.207      9.000 A
439      211817.310     133404.427      9.000 A
440      211783.848     133416.811      9.000 A
441      211742.545     133413.025      9.000 A
442      211681.493     133421.775      9.000 A
443      211644.814     133436.616      9.000 A
444      211597.633     133447.736      9.000 A
445      211569.826     133461.954      9.000 A
446
447
448 ``B N -3.3...``
449   bloc de type N (courbe de niveau), paramètres de digitalisation ignorés
450
451 ``CN ...``
452   nom du bloc = trait_cote_ile
453
454 ``CP 1 1``
455   courbe fermée, spline
456
457 ``CP 9.0``
458   altitude de la courbe.
459
460 ``CP 0``
461   plan XoY
462
463 ``C ...``
464   les commentaires sont ignorés
465
466 ``211563.340     133489.165      9.000 A``
467   point x, y, z.  Les informations supplémentaires sont ignorées.
468
469 Les valeurs Z des points sont ignorées. On alimente le semis de points
470 avec les points de la courbe avec z forcé à 9.0.
471
472 export
473 ------
474
475 Courbe projetée dans le plan XoY sous forme de courbe à Z=0.
476 C'est une courbe fermée, spline.
477
478 ::
479
480   B N
481   CN trait_cote_ile
482   CP 1 1 
483   CP 0.0
484   CP 0
485   C
486      211563.340     133489.165     0.000
487      211604.013     133517.519     0.000
488      211645.047     133544.734     0.000
489      211684.597     133585.430     0.000
490      211716.859     133584.277     0.000
491      211777.488     133597.853     0.000
492      211828.211     133609.896     0.000
493      211896.886     133618.448     0.000
494      211945.422     133633.990     0.000
495      211996.891     133649.326     0.000
496      212044.447     133622.576     0.000
497      212067.681     133584.157     0.000
498      212056.937     133521.369     0.000
499      212007.716     133482.464     0.000
500      211959.462     133428.999     0.000
501      211925.576     133392.362     0.000
502      211885.762     133376.207     0.000
503      211817.310     133404.427     0.000
504      211783.848     133416.811     0.000
505      211742.545     133413.025     0.000
506      211681.493     133421.775     0.000
507      211644.814     133436.616     0.000
508      211597.633     133447.736     0.000
509      211569.826     133461.954     0.000
510
511
512 Courbe projetée dans le plan XoZ selon l'abscisse curviligne.
513 C'est une courbe ouverte de type spline, définie par convention dans le plan XoZ.
514
515 ::
516
517   B P
518   CN altitude_trait_cote_ile
519   CP 0 1
520   CP 0.0 0.0 0.0 0.0
521   CP 2
522   C
523     0.0 9.0
524     ...
525     x   9.0
526
527 *Les extrémités ne sont pas géoréférencées, on s'appuie sur une autre courbe XoY*.
528 Pour distinguer les profils XoZ non géoréférencés de ceux qui le sont (par leur extrémités),
529 on utilise une valeur particulière du champ CP avec des coordonnées nulles::
530
531   CP 0.0 0.0 0.0 0.0
532
533 Les valeurs x des abscisses curvilignes sont exprimées en mètre le long de la courbe,
534 ou sont normalisées entre 0 et 1. **A revoir**
535
536 Synthèse
537 ========
538
539 Dans le module HYDRO de SALOME, lors de l'importation des fichiers SinusX existant,
540
541 - les semis de points sont transformés en Bathymétries.
542 - les courbes de niveau sont transformées en courbes à Z=0 et profils dans le plan XoZ,
543   non géoréférencés (abscisse curviligne, z).
544 - les courbes xyz sont transformées en courbes à Z=0 et en profils dans le plan XoZ,
545   non géoréférencés (abscisse curviligne, z).
546 - les profils XoZ géoréférencés par les coordonnées des extrémités sont convertis
547   en profils où tous les points sont définis par leurs 3 coordonnées X, Y, Z (profils XoY).
548 - les profils XoZ non géoréférencés sont importés tels que
549   (utilisés comme ligne d'altitude pour une autre ligne dans le plan XoY,
550   ou comme section pour un canal, une digue...)
551 - les profils XoY sont conservés tels quels (tous les points sont définis par leurs 3 coordonnées X, Y, Z).
552 - l'ensemble des points des courbes de niveau (avec Z différent de 0) et des courbes xyz servent
553   à créer un champ de Bathymétrie.
554
555 Lors de l'export, 
556
557 - les polylignes sont exportées en courbes de niveau Z=0, ouvertes ou fermées, spline ou ligne brisée. 
558   (Que fait-on des sections ? Utiliser un commentaire de début de section sur le point ?)
559 - les profils sont exportés en tant que profils (à approfondir)
560 - Doit on exporter les bathymétries au format SinusX ou au format xyz ? (ne diffère que par la présence d'un en tête).
561
562
563 .. only:: html
564
565    :ref:`ref_formatsSpecs`