diff --git a/04-ContraintesRessources/03.04.ValidationGeometrique.md b/04-ContraintesRessources/03.04.ValidationGeometrique.md index e3779ca0d23433d7e60004c374fdf5dac7a7cb5f..a0d63bb4dd7d236434dd6b4c4be55bab74031d30 100644 --- a/04-ContraintesRessources/03.04.ValidationGeometrique.md +++ b/04-ContraintesRessources/03.04.ValidationGeometrique.md @@ -4,157 +4,108 @@ Qualigéo permet la spécification et le contrôle de la géométrie des types d ### Critères de validation de la géométrie -<table border="1" padding="2px" cellspacing="0"> - <col style="width: auto;" /> - <col style="width: auto;" /> - <col style="width: auto;" /> - <col style="width: auto;" /> - <col style="width: 20%;" /> - <col /> - <tbody> - <tr> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Critère de validation de la géométrie</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Détail / Explication</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Erreur Qualigéo </td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Chaines WKT </td> - <td style="text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Exemple de géométrie</td> - </tr> - <tr> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">type_repair</td> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Géométries corrompues ou dégénérées</td> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><span style="color: #943a99;">E0018</span> <![CDATA[ ]]></td> - <td style="text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><span style="font-weight: normal;">POLYGON ((15 35))</span> - </td> - <td style="text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> - <img src="..\_images/e0028_150x150.png" style="width: 150;height: 150;" /> - <p style="font-weight: normal;"> </p> - </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Self intersecting</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">enveloppe exterieur / Donut :auto intersection des limites</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><span style="color: #943a99;">E0018 </span> - </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">POLYGON ((0 11,0 20,10 20,10 11,0 11),(0 15,2 16,0 17,0 15))</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> - <img src="..\_images\ogc1_174x166.png" style="width: 174;height: 166;" /> - </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Consecutive \_2d_pointsgeometry</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Points consécutifs en 2D. Points dupliqués </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">E0019</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">LINESTRING (0 0,0 0,1 1,2 0)</td> - <td style="text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> - <img src="..\_images/points_consecutifs_159x139.png" style="width: 159;height: 139;" /> - </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Consecutive \_3d_points</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Points consécutifs en 3D. Points dupliqués </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">LINESTRING Z (0 0 10,0 0 10,1 1 10,2 2 10)</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> - <img src="..\_images/points_consecutifs_159x139.png" style="width: 159;height: 139;" /> - </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">nan_removal</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Contient des NaN ou infinis</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">E0028</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">POINT (0 nan)</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Contains NaNs or Infinite</td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">null_removal</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Contient des parties de géométries nulles. Détection de IFMNull dans des agrégats </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">GEOMETRYCOLLECTION (POLYGON ((0 0,1 0,1 1,0 1,0 0)),POLYGON ((3 0,4 0,4 4,3 4,0 4,3 0)),GEOMETRYCOLLECTION EMPTY)</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">missing_vertex_normals</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Vertex "normaux" manquants</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="text-align: left;"><span style="color: #943a99;">E0018</span> - </td> - <td style="text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><span style="font-weight: normal;">MULTILINESTRING Z ((1 5 0,1 5 0),(1 5 0,2 3 4),(2 3 4,1 5 0))</span> - </td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> </td> - </tr> - <tr> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">planar_surface</td> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Surface non plane</td> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="text-align: left;font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">shell_validation</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> - <p style="font-size: 10pt;">Limites de solides invalides : Un des critères suivants : </p> - <ul> - <li value="1">Projection invalide de la surface</li> - <li value="2"> -Géométrie 2-Manifold invalide -</li> - <li value="3">Surface non fermée</li> - <li value="4">Faces pendantes</li> - </ul> - <ul> - <li value="1"> -Orientation de la face, usage incorrect des côtés -</li> - <li value="2">Faces libres</li> - </ul> - <ul> - <li value="1">Surface auto-intersectée -</li> - <li value="2">Vertex non utilisés</li> - <li value="3"> -Mauvaise orientation des normales de surface -</li> - <li value="4">Pas assez de faces</li> - </ul> - </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">solid_void_repair</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Vides de solides invalides / Limites de solides invalides</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">MULTILINESTRING Z ((0 0 0,10 0 0),(10 0 0,10 0 10),(10 0 10,0 0 10),(0 0 10,0 0 0),(10 0 0,10 10 0),(10 10 0,10 10 10),(10 10 10,10 0 10),(10 0 10,10 0 0),(0 0 0,0 10 0),(0 10 0,10 10 0),(10 10 0,10 0 0),(10 0 0,0 0 0),(0 0 0,0 0 10),(0 0 10,0 10 10),(0 10 10,0 10 0),(0 10 0,0 0 0),(0 0 10,10 0 10),(10 0 10,10 10 10),(10 10 10,0 10 10),(0 10 10,0 0 10),(0 10 0,0 10 10),(0 10 10,10 10 10),(10 10 10,10 10 0),(10 10 0,0 10 0),(2 2 2,2 2 5),(2 2 5,5 2 5),(5 2 5,5 2 2),(5 2 2,2 2 2),(2 2 2,5 2 2),(5 2 2,5 5 2),(5 5 2,2 5 2),(2 5 2,2 2 2),(5 2 2,5 2 5),(5 2 5,5 5 5),(5 5 5,5 5 2),(5 5 2,5 2 2),(2 2 2,2 5 2),(2 5 2,2 5 5),(2 5 5,2 2 5),(2 2 5,2 2 2),(2 2 5,2 5 5),(2 5 5,5 5 5),(5 5 5,5 2 5),(5 2 5,2 2 5),(2 5 2,5 5 2),(5 5 2,5 5 5),(5 5 5,2 5 5),(2 5 5,2 5 2),(5 5 5,5 7 5),(5 7 5,5 7 7),(5 7 7,5 5 7),(5 5 7,5 5 5),(5 5 5,7 5 5),(7 5 5,7 7 5),(7 7 5,5 7 5),(5 7 5,5 5 5),(5 5 5,5 5 7),(5 5 7,7 5 7),(7 5 7,7 5 5),(7 5 5,5 5 5),(5 5 7,5 7 7),(5 7 7,7 7 7),(7 7 7,7 5 7),(7 5 7,5 5 7),(5 7 5,7 7 5),(7 7 5,7 7 7),(7 7 7,5 7 7),(5 7 7,5 7 5),(7 5 5,7 5 7),(7 5 7,7 7 7),(7 7 7,7 7 5),(7 7 5,7 5 5))</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> - <p> - <img src="..\_images/limites_vides_invalides_225x229.png" style="width: 225;height: 229;" /> </p> - <p style="font-size: 10pt;">Exemple de limites de vides de solides invalides</p> - </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">missing_texture_coordinates</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Coordonnées de texture manquantes</td> - <td style="font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowSep_ColEnd"> </td> - </tr> - <tr> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowEnd_ColSep">area_orientation</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowEnd_ColSep">Orientation surfacique invalide -</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowEnd_ColSep"><span style="color: #943a99;">E0018</span> - </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowEnd_ColSep">POLYGON ((31 21,31 30,40 30,40 21,31 21),(35 25,35 27,36 27,36 25,35 25))</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Basic_Body_0_0_RowEnd_ColEnd"> - <p> - <img src="..\_images/orientation_invalide_197x197.png" style="width: 197;height: 197;" /> - </p> - <p>Orientation de la limite intérieure invalide. </p> - <p>Règle de la mai droite non respectée. </p> - </td> - </tr> - </tbody> - </table> +<style type="text/css"> +.tg {border-collapse:collapse;border-spacing:0;} +.tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; + overflow:hidden;padding:10px 5px;word-break:normal;} +.tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; + font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} +.tg .tg-o6tx{background-color:#eae8e8;border-color:#d6d6d6;text-align:left;vertical-align:top} +.tg .tg-0pn5{background-color:#923288;border-color:#d6d6d6;color:#ffffff;text-align:left;vertical-align:top} +.tg .tg-avj4{border-color:#d6d6d6;text-align:left;vertical-align:top} +</style> +<table class="tg"> + <tr> + <th class="tg-0pn5">Critère de validation</th> + <th class="tg-0pn5">StartFragmentDéfinitionEndFragment</th> + <th class="tg-0pn5">StartFragmentChaîne WKTEndFragment</th> + <th class="tg-0pn5">StartFragmentExemple de géométrieEndFragment</th> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentGéométries corrompues ou dégénéréesEndFragment</td> + <td class="tg-avj4">StartFragmentL<span style="font-weight:400;font-style:normal">es dégénérescences et </span><br><span style="font-weight:400;font-style:normal">corruptions vont être détectées. Une géométrie dégénérée est une </span><br><span style="font-weight:400;font-style:normal">géométrie dont le type de géométrie peut être simplifié. Un polygone </span><br><span style="font-weight:400;font-style:normal">avec une surface nulle, par exemple, est dégénéré, et peut être </span><br><span style="font-weight:400;font-style:normal">simplifié en une ligne, un point ou un IFMENull. Une géométrie </span><br><span style="font-weight:400;font-style:normal">corrompue, quant à elle, contient des éléments conflictuels dans la </span><br><span style="font-weight:400;font-style:normal">définition de sa géométrie (ex : un arc dont les angles et les points </span><br><span style="font-weight:400;font-style:normal">finals sont incohérents).</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-avj4">StartFragment<span style="font-weight:normal;color:rgb(146, 50, 136)">POLYGON ((15 35))</span><br><span style="font-weight:normal">EndFragment</span></td> + <td class="tg-avj4"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom1.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentAuto intersectionEndFragment</td> + <td class="tg-o6tx">StartFragmentL<span style="font-weight:400;font-style:normal">es points d’auto-intersection sont détectés.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-o6tx">StartFragment<span style="font-weight:normal">POLYGON ((0 11,0 20,10 20,10 11,0 11),(0 15,2 16,0 17,0 15)) </span><br><span style="font-weight:normal">EndFragment</span></td> + <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom2.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentPoints consécutifs dupliqués en 3DEndFragment</td> + <td class="tg-avj4">StartFragment<span style="font-weight:400;font-style:normal">La détection des entités dupliquées est réalisée en 3D.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-avj4">StartFragmentLINESTRING Z (0 0 10,0 0 10,1 1 10,2 2 10)EndFragment</td> + <td class="tg-avj4"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom3_4.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentPoints consécutifs dupliqués en 2DEndFragment</td> + <td class="tg-o6tx">StartFragmentL<span style="font-weight:400;font-style:normal">a détection des entités dupliquées est réalisée en 2D.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-o6tx">StartFragmentLINESTRING (0 0,0 0,1 1,2 0)EndFragment</td> + <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom3_4.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentContient des valeurs NaN ou infiniesEndFragment</td> + <td class="tg-avj4">StartFragmentL<span style="font-weight:400;font-style:normal">es NaN (Not a Number) et les valeurs infinies vont être détectées.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-avj4">StartFragmentPOINT (0 nan)EndFragment</td> + <td class="tg-avj4"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentContient des parties de géométries nullesEndFragment</td> + <td class="tg-o6tx">StartFragmentL<span style="font-weight:400;font-style:normal">es IFMENull vont être </span><br><span style="font-weight:400;font-style:normal">détectés. Noter qu’un IFMENull n’est considéré comme une « partie » que </span><br><span style="font-weight:400;font-style:normal">s’il provient d’un agrégat. Seuls les IFMNull enfants de certains </span><br><span style="font-weight:400;font-style:normal">agrégats sont considérés comme des « parties ».</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-o6tx">StartFragmentGEOMETRYCOLLECTION (POLYGON ((0 0,1 0,1 1,0 1,0 0)),POLYGON ((3 0,4 0,4 4,3 4,0 4,3 0)),GEOMETRYCOLLECTION EMPTY)EndFragment</td> + <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom6.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentVertex "normaux" manquantsEndFragment</td> + <td class="tg-avj4">StartFragment<span style="font-weight:400;font-style:normal">Les vertex sans normale et les coordonnées de texture manquantes sont détectés (un vertex est rapporté par géométrie).</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-avj4">StartFragment<span style="font-weight:normal">MULTILINESTRING Z ((1 5 0,1 5 0),(1 5 0,2 3 4),(2 3 4,1 5 0))</span><br><span style="font-weight:normal">EndFragment</span></td> + <td class="tg-avj4"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom7.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentSurface non planeEndFragment</td> + <td class="tg-o6tx">StartFragment<span style="font-weight:400;font-style:normal">Les faces et parties de </span><br><span style="font-weight:400;font-style:normal">surfaces non planes, comme par exemple des parties de mailles ou des </span><br><span style="font-weight:400;font-style:normal">parties de surfaces composées, vont être détectées. Une face ou une </span><br><span style="font-weight:400;font-style:normal">partie de surface non planaire n’a pas tous les vertex dans le même plan</span><br><span style="font-weight:400;font-style:normal"> de l’espace.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-o6tx"></td> + <td class="tg-o6tx"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentLimites de solides invalidesEndFragment</td> + <td class="tg-avj4">StartFragment<span style="font-weight:400;font-style:normal">Les types d’anomalies suivants peuvent être détectés :</span><br><br><span style="font-weight:400;font-style:normal">- vertex non utilisés</span><br>,<br><span style="font-weight:400;font-style:normal">- pas assez de faces</span><br>,<br><span style="font-weight:400;font-style:normal">- mauvaise orientation de face</span><br>,<br><span style="font-weight:400;font-style:normal">- géométrie 2-Manifold invalide</span><br>,<br><span style="font-weight:400;font-style:normal">- surface auto-intersectée</span><br>,<br><span style="font-weight:400;font-style:normal">- surface non fermée</span><br>,<br><span style="font-weight:400;font-style:normal">- mauvaise orientation de surface</span><br>,<br><span style="font-weight:400;font-style:normal">- plusieurs composants connectés</span><br>.EndFragment</td> + <td class="tg-avj4"></td> + <td class="tg-avj4"></td> + </tr> + <tr> + <td class="tg-0pn5">Vides de solides invalides</td> + <td class="tg-o6tx">StartFragment<span style="font-weight:400;font-style:normal">Un vide est une cavité, </span><br><span style="font-weight:400;font-style:normal">ou une région vide à l’intérieur d’un solide et est définie par sa </span><br><span style="font-weight:400;font-style:normal">bordure interne. Un solide est défini par sa bordure externe et une ou </span><br><span style="font-weight:400;font-style:normal">plusieurs bordures internes.</span><br><br><span style="font-weight:400;font-style:normal">Les types d’anomalies suivants peuvent être détectés :</span><br><br><span style="font-weight:400;font-style:normal">- dupliquer les enveloppes</span><br>,<br><span style="font-weight:400;font-style:normal">- intersection des enveloppes</span><br>,<br><span style="font-weight:400;font-style:normal">- coquille interne à l’extérieur de coquille externe,</span><br><br><span style="font-weight:400;font-style:normal">- intérieur de coquille non connecté,</span><br><br><span style="font-weight:400;font-style:normal">- bordures de solide invalides</span><br>.EndFragment</td> + <td class="tg-o6tx">StartFragment<span style="font-weight:normal">MULTILINESTRING Z ((0 0 0,10 0 0),(10 0 0,10 0 10),(10 0 10,0 0 10),(0 0 10,0 0 </span><br><span style="font-weight:normal">0),(10 0 0,10 10 0),(10 10 0,10 10 10),(10 10 10,10 0 10),(10 0 10,10 0 0),(0 0 </span><br><span style="font-weight:normal">0,0 10 0),(0 10 0,10 10 0),(10 10 0,10 0 0),(10 0 0,0 0 0),(0 0 0,0 0 10),(0 0 </span><br><span style="font-weight:normal">10,0 10 10),(0 10 10,0 10 0),(0 10 0,0 0 0),(0 0 10,10 0 10),(10 0 10,10 10 </span><br><span style="font-weight:normal">10),(10 10 10,0 10 10),(0 10 10,0 0 10),(0 10 0,0 10 10),(0 10 10,10 10 10),(10 </span><br><span style="font-weight:normal">10 10,10 10 0),(10 10 0,0 10 0),(2 2 2,2 2 5),(2 2 5,5 2 5),(5 2 5,5 2 2),(5 2 </span><br><span style="font-weight:normal">2,2 2 2),(2 2 2,5 2 2),(5 2 2,5 5 2),(5 5 2,2 5 2),(2 5 2,2 2 2),(5 2 2,5 2 </span><br><span style="font-weight:normal">5),(5 2 5,5 5 5),(5 5 5,5 5 2),(5 5 2,5 2 2),(2 2 2,2 5 2),(2 5 2,2 5 5),(2 5 </span><br><span style="font-weight:normal">5,2 2 5),(2 2 5,2 2 2),(2 2 5,2 5 5),(2 5 5,5 5 5),(5 5 5,5 2 5),(5 2 5,2 2 </span><br><span style="font-weight:normal">5),(2 5 2,5 5 2),(5 5 2,5 5 5),(5 5 5,2 5 5),(2 5 5,2 5 2),(5 5 5,5 7 5),(5 7 </span><br><span style="font-weight:normal">5,5 7 7),(5 7 7,5 5 7),(5 5 7,5 5 5),(5 5 5,7 5 5),(7 5 5,7 7 5),(7 7 5,5 7 </span><br><span style="font-weight:normal">5),(5 7 5,5 5 5),(5 5 5,5 5 7),(5 5 7,7 5 7),(7 5 7,7 5 5),(7 5 5,5 5 5),(5 5 </span><br><span style="font-weight:normal">7,5 7 7),(5 7 7,7 7 7),(7 7 7,7 5 7),(7 5 7,5 5 7),(5 7 5,7 7 5),(7 7 5,7 7 </span><br><span style="font-weight:normal">7),(7 7 7,5 7 7),(5 7 7,5 7 5),(7 5 5,7 5 7),(7 5 7,7 7 7),(7 7 7,7 7 5),(7 7 </span><br><span style="font-weight:normal">5,7 5 5))EndFragment</span></td> + <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom10.png" width="400" height="300"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentToutes les erreurs OGC simplesEndFragment</td> + <td class="tg-avj4">StartFragmentLa contrainte OGC simple regroupe les trois contraintes :<br>- auto Intersection,<br>- point répété,<br>- géométrie corrompue.EndFragment</td> + <td class="tg-avj4"></td> + <td class="tg-avj4"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentToutes les erreurs OGC validesEndFragment</td> + <td class="tg-o6tx">StartFragmentLa contrainte OGC valide regroupes les contraintes :<br>- trou à l’extérieur,<br>- trous imbriqués,<br>- intérieur déconnecté,<br>- anneau auto intersecté,<br>- enveloppes complémentaires,<br>- anneaux dupliqués,<br>- pas assez de points,<br>- coordonnée invalide,<br>- anneau non fermé,<br>- géométrie corrompue.EndFragment</td> + <td class="tg-o6tx"></td> + <td class="tg-o6tx"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentCoordonnées de texture manquantesEndFragment</td> + <td class="tg-avj4">StartFragment<span style="font-weight:400;font-style:normal">Certaines géométries, </span><br><span style="font-weight:400;font-style:normal">comme les mailles et les faces, supportent les apparences. Ces </span><br><span style="font-weight:400;font-style:normal">géométries peuvent être incluses dans des surfaces complexes ou de </span><br><span style="font-weight:400;font-style:normal">solides. Parfois, les apparences ont des textures associées, en raster. </span><br><span style="font-weight:400;font-style:normal">Si c’est le cas, il est nécessaire que les géométries correspondantes </span><br><span style="font-weight:400;font-style:normal">disposent des coordonnées de texture. Sans celles-ci, il ne sera par </span><br><span style="font-weight:400;font-style:normal">exemple pas possible, lors de la visualisation, de faire le lien entre </span><br><span style="font-weight:400;font-style:normal">la texture et la géométrie correspondante.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-avj4"></td> + <td class="tg-avj4"></td> + </tr> + <tr> + <td class="tg-0pn5">StartFragmentOrientation surfacique invalideEndFragment</td> + <td class="tg-o6tx">StartFragment<span style="font-weight:400;font-style:normal">Les surfaces telles que </span><br><span style="font-weight:400;font-style:normal">les polygones, ellipses et polygones troués ont une orientation. Cette </span><br><span style="font-weight:400;font-style:normal">orientation peut suivre la règle de la main droite, de la main gauche ou</span><br><span style="font-weight:400;font-style:normal"> être invalide. Une orientation de type règle de main gauche signifie </span><br><span style="font-weight:400;font-style:normal">qu'une limite extérieure a ses vertex ordonnés dans le sens inverse des </span><br><span style="font-weight:400;font-style:normal">aiguilles d'une montre et les trous ont leurs vertex ordonnés dans le </span><br><span style="font-weight:400;font-style:normal">sens des aiguilles d'une montre. Avec une orientation de type règle de </span><br><span style="font-weight:400;font-style:normal">la main droite, la limite externe d'un polygone a ses vertex ordonnés </span><br><span style="font-weight:400;font-style:normal">dans le sens horaire, et les trous ont leurs vertex ordonnés dans le </span><br><span style="font-weight:400;font-style:normal">sens inverse. Un exemple de polygone invalide pourrait être un polygone </span><br><span style="font-weight:400;font-style:normal">troué dont les limites externes et les limites de trous orientées dans </span><br><span style="font-weight:400;font-style:normal">le même sens.</span><br><span style="font-weight:400;font-style:normal">EndFragment</span></td> + <td class="tg-o6tx">StartFragmentPOLYGON ((31 21,31 30,40 30,40 21,31 21),(35 25,35 27,36 27,36 25,35 25))EndFragment</td> + <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom11.png" width="400" height="300"></td> + </tr> +</table> Contraintes OGC @@ -402,215 +353,4 @@ Cas de figure de multi-lignes valides/invalides :  -Pour plus d’informations sur JTS : [http://www.vividsolutions.com/jts](http://www.vividsolutions.com/jts) - - - -<style type="text/css"> -.tg {border-collapse:collapse;border-spacing:0;} -.tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; - overflow:hidden;padding:10px 20px;word-break:normal;} -.tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; - font-weight:normal;overflow:hidden;padding:10px 20px;word-break:normal;} -.tg .tg-o6tx{background-color:#eae8e8;border-color:#d6d6d6;text-align:left;vertical-align:top} -.tg .tg-0pn5{background-color:#923288;border-color:#d6d6d6;color:#ffffff;text-align:left;vertical-align:top} -.tg .tg-avj4{border-color:#d6d6d6;text-align:left;vertical-align:top} -</style> -<table class="tg"> - <tr> - <th class="tg-0pn5">Critère de validation<br></th> - <th class="tg-0pn5">Définition<br></th> - <th class="tg-0pn5">Chaîne WKT<br></th> - <th class="tg-0pn5">Exemple de géométrie<br></th> - </tr> - <tr> - <td class="tg-0pn5">Géométries corrompues ou dégénérées<br></td> - <td class="tg-avj4">L<span style="font-weight:400;font-style:normal">es dégénérescences et corruptions vont être détectées. Une géométrie dégénérée est une géométrie dont le type de géométrie peut être simplifié. Un polygone avec une surface nulle, par exemple, est dégénéré, et peut être simplifié en une ligne, un point ou un IFMENull. Une géométrie corrompue, quant à elle, contient des éléments conflictuels dans la définition de sa géométrie (ex : un arc dont les angles et les points finals sont incohérents).</span><br></td> - <td class="tg-avj4"><span style="font-weight:normal">POLYGON ((15 35))</span><br></td> - <td class="tg-avj4">1111111111111</td> - </tr> - <tr> - <td class="tg-0pn5">Auto intersection<br></td> - <td class="tg-o6tx">L<span style="font-weight:400;font-style:normal">es points d’auto-intersection sont détectés.</span></td> - <td class="tg-o6tx"><span style="font-weight:normal">POLYGON ((0 11,0 20,10 20,10 11,0 11),(0 15,2 16,0 17,0 15)) </span></td> - <td class="tg-o6tx">22222222222</td> - </tr> - <tr> - <td class="tg-0pn5">Points consécutifs dupliqués en 3D<br></td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">La détection des entités dupliquées est réalisée en 3D.</span></td> - <td class="tg-avj4">LINESTRING Z (0 0 10,0 0 10,1 1 10,2 2 10)</td> - <td class="tg-avj4">33333333333</td> - </tr> - <tr> - <td class="tg-0pn5">Points consécutifs dupliqués en 2D<br></td> - <td class="tg-o6tx">L<span style="font-weight:400;font-style:normal">a détection des entités dupliquées est réalisée en 2D.</span></td> - <td class="tg-o6tx">LINESTRING (0 0,0 0,1 1,2 0)</td> - <td class="tg-o6tx">44444444<br></td> - </tr> - <tr> - <td class="tg-0pn5">Contient des valeurs NaN ou infinies<br></td> - <td class="tg-avj4">L<span style="font-weight:400;font-style:normal">es NaN (Not a Number) et les valeurs infinies vont être détectées.</span></td> - <td class="tg-avj4">POINT (0 nan)</td> - <td class="tg-avj4">5555555</td> - </tr> - <tr> - <td class="tg-0pn5">Contient des parties de géométries nulles<br></td> - <td class="tg-o6tx">L<span style="font-weight:400;font-style:normal">es IFMENull vont être détectés. Noter qu’un IFMENull n’est considéré comme une « partie » que s’il provient d’un agrégat. Seuls les IFMNull enfants de certains agrégats sont considérés comme des « parties ».</span></td> - <td class="tg-o6tx">GEOMETRYCOLLECTION (POLYGON ((0 0,1 0,1 1,0 1,0 0)),POLYGON ((3 0,4 0,4 4,3 4,0 4,3 0)),GEOMETRYCOLLECTION EMPTY)</td> - <td class="tg-o6tx">666666666</td> - </tr> - <tr> - <td class="tg-0pn5">Vertex "normaux" manquants</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">Les vertex sans normale et les coordonnées de texture manquantes sont détectés (un vertex est rapporté par géométrie).</span><br></td> - <td class="tg-avj4"><span style="font-weight:normal">MULTILINESTRING Z ((1 5 0,1 5 0),(1 5 0,2 3 4),(2 3 4,1 5 0))</span></td> - <td class="tg-avj4">77777777</td> - </tr> - <tr> - <td class="tg-0pn5">Surface non plane</td> - <td class="tg-o6tx"><br><span style="font-weight:400;font-style:normal">Les faces et parties de surfaces non planes, comme par exemple des parties de mailles ou des parties de surfaces composées, vont être détectées. Une face ou une partie de surface non planaire n’a pas tous les vertex dans le même plan de l’espace.</span></td> - <td class="tg-o6tx"></td> - <td class="tg-o6tx">8888888</td> - </tr> - <tr> - <td class="tg-0pn5">Limites de solides invalides</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">Les types d’anomalies suivants peuvent être détectés :</span><br><span style="font-weight:400;font-style:normal">- vertex non utilisés</span>,<br><span style="font-weight:400;font-style:normal">- pas assez de faces</span>,<br><span style="font-weight:400;font-style:normal">- mauvaise orientation de face</span>,<br><span style="font-weight:400;font-style:normal">- géométrie 2-Manifold invalide</span>,<br><span style="font-weight:400;font-style:normal">- surface auto-intersectée</span>,<br><span style="font-weight:400;font-style:normal">- surface non fermée</span>,<br><span style="font-weight:400;font-style:normal">- mauvaise orientation de surface</span>,<br><span style="font-weight:400;font-style:normal">- plusieurs composants connectés</span>.</td> - <td class="tg-avj4">MULTILINESTRING Z ((0 0 0,10 0 0),(10 0 0,10 0 10),(10 0 10,0 0 10),(0 0<br> 10,0 0 0),(10 0 0,10 10 0),(10 10 0,10 10 10),(10 10 10,10 0 10),(10 0 <br>10,10 0 0),(0 0 0,0 10 0),(0 10 0,10 10 0),(10 10 0,10 0 0),(10 0 0,0 0 <br>0),(0 0 0,0 0 10),(0 0 10,0 10 10),(0 10 10,0 10 0),(0 10 0,0 0 0),(0 0 <br>10,10 0 10),(10 0 10,10 10 10),(10 10 10,0 10 10),(0 10 10,0 0 10),(0 10<br> 0,0 10 10),(0 10 10,10 10 10),(10 10 10,10 10 0),(10 10 0,0 10 0),(2 2 <br>2,2 2 5),(2 2 5,5 2 5),(5 2 5,5 2 2),(5 2 2,2 2 2),(2 2 2,5 2 2),(5 2 <br>2,5 5 2),(5 5 2,2 5 2),(2 5 2,2 2 2),(5 2 2,5 2 5),(5 2 5,5 5 5),(5 5 <br>5,5 5 2),(5 5 2,5 2 2),(2 2 2,2 5 2),(2 5 2,2 5 5),(2 5 5,2 2 5),(2 2 <br>5,2 2 2),(2 2 5,2 5 5),(2 5 5,5 5 5),(5 5 5,5 2 5),(5 2 5,2 2 5),(2 5 <br>2,5 5 2),(5 5 2,5 5 5),(5 5 5,2 5 5),(2 5 5,2 5 2),(5 5 5,5 7 5),(5 7 <br>5,5 7 7),(5 7 7,5 5 7),(5 5 7,5 5 5),(5 5 5,7 5 5),(7 5 5,7 7 5),(7 7 <br>5,5 7 5),(5 7 5,5 5 5),(5 5 5,5 5 7),(5 5 7,7 5 7),(7 5 7,7 5 5),(7 5 <br>5,5 5 5),(5 5 7,5 7 7),(5 7 7,7 7 7),(7 7 7,7 5 7),(7 5 7,5 5 7),(5 7 <br>5,7 7 5),(7 7 5,7 7 7),(7 7 7,5 7 7),(5 7 7,5 7 5),(7 5 5,7 5 7),(7 5 <br>7,7 7 7),(7 7 7,7 7 5),(7 7 5,7 5 5))</td> - <td class="tg-avj4">9999999999</td> - </tr> - <tr> - <td class="tg-0pn5">Vides de solides invalides</td> - <td class="tg-o6tx"><span style="font-weight:400;font-style:normal">Un vide est une cavité, ou une région vide à l’intérieur d’un solide et est définie par sa bordure interne. Un solide est défini par sa bordure externe et une ou plusieurs bordures internes.</span><br><span style="font-weight:400;font-style:normal">Les types d’anomalies suivants peuvent être détectés :</span><br><span style="font-weight:400;font-style:normal">- dupliquer les enveloppes</span>,<br><span style="font-weight:400;font-style:normal">- intersection des enveloppes</span>,<br><span style="font-weight:400;font-style:normal">- coquille interne à l’extérieur de coquille externe,</span><br><span style="font-weight:400;font-style:normal">- intérieur de coquille non connecté,</span><br><span style="font-weight:400;font-style:normal">- bordures de solide invalides</span>.<br></td> - <td class="tg-o6tx"></td> - <td class="tg-o6tx">10</td> - </tr> - <tr> - <td class="tg-0pn5">Toutes les erreurs OGC simples</td> - <td class="tg-avj4">La contrainte OGC simple regroupe les trois contraintes :<br>- auto Intersection,<br>- point répété,<br>- géométrie corrompue.</td> - <td class="tg-avj4"></td> - <td class="tg-avj4">11</td> - </tr> - <tr> - <td class="tg-0pn5">Toutes les erreurs OGC valides</td> - <td class="tg-o6tx"><br>La contrainte OGC valide regroupes les contraintes :<br>- trou à l’extérieur,<br>- trous imbriqués,<br>- intérieur déconnecté,<br>- anneau auto intersecté,<br>- enveloppes complémentaires,<br>- anneaux dupliqués,<br>- pas assez de points,<br>- coordonnée invalide,<br>- anneau non fermé,<br>- géométrie corrompue.</td> - <td class="tg-o6tx"></td> - <td class="tg-o6tx">12</td> - </tr> - <tr> - <td class="tg-0pn5">Coordonnées de texture manquantes</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">Certaines géométries, comme les mailles et les faces, supportent les apparences. Ces géométries peuvent être incluses dans des surfaces complexes ou de solides. Parfois, les apparences ont des textures associées, en raster. Si c’est le cas, il est nécessaire que les géométries correspondantes disposent des coordonnées de texture. Sans celles-ci, il ne sera par exemple pas possible, lors de la visualisation, de faire le lien entre la texture et la géométrie correspondante.</span></td> - <td class="tg-avj4"></td> - <td class="tg-avj4">13</td> - </tr> - <tr> - <td class="tg-0pn5">Orientation surfacique invalide</td> - <td class="tg-o6tx"><span style="font-weight:400;font-style:normal">Les surfaces telles que les polygones, ellipses et polygones troués ont une orientation. Cette orientation peut suivre la règle de la main droite, de la main gauche ou être invalide. Une orientation de type règle de main gauche signifie qu'une limite extérieure a ses vertex ordonnés dans le sens inverse des aiguilles d'une montre et les trous ont leurs vertex ordonnés dans le sens des aiguilles d'une montre. Avec une orientation de type règle de la main droite, la limite externe d'un polygone a ses vertex ordonnés dans le sens horaire, et les trous ont leurs vertex ordonnés dans le sens inverse. Un exemple de polygone invalide pourrait être un polygone troué dont les limites externes et les limites de trous orientées dans le même sens.</span></td> - <td class="tg-o6tx">POLYGON ((31 21,31 30,40 30,40 21,31 21),(35 25,35 27,36 27,36 25,35 25))</td> - <td class="tg-o6tx">14</td> - </tr> -</table> - - - - -<style type="text/css"> -.tg {border-collapse:collapse;border-spacing:0;} -.tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; - overflow:hidden;padding:10px 5px;word-break:normal;} -.tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; - font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} -.tg .tg-o6tx{background-color:#eae8e8;border-color:#d6d6d6;text-align:left;vertical-align:top} -.tg .tg-0pn5{background-color:#923288;border-color:#d6d6d6;color:#ffffff;text-align:left;vertical-align:top} -.tg .tg-avj4{border-color:#d6d6d6;text-align:left;vertical-align:top} -</style> -<table class="tg"> - <tr> - <th class="tg-0pn5">Critère de validation</th> - <th class="tg-0pn5">Définition</th> - <th class="tg-0pn5">Chaîne WKT</th> - <th class="tg-0pn5">Exemple de géométrie</th> - </tr> - <tr> - <td class="tg-0pn5">Géométries corrompues ou dégénérées</td> - <td class="tg-avj4">L<span style="font-weight:400;font-style:normal">es dégénérescences et </span><br><span style="font-weight:400;font-style:normal">corruptions vont être détectées. Une géométrie dégénérée est une </span><br><span style="font-weight:400;font-style:normal">géométrie dont le type de géométrie peut être simplifié. Un polygone </span><br><span style="font-weight:400;font-style:normal">avec une surface nulle, par exemple, est dégénéré, et peut être </span><br><span style="font-weight:400;font-style:normal">simplifié en une ligne, un point ou un IFMENull. Une géométrie </span><br><span style="font-weight:400;font-style:normal">corrompue, quant à elle, contient des éléments conflictuels dans la </span><br><span style="font-weight:400;font-style:normal">définition de sa géométrie (ex : un arc dont les angles et les points </span><br><span style="font-weight:400;font-style:normal">finals sont incohérents).</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-avj4"><span style="font-weight:normal;color:rgb(146, 50, 136)">POLYGON ((15 35))</span><br><span style="font-weight:normal"></span></td> - <td class="tg-avj4"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom1.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Auto intersection</td> - <td class="tg-o6tx">L<span style="font-weight:400;font-style:normal">es points d’auto-intersection sont détectés.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-o6tx"><span style="font-weight:normal">POLYGON ((0 11,0 20,10 20,10 11,0 11),(0 15,2 16,0 17,0 15)) </span><br><span style="font-weight:normal"></span></td> - <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom2.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Points consécutifs dupliqués en 3D</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">La détection des entités dupliquées est réalisée en 3D.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-avj4">LINESTRING Z (0 0 10,0 0 10,1 1 10,2 2 10)</td> - <td class="tg-avj4"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom3_4.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Points consécutifs dupliqués en 2D</td> - <td class="tg-o6tx">L<span style="font-weight:400;font-style:normal">a détection des entités dupliquées est réalisée en 2D.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-o6tx">LINESTRING (0 0,0 0,1 1,2 0)</td> - <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom3_4.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Contient des valeurs NaN ou infinies</td> - <td class="tg-avj4">L<span style="font-weight:400;font-style:normal">es NaN (Not a Number) et les valeurs infinies vont être détectées.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-avj4">POINT (0 nan)</td> - <td class="tg-avj4"></td> - </tr> - <tr> - <td class="tg-0pn5">Contient des parties de géométries nulles</td> - <td class="tg-o6tx">L<span style="font-weight:400;font-style:normal">es IFMENull vont être </span><br><span style="font-weight:400;font-style:normal">détectés. Noter qu’un IFMENull n’est considéré comme une « partie » que </span><br><span style="font-weight:400;font-style:normal">s’il provient d’un agrégat. Seuls les IFMNull enfants de certains </span><br><span style="font-weight:400;font-style:normal">agrégats sont considérés comme des « parties ».</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-o6tx">GEOMETRYCOLLECTION (POLYGON ((0 0,1 0,1 1,0 1,0 0)),POLYGON ((3 0,4 0,4 4,3 4,0 4,3 0)),GEOMETRYCOLLECTION EMPTY)</td> - <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom6.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Vertex "normaux" manquants</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">Les vertex sans normale et les coordonnées de texture manquantes sont détectés (un vertex est rapporté par géométrie).</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-avj4"><span style="font-weight:normal">MULTILINESTRING Z ((1 5 0,1 5 0),(1 5 0,2 3 4),(2 3 4,1 5 0))</span><br><span style="font-weight:normal"></span></td> - <td class="tg-avj4"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom7.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Surface non plane</td> - <td class="tg-o6tx"><span style="font-weight:400;font-style:normal">Les faces et parties de </span><br><span style="font-weight:400;font-style:normal">surfaces non planes, comme par exemple des parties de mailles ou des </span><br><span style="font-weight:400;font-style:normal">parties de surfaces composées, vont être détectées. Une face ou une </span><br><span style="font-weight:400;font-style:normal">partie de surface non planaire n’a pas tous les vertex dans le même plan</span><br><span style="font-weight:400;font-style:normal"> de l’espace.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-o6tx"></td> - <td class="tg-o6tx"></td> - </tr> - <tr> - <td class="tg-0pn5">Limites de solides invalides</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">Les types d’anomalies suivants peuvent être détectés :</span><br><br><span style="font-weight:400;font-style:normal">- vertex non utilisés</span><br>,<br><span style="font-weight:400;font-style:normal">- pas assez de faces</span><br>,<br><span style="font-weight:400;font-style:normal">- mauvaise orientation de face</span><br>,<br><span style="font-weight:400;font-style:normal">- géométrie 2-Manifold invalide</span><br>,<br><span style="font-weight:400;font-style:normal">- surface auto-intersectée</span><br>,<br><span style="font-weight:400;font-style:normal">- surface non fermée</span><br>,<br><span style="font-weight:400;font-style:normal">- mauvaise orientation de surface</span><br>,<br><span style="font-weight:400;font-style:normal">- plusieurs composants connectés</span><br>.</td> - <td class="tg-avj4"></td> - <td class="tg-avj4"></td> - </tr> - <tr> - <td class="tg-0pn5">Vides de solides invalides</td> - <td class="tg-o6tx"><span style="font-weight:400;font-style:normal">Un vide est une cavité, </span><br><span style="font-weight:400;font-style:normal">ou une région vide à l’intérieur d’un solide et est définie par sa </span><br><span style="font-weight:400;font-style:normal">bordure interne. Un solide est défini par sa bordure externe et une ou </span><br><span style="font-weight:400;font-style:normal">plusieurs bordures internes.</span><br><br><span style="font-weight:400;font-style:normal">Les types d’anomalies suivants peuvent être détectés :</span><br><br><span style="font-weight:400;font-style:normal">- dupliquer les enveloppes</span><br>,<br><span style="font-weight:400;font-style:normal">- intersection des enveloppes</span><br>,<br><span style="font-weight:400;font-style:normal">- coquille interne à l’extérieur de coquille externe,</span><br><br><span style="font-weight:400;font-style:normal">- intérieur de coquille non connecté,</span><br><br><span style="font-weight:400;font-style:normal">- bordures de solide invalides</span><br>.</td> - <td class="tg-o6tx"><span style="font-weight:normal">MULTILINESTRING Z ((0 0 0,10 0 0),(10 0 0,10 0 10),(10 0 10,0 0 10),(0 0 10,0 0 </span><br><span style="font-weight:normal">0),(10 0 0,10 10 0),(10 10 0,10 10 10),(10 10 10,10 0 10),(10 0 10,10 0 0),(0 0 </span><br><span style="font-weight:normal">0,0 10 0),(0 10 0,10 10 0),(10 10 0,10 0 0),(10 0 0,0 0 0),(0 0 0,0 0 10),(0 0 </span><br><span style="font-weight:normal">10,0 10 10),(0 10 10,0 10 0),(0 10 0,0 0 0),(0 0 10,10 0 10),(10 0 10,10 10 </span><br><span style="font-weight:normal">10),(10 10 10,0 10 10),(0 10 10,0 0 10),(0 10 0,0 10 10),(0 10 10,10 10 10),(10 </span><br><span style="font-weight:normal">10 10,10 10 0),(10 10 0,0 10 0),(2 2 2,2 2 5),(2 2 5,5 2 5),(5 2 5,5 2 2),(5 2 </span><br><span style="font-weight:normal">2,2 2 2),(2 2 2,5 2 2),(5 2 2,5 5 2),(5 5 2,2 5 2),(2 5 2,2 2 2),(5 2 2,5 2 </span><br><span style="font-weight:normal">5),(5 2 5,5 5 5),(5 5 5,5 5 2),(5 5 2,5 2 2),(2 2 2,2 5 2),(2 5 2,2 5 5),(2 5 </span><br><span style="font-weight:normal">5,2 2 5),(2 2 5,2 2 2),(2 2 5,2 5 5),(2 5 5,5 5 5),(5 5 5,5 2 5),(5 2 5,2 2 </span><br><span style="font-weight:normal">5),(2 5 2,5 5 2),(5 5 2,5 5 5),(5 5 5,2 5 5),(2 5 5,2 5 2),(5 5 5,5 7 5),(5 7 </span><br><span style="font-weight:normal">5,5 7 7),(5 7 7,5 5 7),(5 5 7,5 5 5),(5 5 5,7 5 5),(7 5 5,7 7 5),(7 7 5,5 7 </span><br><span style="font-weight:normal">5),(5 7 5,5 5 5),(5 5 5,5 5 7),(5 5 7,7 5 7),(7 5 7,7 5 5),(7 5 5,5 5 5),(5 5 </span><br><span style="font-weight:normal">7,5 7 7),(5 7 7,7 7 7),(7 7 7,7 5 7),(7 5 7,5 5 7),(5 7 5,7 7 5),(7 7 5,7 7 </span><br><span style="font-weight:normal">7),(7 7 7,5 7 7),(5 7 7,5 7 5),(7 5 5,7 5 7),(7 5 7,7 7 7),(7 7 7,7 7 5),(7 7 </span><br><span style="font-weight:normal">5,7 5 5))</span></td> - <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom10.png" width="400" height="300"></td> - </tr> - <tr> - <td class="tg-0pn5">Toutes les erreurs OGC simples</td> - <td class="tg-avj4">La contrainte OGC simple regroupe les trois contraintes :<br>- auto Intersection,<br>- point répété,<br>- géométrie corrompue.</td> - <td class="tg-avj4"></td> - <td class="tg-avj4"></td> - </tr> - <tr> - <td class="tg-0pn5">Toutes les erreurs OGC valides</td> - <td class="tg-o6tx">La contrainte OGC valide regroupes les contraintes :<br>- trou à l’extérieur,<br>- trous imbriqués,<br>- intérieur déconnecté,<br>- anneau auto intersecté,<br>- enveloppes complémentaires,<br>- anneaux dupliqués,<br>- pas assez de points,<br>- coordonnée invalide,<br>- anneau non fermé,<br>- géométrie corrompue.</td> - <td class="tg-o6tx"></td> - <td class="tg-o6tx"></td> - </tr> - <tr> - <td class="tg-0pn5">Coordonnées de texture manquantes</td> - <td class="tg-avj4"><span style="font-weight:400;font-style:normal">Certaines géométries, </span><br><span style="font-weight:400;font-style:normal">comme les mailles et les faces, supportent les apparences. Ces </span><br><span style="font-weight:400;font-style:normal">géométries peuvent être incluses dans des surfaces complexes ou de </span><br><span style="font-weight:400;font-style:normal">solides. Parfois, les apparences ont des textures associées, en raster. </span><br><span style="font-weight:400;font-style:normal">Si c’est le cas, il est nécessaire que les géométries correspondantes </span><br><span style="font-weight:400;font-style:normal">disposent des coordonnées de texture. Sans celles-ci, il ne sera par </span><br><span style="font-weight:400;font-style:normal">exemple pas possible, lors de la visualisation, de faire le lien entre </span><br><span style="font-weight:400;font-style:normal">la texture et la géométrie correspondante.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-avj4"></td> - <td class="tg-avj4"></td> - </tr> - <tr> - <td class="tg-0pn5">Orientation surfacique invalide</td> - <td class="tg-o6tx"><span style="font-weight:400;font-style:normal">Les surfaces telles que </span><br><span style="font-weight:400;font-style:normal">les polygones, ellipses et polygones troués ont une orientation. Cette </span><br><span style="font-weight:400;font-style:normal">orientation peut suivre la règle de la main droite, de la main gauche ou</span><br><span style="font-weight:400;font-style:normal"> être invalide. Une orientation de type règle de main gauche signifie </span><br><span style="font-weight:400;font-style:normal">qu'une limite extérieure a ses vertex ordonnés dans le sens inverse des </span><br><span style="font-weight:400;font-style:normal">aiguilles d'une montre et les trous ont leurs vertex ordonnés dans le </span><br><span style="font-weight:400;font-style:normal">sens des aiguilles d'une montre. Avec une orientation de type règle de </span><br><span style="font-weight:400;font-style:normal">la main droite, la limite externe d'un polygone a ses vertex ordonnés </span><br><span style="font-weight:400;font-style:normal">dans le sens horaire, et les trous ont leurs vertex ordonnés dans le </span><br><span style="font-weight:400;font-style:normal">sens inverse. Un exemple de polygone invalide pourrait être un polygone </span><br><span style="font-weight:400;font-style:normal">troué dont les limites externes et les limites de trous orientées dans </span><br><span style="font-weight:400;font-style:normal">le même sens.</span><br><span style="font-weight:400;font-style:normal"></span></td> - <td class="tg-o6tx">POLYGON ((31 21,31 30,40 30,40 21,31 21),(35 25,35 27,36 27,36 25,35 25))</td> - <td class="tg-o6tx"><img src="https://gitlab.veremes.net/Documentation/doc_qualigeo/raw/5a57cfe99d6f5297fc2db7e2ae34790440f9ad59/Ressources/Images/geom11.png" width="400" height="300"></td> - </tr> -</table> \ No newline at end of file +Pour plus d’informations sur JTS : [http://www.vividsolutions.com/jts](http://www.vividsolutions.com/jts) \ No newline at end of file