2 Copyright (C) 2015-2016 EDF
4 This file is part of SALOME HYDRO module.
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.
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.
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/>.
19 ######################################
20 Interprétation du format SinusX
21 ######################################
23 Structure du fichier et types de lignes
24 =======================================
26 Le fichier ASCII est structuré en blocs de données.
28 Les lignes commençant par *B* sont des délimiteurs de bloc.
30 Les lignes commençant par *CN* ou *CP* complètent la définition du bloc.
32 Les autres lignes commençant par *C* sont des commentaires.
34 Les lignes commençant par des nombres sont les points du bloc.
36 On peut décrire des semis de points, des courbes xyz, des profils, des courbes de niveau.
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...
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 :
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.
50 Le premier import est le plus important et doit être fait systématiquement.
52 Le second est utile pour des courbes xyz, quand Z est variable.
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.
66 B type x1 y1 z1 dx dy dz rapport
71 * type = S semis de point
74 * type = N courbe de niveau
76 x1 y1 z1 dx dy dz rapport
77 -------------------------
79 Origine et deltas pour convertir les mesures de la table à digitaliser en mètres.
81 On n'en tient pas compte à l'import.
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
100 B type 0.0 0.0 0.0 1.0 1.0 1.0 1.0
102 ou plutôt, à préférer
119 Remplacer les espaces par '_' (exemple : courbe 1 --> courbe_1)
124 Les noms des objets dans le module HYDRO. Éviter les espaces et caractères accentués dans les noms.
129 Définition historique
130 ---------------------
136 Deux booleens indiquant si la courbe est fermée, et si les points sont reliés
138 *exemple* : CP 0 1 : courbe ouverte, points reliés.
140 En pratique, on ne doit pas avoir besoin de points non reliés, sauf les semis.
142 Proposition d'interprétation et export
143 --------------------------------------
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.
159 Le numéro du plan vaut 0, 1 ou 2 (0 : plan XoY, 1 : plan YoZ, 2 : plan XoZ)
161 La plupart des blocs sont dans le plan XoY : CP 0
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.
166 Paramètres complémentaires selon le type de blocs
167 =================================================
169 type = S semis de point
170 -----------------------
179 CP (16 indicateurs réels)
181 Inutilisé - pas interprété à l'import.
183 Soit on fait un export compatible::
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
187 Soit on ne met rien : préférable.
192 Définition historique
193 ~~~~~~~~~~~~~~~~~~~~~
199 Je n'ai pas compris comment c'était utilisé en altitude...
201 interprétation proposée pour un profil dans le plan *XoZ*
202 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
209 CP Xorig Yorig Xfin Yfin
211 (Xorig, Yorig) et (Xfin, Yfin) extrémités géoréférencées du profil.
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.
216 interprétation proposée pour un profil dans le plan *XoY*
217 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
219 On suppose que les points sont déjà géoréférencés, avec leurs 3 coordonnées valides.
221 On peut regrouper plusieurs profils dans SALOME HYDRO pour créer un objet rivière ('stream')
223 type = N courbe de niveau
224 -------------------------
230 Altitude de la courbe de niveau. On retrouve la valeur dans la coordonnée Z de chaque point.
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) ?
235 Lignes de Commentaires
236 ======================
244 on peut mettre en tête de fichier des informations d'export à définir, par exemple :
246 C SALOME HYDRO version xxx
248 C nom de l'étude SALOME
267 un label associé au point : inutilisé, ignorer
272 Pour les courbes de niveau, on peut ignorer Z, il est défini au niveau du bloc.
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).
280 Selon la nature des courbes, on met à zéro la coordonnée inutile.
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.
286 Pour les courbes projetées dans le plan XoY::
290 Pour les courbes projetées dans le plan XoZ::
294 Pour les profils géoréférencés XoY::
298 exemple de courbe XYZ
299 =====================
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.
308 B C -3.333330E+03 +4.875000E+04 +0.000000E+00 +3.333330E+02 +1.666670E+02 +1.000000E+00 0.658992
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
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
341 bloc de type C (courbe xyz), parametres de digitalisation ignorés
344 nom du bloc = trait_cote_ile
347 courbe fermée, spline
353 plan XoY (ça doit toujours être le plan 0)
356 les commentaires sont ignorés
358 ``211563.340 133489.165 9.000 A``
359 point x, y, z. Les informations supplémentaires sont ignorées.
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.
368 Courbe projetée dans le plan XoY sous forme de courbe de niveau à Z=0.
369 C'est une courbe fermée, spline.
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
405 exemple de courbe de niveau
406 ===========================
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.
416 B N -3.333330E+03 +4.875000E+04 +0.000000E+00 +3.333330E+02 +1.666670E+02 +1.000000E+00 0.658992
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
449 bloc de type N (courbe de niveau), paramètres de digitalisation ignorés
452 nom du bloc = trait_cote_ile
455 courbe fermée, spline
458 altitude de la courbe.
464 les commentaires sont ignorés
466 ``211563.340 133489.165 9.000 A``
467 point x, y, z. Les informations supplémentaires sont ignorées.
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.
475 Courbe projetée dans le plan XoY sous forme de courbe à Z=0.
476 C'est une courbe fermée, spline.
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
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.
518 CN altitude_trait_cote_ile
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::
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**
539 Dans le module HYDRO de SALOME, lors de l'importation des fichiers SinusX existant,
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.
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).
565 :ref:`ref_formatsSpecs`