From d882f5d405e4d747281bff8cc6cb7643d546e98e Mon Sep 17 00:00:00 2001 From: Romain <romain.bomme@veremes.com> Date: Mon, 20 Apr 2020 16:33:25 +0200 Subject: [PATCH] Apostrophes --- .../Bienvenue dans Qualig\303\251o.md" | 6 +- .../01.Connexion.md" | 10 +-- .../02.00.SchemaContraintes.md" | 10 +-- .../02.02.CreationSchemaDepuisJDD.md" | 14 ++-- .../03.01.DefinitionTypesEntites.md" | 34 ++++---- .../03.02.DefinitionContraintesAttributs.md" | 68 ++++++++-------- .../03.03.DefinitionContraintesUnicite.md" | 20 ++--- ...03.04.DefinitionContraintesSpecifiques.md" | 14 ++-- ...3.05.DefinitionContraintesTopologiques.md" | 22 ++--- ...03.06.DefinitionContrainteConstruction.md" | 8 +- .../04.DefinitionContraintesCardinalites.md" | 8 +- ...efinitionContraintesRelationsSpatiales.md" | 6 +- ...06.DefinitionContraintesSpecifiquesJDD.md" | 6 +- .../07.DefinitionContraintesCode.md" | 8 +- .../03.Analyser un contr\303\264le.md" | 58 ++++++------- .../04.ExecuterControle.md" | 22 ++--- .../01.TraitementsLigneCommande.md | 34 ++++---- .../01.Configuration.md | 8 +- .../02.InterfaceAdministration.md | 40 ++++----- .../01.ListeContraintes.md | 76 +++++++++--------- 04-ContraintesRessources/02.ListeErreurs.md | 56 ++++++------- .../03.02.TypeGeometrie.md | 2 +- .../03.03.ContraintesConstruction.md | 50 ++++++------ .../03.04.ValidationGeometrique.md | 10 +-- .../03.05.PrecisionTolerance.md | 20 ++--- .../03.06.MatriceRelationsSpatiales.md | 2 +- .../03.07.Contraintes_topologiques.md | 28 +++---- .../04.LangagesDefinition.md | 74 ++++++++--------- .../05.01.DefinirContraintesREGEX.md | 34 ++++---- 04-ContraintesRessources/05.02.FormatsDate.md | 24 +++--- .../05.03.EditerExpression.md | 4 +- .../05.04.CreationComptesRoles.md | 14 ++-- .../05.05.UtilisationFormatsPersonnalises.md | 42 +++++----- .../05.07.CreationConnexionODBC.md | 18 ++--- Ressources/Images/attribut.png | Bin 34495 -> 154764 bytes 35 files changed, 425 insertions(+), 425 deletions(-) diff --git "a/00-Bienvenue/Bienvenue dans Qualig\303\251o.md" "b/00-Bienvenue/Bienvenue dans Qualig\303\251o.md" index a00ba07..faa2ea3 100644 --- "a/00-Bienvenue/Bienvenue dans Qualig\303\251o.md" +++ "b/00-Bienvenue/Bienvenue dans Qualig\303\251o.md" @@ -2,7 +2,7 @@  -Qualigéo est un outil de contrôle de la qualité des données géographiques développé par Veremes. Il permet le contrôle de données et génère des rapports d’erreurs sur les analyses effectuées. +Qualigéo est un outil de contrôle de la qualité des données géographiques développé par Veremes. Il permet le contrôle de données et génère des rapports d’erreurs sur les analyses effectuées. ## Contrôler la qualité des données géographiques @@ -16,8 +16,8 @@ Qualigéo est capable de contrôler des jeux de données dans plus de 200 format ## Personnalisation des contraintes et des contrôles -L’utilisateur définit lui mêmes ses propres règles et contraintes et paramètre les contrôles en fonction. -Qualigéo offre ainsi une grande autonomie d’analyse des données. +L’utilisateur définit lui mêmes ses propres règles et contraintes et paramètre les contrôles en fonction. +Qualigéo offre ainsi une grande autonomie d’analyse des données. ## Des traitements FME diff --git "a/01-Utilisation de Qualig\303\251o/01.Connexion.md" "b/01-Utilisation de Qualig\303\251o/01.Connexion.md" index c4b36e5..8a66483 100644 --- "a/01-Utilisation de Qualig\303\251o/01.Connexion.md" +++ "b/01-Utilisation de Qualig\303\251o/01.Connexion.md" @@ -1,15 +1,15 @@ # Connexion à Qualigéo Designer -Au lancement de l’application, l’interface de connexion s’affiche. +Au lancement de l’application, l’interface de connexion s’affiche.  -Indiquer la **Base de données** à utiliser ainsi que l’**Utilisateur** et le **Mot de passe** nécessaires à la connexion. +Indiquer la **Base de données** à utiliser ainsi que l’**Utilisateur** et le **Mot de passe** nécessaires à la connexion. -L’option **Mémoriser les informations** permet d’enregistrer les informations préalablement saisies. +L’option **Mémoriser les informations** permet d’enregistrer les informations préalablement saisies. -Il est possible dL’établir une nouvelle base de données en cliquant sur **Créer une nouvelle base**. Attention, cette option est disponible uniquement si lL’utilisateur est connecté en tant quL’administrateur. +Il est possible dL’établir une nouvelle base de données en cliquant sur **Créer une nouvelle base**. Attention, cette option est disponible uniquement si lL’utilisateur est connecté en tant quL’administrateur. -Le bouton **Connexion** permet à l’utilisateur de se connecter et d’accéder ainsi à l’interface principale de l'application. +Le bouton **Connexion** permet à l’utilisateur de se connecter et d’accéder ainsi à l’interface principale de l’application.  diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.00.SchemaContraintes.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.00.SchemaContraintes.md" index ba5a957..9074b9d 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.00.SchemaContraintes.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.00.SchemaContraintes.md" @@ -1,15 +1,15 @@ # Schémas de contraintes -## Modes d’affichage des types d’entités +## Modes d’affichage des types d’entités -Deux modes d’affichages des types d’entités sont disponibles : +Deux modes d’affichages des types d’entités sont disponibles : -* Dans la fenêtre de gauche, les types d’entités sont affichés de manière arborescente. Les contraintes sont organisées par nœud. Les contraintes sont accessible en déployant chaque nœud composant un type d’entités. +* Dans la fenêtre de gauche, les types d’entités sont affichés de manière arborescente. Les contraintes sont organisées par nœud. Les contraintes sont accessible en déployant chaque nœud composant un type d’entités.  -* Dans la fenêtre de droite, les types d’entités et leurs contraintes sont affichés sous forme tabulaire. Les contraintes sont organisées par onglet. +* Dans la fenêtre de droite, les types d’entités et leurs contraintes sont affichés sous forme tabulaire. Les contraintes sont organisées par onglet.  -La saisie d’une contrainte dans un mode est automatiquement reportée dans l’autre mode d’affichage. \ No newline at end of file +La saisie d’une contrainte dans un mode est automatiquement reportée dans l’autre mode d’affichage. \ No newline at end of file diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.02.CreationSchemaDepuisJDD.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.02.CreationSchemaDepuisJDD.md" index b5b6d3c..50cd7bb 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.02.CreationSchemaDepuisJDD.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/02.02.CreationSchemaDepuisJDD.md" @@ -1,8 +1,8 @@ -## Création d’un schéma à partir d’un jeu de données +## Création d’un schéma à partir d’un jeu de données -Un jeu de données peut être importé dans Qualigéo comme référence pour constituer un schéma de contraintes. Son modèle de données, ses types d’entités, ses attributs et sa géométrie constituent les contraintes du schéma à créer. +Un jeu de données peut être importé dans Qualigéo comme référence pour constituer un schéma de contraintes. Son modèle de données, ses types d’entités, ses attributs et sa géométrie constituent les contraintes du schéma à créer. -Le menu contextuel du nœud Schémas permet d’accéder à cette fonctionnalité. +Le menu contextuel du nœud Schémas permet d’accéder à cette fonctionnalité. Saisir le nom du schéma à créer puis indiquer le jeu de données à partir duquel les contraintes seront implémentées. @@ -18,13 +18,13 @@ Trois types de formats de jeux de données peuvent être différenciés :  -Il est possible de créer le schéma soit à partir d’un fichier unique soit à partir de plusieurs fichiers. +Il est possible de créer le schéma soit à partir d’un fichier unique soit à partir de plusieurs fichiers. ### Base de données  -Pour créer un schéma à partir d’un type base de données, définir le serveur, le port, la base de données ainsi que l’utilisateur et mot de passe qui doit se connecter. +Pour créer un schéma à partir d’un type base de données, définir le serveur, le port, la base de données ainsi que l’utilisateur et mot de passe qui doit se connecter.  Les noms des tables et vues à importer depuis une base de données PostgreSQL doivent être préfixés par le nom du schéma auxquels elles appartiennent. @@ -34,13 +34,13 @@ Pour les base de données de type Oracle, le serveur et le port ne sont pas à d  -Pour la création d’un schéma à partir d’un type répertoire, il suffit de définir le répertoire où se trouve les données. +Pour la création d’un schéma à partir d’un type répertoire, il suffit de définir le répertoire où se trouve les données. Cliquer sur le bouton **Importer** pour créer le schéma. ### Import de fichier au format AutoCAD -L’option d’import de schéma via un fichier Autocad permet d’importer les attributs de format Autocad. Sans cette option, seuls les calques sans attributs sont importés. +L’option d’import de schéma via un fichier Autocad permet d’importer les attributs de format Autocad. Sans cette option, seuls les calques sans attributs sont importés. Cette option permet un contrôle attributaire des calques AutoCAD. diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.md" index 07d82a8..d9d248e 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.md" @@ -1,38 +1,38 @@ -## Définition des types d’entités +## Définition des types d’entités -### Création de type d’entités dans l’arbre +### Création de type d’entités dans l’arbre -En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. +En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. -**Ajouter un type d’entité** permet de créer un nouveau type d’entité (un calque DWG ou un fichier Shapefile par exemple). +**Ajouter un type d’entité** permet de créer un nouveau type d’entité (un calque DWG ou un fichier Shapefile par exemple).  -**Activer tous les types d’entités** et **Désactiver tous les types d’entités** permettent respectivement d'activer et de désactiver la vérification de tous les types d’entités lors d’un contrôle. L'activation ou la désactivation d'un type d'entité peut également se faire individuellement : clic-droit sur le nom du type d'entié, puis **Activer** ou **Désactiver**. +**Activer tous les types d’entités** et **Désactiver tous les types d’entités** permettent respectivement d’activer et de désactiver la vérification de tous les types d’entités lors d’un contrôle. L’activation ou la désactivation d’un type d’entité peut également se faire individuellement : clic-droit sur le nom du type d’entié, puis **Activer** ou **Désactiver**. -La fonction **Dupliquer un type d’entité** (clic-droit sur le type d'entité) permet de dupliquer le type d'entité avec l'ensemble de ses contraintes dans n'importe quel schéma. +La fonction **Dupliquer un type d’entité** (clic-droit sur le type d’entité) permet de dupliquer le type d’entité avec l’ensemble de ses contraintes dans n’importe quel schéma.  - L'affichage des contraintes de façon tabulaire, permet de faciliter l'édition, le filtre, la suppresion et la copie de contraintes. + L’affichage des contraintes de façon tabulaire, permet de faciliter l’édition, le filtre, la suppresion et la copie de contraintes. -### Formulaire de création d’un type d’entité +### Formulaire de création d’un type d’entité -En sélectionnant dans le menu contextuel **Ajouter un type d’entité**, le formulaire de création d’un type d’entité s’affiche. Il est nommé **Caractéristiques du type d’entité** et permet à l’utilisateur de créer les types d’entités du schéma de contraintes en spécifiant leurs contraintes. +En sélectionnant dans le menu contextuel **Ajouter un type d’entité**, le formulaire de création d’un type d’entité s’affiche. Il est nommé **Caractéristiques du type d’entité** et permet à l’utilisateur de créer les types d’entités du schéma de contraintes en spécifiant leurs contraintes.  -La case à cocher **Actif** permet d’activer / désactiver un type d’entité lors du contrôle. Désactivé, les erreurs sur le type d'entité seront alors ignorées dans l’analyse. +La case à cocher **Actif** permet d’activer / désactiver un type d’entité lors du contrôle. Désactivé, les erreurs sur le type d’entité seront alors ignorées dans l’analyse. ### Existence -La case **Existence** permet de définir si un type d’entités est obligatoire ou non. +La case **Existence** permet de définir si un type d’entités est obligatoire ou non. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0005 (Type d’entité obligatoire absent)</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0005 (Type d’entité obligatoire absent)</span> ### Type de géométrie et interprétation de la géométrie. -Les groupements **Type de géométrie** et **Interprétation de la géométrie** sont à distinguer : le type de géométrie correspond à la géométrie même de l’entité alors que l’interprétation géométrique permet de définir la manière dont l’entité doit être interprétée. Prenons par exemple un type d'entité composé de polygones. Il est possible de vérifier l'interprétation de la géométrie "fme_area" des objets le composant. Afin d'affiner le contrôle, le type de la géométrie va permettre de distinguer les types de polygones : "fme_polygon" (polygone simple), "fme_donut" (polygone à trou(s)) et "fme_aggregate" (multi-polygones). +Les groupements **Type de géométrie** et **Interprétation de la géométrie** sont à distinguer : le type de géométrie correspond à la géométrie même de l’entité alors que l’interprétation géométrique permet de définir la manière dont l’entité doit être interprétée. Prenons par exemple un type d’entité composé de polygones. Il est possible de vérifier l’interprétation de la géométrie "fme_area" des objets le composant. Afin d’affiner le contrôle, le type de la géométrie va permettre de distinguer les types de polygones : "fme_polygon" (polygone simple), "fme_donut" (polygone à trou(s)) et "fme_aggregate" (multi-polygones). <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0002 (Géométrie non conforme (interprétation de la géométrie).)</span> <a name="E0041E0042"></a> @@ -40,15 +40,15 @@ Les groupements **Type de géométrie** et **Interprétation de la géométrie** <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0038 (Géométrie non conforme (type de géométrie).)</span> <a name="E0041E0042"></a> -Lors de contrôles des relations spatiales entre types d’entités, si un type d’entités a une géométrie non conforme aux normes OGC, alors deux erreurs peuvent être générées. +Lors de contrôles des relations spatiales entre types d’entités, si un type d’entités a une géométrie non conforme aux normes OGC, alors deux erreurs peuvent être générées. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0041 et E0042 (Relation spatiale impossible, géométrie non conforme) et (Problème de relation spatiale, géométrie de l’entité liée non conforme).</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0041 et E0042 (Relation spatiale impossible, géométrie non conforme) et (Problème de relation spatiale, géométrie de l’entité liée non conforme).</span> -[En savoir plus sur les types de géométrie et l’interprétation géométrique.](../../04-ContraintesRessources/03.02.TypeGeometrie.html) +[En savoir plus sur les types de géométrie et l’interprétation géométrique.](../../04-ContraintesRessources/03.02.TypeGeometrie.html) ### Validation de la géométrie -Le champ **Validation de la géométrie** permet de spécifier des contrôles géométiques sur les objets du type d'entité selon des critères spécifiques et/ou des normes de l’Open Geospatial Consortium. +Le champ **Validation de la géométrie** permet de spécifier des contrôles géométiques sur les objets du type d’entité selon des critères spécifiques et/ou des normes de l’Open Geospatial Consortium. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0018 à E0029</span> diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.md" index ba24054..320a966 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.md" @@ -1,53 +1,53 @@ ### Définition de contraintes sur les attributs -#### Définition d’un attribut dans l’arbre +#### Définition d’un attribut dans l’arbre -Le nœud Attribut contient tous les attributs d’un type d’entités. +Le nœud Attribut contient tous les attributs d’un type d’entités.  -La fonction **Ajouter un attribut** permet de créer un nouvel attribut. Lors du clic sur cet élément du menu, un nouvel attribut est ajouté à la liste et la fenêtre de création de l’attribut est affichée. +La fonction **Ajouter un attribut** permet de créer un nouvel attribut. Lors du clic sur cet élément du menu, un nouvel attribut est ajouté à la liste et la fenêtre de création de l’attribut est affichée. -**Activer tous les attributs** et **Désactiver tous les attributs** permettent respectivement d’activer et de désactiver la vérification de tous les attributs lors d’un contrôle. L'activation ou la désactivation de l'attribut peut être gérée individuellement au niveau de chaque attribut. +**Activer tous les attributs** et **Désactiver tous les attributs** permettent respectivement d’activer et de désactiver la vérification de tous les attributs lors d’un contrôle. L’activation ou la désactivation de l’attribut peut être gérée individuellement au niveau de chaque attribut. -##### Formulaire des caractéristiques de l’attribut +##### Formulaire des caractéristiques de l’attribut -Ce formulaire permet de définir les attributs du type d’entité à contrôler. Chaque attribut est associé à un type d’entité et à chacun correspondent des contraintes spécifiques. +Ce formulaire permet de définir les attributs du type d’entité à contrôler. Chaque attribut est associé à un type d’entité et à chacun correspondent des contraintes spécifiques.  ###### Valeur obligatoire -La case **Valeur obligatoire** permet de spécifier si la valeur de l’attribut est obligatoire ou optionnelle. +La case **Valeur obligatoire** permet de spécifier si la valeur de l’attribut est obligatoire ou optionnelle. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0009 (Violation de contrainte de non nullité)</span>. -###### Type d’attributs +###### Type d’attributs -Le champs **<a name="kanchor11"></a>Type** permet de vérifier le type de l’attribut : Alphanumérique (strict, c’est à dire les lettres de A à Z en majuscule ou minuscule et les chiffres), Numérique, ou Entier. +Le champs **<a name="kanchor11"></a>Type** permet de vérifier le type de l’attribut : Alphanumérique (strict, c’est à dire les lettres de A à Z en majuscule ou minuscule et les chiffres), Numérique, ou Entier. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0043 (Type d’attribut non conforme)</span>. +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0043 (Type d’attribut non conforme)</span>. -###### Longueur d’attribut +###### Longueur d’attribut -L'utilisateur peut définir la **longueur** maximale de la chaîne de caractère de l’attribut. +L’utilisateur peut définir la **longueur** maximale de la chaîne de caractère de l’attribut. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0007 (Taille de l’attribut trop grande)</span>. +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0007 (Taille de l’attribut trop grande)</span>. ###### Expression régulière -Le groupement **<a name="kanchor12"></a>Expression Régulière** permet de définir le motif d’une expression régulière (En savoir plus sur les [Expressions régulières](../../04-ContraintesRessources/05.01.DefinirContraintesREGEX.html) et obtenir des exemples). Le Designer peut soit saisir son expression, soit utiliser une expression prédéfinie dans la liste déroulante. Il peut également modifier la liste, en cliquant sur le bouton <big style="font-weight: bold;">+</big>. +Le groupement **<a name="kanchor12"></a>Expression Régulière** permet de définir le motif d’une expression régulière (En savoir plus sur les [Expressions régulières](../../04-ContraintesRessources/05.01.DefinirContraintesREGEX.html) et obtenir des exemples). Le Designer peut soit saisir son expression, soit utiliser une expression prédéfinie dans la liste déroulante. Il peut également modifier la liste, en cliquant sur le bouton <big style="font-weight: bold;">+</big>. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0012 (Valeur d’attribut hors expression régulière)</span>. +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0012 (Valeur d’attribut hors expression régulière)</span>. ###### Valeur numérique min et max -Les champs **Min** et **Max** permettent de définir les plages de valeurs de l’attribut. +Les champs **Min** et **Max** permettent de définir les plages de valeurs de l’attribut. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0039 (Valeur d’attribut inférieure au minimum)</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0039 (Valeur d’attribut inférieure au minimum)</span> -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0040 (Valeur d’attribut supérieure au maximum)</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0040 (Valeur d’attribut supérieure au maximum)</span> ###### Date @@ -57,33 +57,33 @@ Le groupement **Format de dates** permet de spécifier la structure du format so  -L'utilisateur peut saisir des constantes et insérer des directives dans la structure même de la date. Dans l’exemple ci-dessus, pour le format _Le ’jour de la semaine’ puis jj/mm/dd_, ’Le %a,%d/%m/%y’ retournera la date sous la forme : Le lundi, 20/04/20. +L’utilisateur peut saisir des constantes et insérer des directives dans la structure même de la date. Dans l’exemple ci-dessus, pour le format _Le ’jour de la semaine’ puis jj/mm/dd_, ’Le %a,%d/%m/%y’ retournera la date sous la forme : Le lundi, 20/04/20. [En savoir plus sur les directives Python de définition de date.](../../04-ContraintesRessources/05.02.FormatsDate.html) ##### Domaine de valeurs -Le **Domaine de valeurs** est un terme utilisé dans les SGBD pour indiquer une liste de valeurs autorisées pour une colonne particulière d’une table. +Le **Domaine de valeurs** est un terme utilisé dans les SGBD pour indiquer une liste de valeurs autorisées pour une colonne particulière d’une table. -L'utilisateur peut sélectionner le domaine de valeurs que peut prendre l’attribut. Les domaines sont directement éditables en cliquant sur le bouton <big style="font-weight: bold;">+</big>. La fenêtre d’édition de domaines s’affiche : +L’utilisateur peut sélectionner le domaine de valeurs que peut prendre l’attribut. Les domaines sont directement éditables en cliquant sur le bouton <big style="font-weight: bold;">+</big>. La fenêtre d’édition de domaines s’affiche :  -Nommer le domaine et définir les valeurs soit en entrant une expression régulière dans le champs Expression, soit en cliquant sur le bouton  qui ouvre la fenêtre d’édition des valeurs d’un domaine. +Nommer le domaine et définir les valeurs soit en entrant une expression régulière dans le champs Expression, soit en cliquant sur le bouton  qui ouvre la fenêtre d’édition des valeurs d’un domaine.   Des valeurs issues de fichiers externes peuvent être directement importées par copier/coller. Après avoir copier les valeurs à importer (dans un fichier Excel par exemple), se positionner sur la première cellule de la fenêtre des domaine puis cliquer sur Coller. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0010 (Valeur d’attribut hors domaine)</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0010 (Valeur d’attribut hors domaine)</span> -###### Contraintes spécifiques sur l’attribut +###### Contraintes spécifiques sur l’attribut -Le groupement **Contrainte spécifique sur l’attribut** permet de définir des contraintes plus complexes sur un attribut. +Le groupement **Contrainte spécifique sur l’attribut** permet de définir des contraintes plus complexes sur un attribut. -L’utilisateur peut choisir d'intégrer une contrainte défini dans le langage Python. Les fonctions permettent de vérifier la cohérence entre différents attributs. Par exemple, on peut vérifier : attribut A = 1 si attribut B = "Bois" et attribut A = 2 si attribut B = "Forêt". +L’utilisateur peut choisir d’intégrer une contrainte défini dans le langage Python. Les fonctions permettent de vérifier la cohérence entre différents attributs. Par exemple, on peut vérifier : attribut A = 1 si attribut B = "Bois" et attribut A = 2 si attribut B = "Forêt". -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0047 "Valeur d’attribut hors expression régulière décrite par code python"</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0047 "Valeur d’attribut hors expression régulière décrite par code python"</span> [En savoir plus sur les différents langages de définition de contraintes spécifiques](../../04-ContraintesRessources/04.LangagesDefinition.html). @@ -93,24 +93,24 @@ Plusieurs types de statistiques peuvent être générés concernant : * les données numériques, * les chaînes de caractères, * les domaines, -* les types d'entité. +* les types d’entité. -##### Menu contextuel d’un attribut +##### Menu contextuel d’un attribut  ###### Dupliquer -La fonction Dupliquer permet de copier un attribut dans un nouveau type d’entité du même schéma ou d’un autre. Après avoir sélectionné Dupliquer, indiquer le schéma et le type d’entité cible : +La fonction Dupliquer permet de copier un attribut dans un nouveau type d’entité du même schéma ou d’un autre. Après avoir sélectionné Dupliquer, indiquer le schéma et le type d’entité cible :  -#### Définition d’attribut dans la liste +#### Définition d’attribut dans la liste -En cliquant dans l’arbre sur le nœud Type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies. L’onglet Attributs de la liste permet d’afficher la liste de tous les attributs des types d’entités du schéma en cours. +En cliquant dans l’arbre sur le nœud Type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies. L’onglet Attributs de la liste permet d’afficher la liste de tous les attributs des types d’entités du schéma en cours.  -Les contraintes relatives aux attributs sont visibles d’un simple coup d’œil. +Les contraintes relatives aux attributs sont visibles d’un simple coup d’œil. -Depuis la liste, il est facilement possible d'éditer, de filtrer, de supprimer et de copier un attribut. +Depuis la liste, il est facilement possible d’éditer, de filtrer, de supprimer et de copier un attribut. diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.03.DefinitionContraintesUnicite.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.03.DefinitionContraintesUnicite.md" index 050928a..5ce51d9 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.03.DefinitionContraintesUnicite.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.03.DefinitionContraintesUnicite.md" @@ -1,25 +1,25 @@ -### Définition de contraintes d’unicités +### Définition de contraintes d’unicités -Une contrainte d’unicité garantit l’unicité des données contenues dans un attribut. Elle exige que toutes les valeurs d’un attribut soient uniques. +Une contrainte d’unicité garantit l’unicité des données contenues dans un attribut. Elle exige que toutes les valeurs d’un attribut soient uniques. -#### Définition de contrainte d’unicité dans l’arbre +#### Définition de contrainte d’unicité dans l’arbre -Le nœud contient toutes les contraintes d’unicités liées à un type d’entités. +Le nœud contient toutes les contraintes d’unicités liées à un type d’entités.  -La fonction **Ajouter une contrainte d’unicité** accessible via le menu contextuel permet de créer un nouvelle contrainte d’unicité. +La fonction **Ajouter une contrainte d’unicité** accessible via le menu contextuel permet de créer un nouvelle contrainte d’unicité. -L’interface **Caractéristique de la contrainte d’unicité** permet à l’utilisateur de spécifier l’unicité d’un ou plusieurs attributs concaténés . +L’interface **Caractéristique de la contrainte d’unicité** permet à l’utilisateur de spécifier l’unicité d’un ou plusieurs attributs concaténés .  -En cochant **<Clé primaire** l’utilisateur indique que cette unicité est la clé primaire du type d’entités. Cela signifie que le champ sera affiché dans la colonne "Entité" du listing d'erreurs de la rubrique Analyse afin de faciliter le lien entre la donnée en erreur et son homologue dans le jeu de données contrôlé. +En cochant **<Clé primaire** l’utilisateur indique que cette unicité est la clé primaire du type d’entités. Cela signifie que le champ sera affiché dans la colonne "Entité" du listing d’erreurs de la rubrique Analyse afin de faciliter le lien entre la donnée en erreur et son homologue dans le jeu de données contrôlé. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0008 (Violation de la contrainte d’unicité)</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0008 (Violation de la contrainte d’unicité)</span> -#### Définition de contrainte d’unicité dans la liste +#### Définition de contrainte d’unicité dans la liste -En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. L’onglet Unicité de la liste permet d’afficher la liste de tous les contraintes d’unicité des types d’entités du schéma en cours. +En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. L’onglet Unicité de la liste permet d’afficher la liste de tous les contraintes d’unicité des types d’entités du schéma en cours.  diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.md" index 619538a..7099266 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.md" @@ -1,24 +1,24 @@ -### Définition de contraintes spécifiques sur l’entité +### Définition de contraintes spécifiques sur l’entité -Les contraintes sur les entités correspondent à des fonctions d’évaluation de **FME** ou des fonctions **Python** visant à effectuer des calculs de valeurs sur un ou plusieurs attributs de type d’entité. La fonction retourne un booléen en fonction du résultat du calcul. +Les contraintes sur les entités correspondent à des fonctions d’évaluation de **FME** ou des fonctions **Python** visant à effectuer des calculs de valeurs sur un ou plusieurs attributs de type d’entité. La fonction retourne un booléen en fonction du résultat du calcul. -#### Définition de contraintes spécifiques sur l’entité dans l’arbre +#### Définition de contraintes spécifiques sur l’entité dans l’arbre Le nœud contient toutes les contraintes spécifiques spécifiées sur une entité. -La fonction **Ajouter une contrainte spécifique** du menu contextuel permet de créer une nouvelle contrainte spécifique sur l’entité. Lors du clic sur cet élément du menu, une nouvelle contrainte est ajoutée à la liste et l’interface de création de la contrainte est affichée. +La fonction **Ajouter une contrainte spécifique** du menu contextuel permet de créer une nouvelle contrainte spécifique sur l’entité. Lors du clic sur cet élément du menu, une nouvelle contrainte est ajoutée à la liste et l’interface de création de la contrainte est affichée. [En savoir plus sur les langages de définition de contraintes spécifiques et obtenir des exemples.](../../04-ContraintesRessources/04.LangagesDefinition.html)  -L'utilisateur définit un nom de contrainte, puis sélectionne le langage utilisé. Il sélectionne ensuite la fonction à utiliser. Les fonctions sont directement éditables en cliquant sur le bouton <big style="font-weight: bold;">+</big> qui redirige vers l’interface d’édition de code. +L’utilisateur définit un nom de contrainte, puis sélectionne le langage utilisé. Il sélectionne ensuite la fonction à utiliser. Les fonctions sont directement éditables en cliquant sur le bouton <big style="font-weight: bold;">+</big> qui redirige vers l’interface d’édition de code. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0035 et E0045</span> ##### Exemple -La superficie des parcelles du cadastre (attribut SUPF) est parfois incohérente avec la superficie calculée à partir de la géométrie. Dans l’exemple ci après, on recherche ces incohérences en définissant une contrainte fme_evaluate sur l’entité. Elle vérifie que l’écart entre superficie annoncée (attribut SUPF) et la superficie calculée ne doit pas dépasser 10% de la superficie annoncée : +La superficie des parcelles du cadastre (attribut SUPF) est parfois incohérente avec la superficie calculée à partir de la géométrie. Dans l’exemple ci après, on recherche ces incohérences en définissant une contrainte fme_evaluate sur l’entité. Elle vérifie que l’écart entre superficie annoncée (attribut SUPF) et la superficie calculée ne doit pas dépasser 10% de la superficie annoncée : ``` abs(@Value(SUPF)-@Area(1))/@Value(SUPF) < 0.10 @@ -26,6 +26,6 @@ abs(@Value(SUPF)-@Area(1))/@Value(SUPF) < 0.10 #### Définition de contraintes spécifiques dans la liste -En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. L’onglet Spécifique de la liste permet d’afficher la liste de tous les contraintes spécifiques sur les entités du schéma en cours. +En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. L’onglet Spécifique de la liste permet d’afficher la liste de tous les contraintes spécifiques sur les entités du schéma en cours.  \ No newline at end of file diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.05.DefinitionContraintesTopologiques.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.05.DefinitionContraintesTopologiques.md" index e8e0450..a3a73da 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.05.DefinitionContraintesTopologiques.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.05.DefinitionContraintesTopologiques.md" @@ -1,30 +1,30 @@ ### Définition de contraintes topologiques -Une règle topologique définit les relations spatiales entre des entités vectorielles connectées ou adjacentes. La topologie décrit les relations de connexion entre les arcs et d’adjacence entre les polygones. L’intérêt de la topologie dans les bases de données SIG est de supprimer les redondances dans la description géométrique des entités et d’accélérer les opérations d’analyse spatiale. +Une règle topologique définit les relations spatiales entre des entités vectorielles connectées ou adjacentes. La topologie décrit les relations de connexion entre les arcs et d’adjacence entre les polygones. L’intérêt de la topologie dans les bases de données SIG est de supprimer les redondances dans la description géométrique des entités et d’accélérer les opérations d’analyse spatiale. Qualigéo permet de spécifier des règles topologiques qui lient les entités les unes aux autres. Par exemple, deux parcelles adjacentes ne peuvent pas se superposer et il ne peut y avoir de trou entre deux parcelles (autres que des voies non cadastrées). La **<a name="kanchor15"></a>tesselation** met en avant les trous et chevauchements dans un jeu de données. La contrainte de tesselation [Laurini et Milleret-Raffort 1993] correspond à la partition totale d’un territoire par des polygones, sans espace ni chevauchement. La tesselation (ou mosaïque) est synonyme de couverture planaire. Les tuilages ou dallages sont des tesselations de motif régulier (rectangulaire en général). -La contrainte de tesselation de Qualigéo accepte que l’espace soit constitué d’éléments non connexes, totalement disjoints, comme des îles. +La contrainte de tesselation de Qualigéo accepte que l’espace soit constitué d’éléments non connexes, totalement disjoints, comme des îles. -Dans Qualigéo, une contrainte de tesselation interdit donc le chevauchement de polygones ou la présence d’espaces fermés non remplis. Les trous dans les polygones sont acceptés si ces trous sont remplis par un autre polygone. +Dans Qualigéo, une contrainte de tesselation interdit donc le chevauchement de polygones ou la présence d’espaces fermés non remplis. Les trous dans les polygones sont acceptés si ces trous sont remplis par un autre polygone. -#### Définition de contrainte topologiques dans l’arbre +#### Définition de contrainte topologiques dans l’arbre  -La fonction **Ajouter une contrainte topologique** accessible via le menu contextuel permet de créer une nouvelle contrainte topologique. Lors du clic sur cet élément du menu, une nouvelle contrainte est ajoutée à la liste et l’interface de création de la contrainte est affichée. +La fonction **Ajouter une contrainte topologique** accessible via le menu contextuel permet de créer une nouvelle contrainte topologique. Lors du clic sur cet élément du menu, une nouvelle contrainte est ajoutée à la liste et l’interface de création de la contrainte est affichée.  ##### Caractéristiques de contraintes topologique -L’interface **caractéristiques de la contrainte topologique** permet de définir les règles topologiques qui lient les entités les unes aux autres. Par exemple, deux parcelles adjacentes ne peuvent pas se superposer et il ne peut y avoir de trous entre deux parcelles (autres que des voies non cadastrées). +L’interface **caractéristiques de la contrainte topologique** permet de définir les règles topologiques qui lient les entités les unes aux autres. Par exemple, deux parcelles adjacentes ne peuvent pas se superposer et il ne peut y avoir de trous entre deux parcelles (autres que des voies non cadastrées). -L'utilisateur peut sélectionner la contrainte de tesselation pour intégrer un commentaire. +L’utilisateur peut sélectionner la contrainte de tesselation pour intégrer un commentaire. -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0014 (Violation de la contrainte de tesselation : chevauchement. Superposition d’objets).</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0014 (Violation de la contrainte de tesselation : chevauchement. Superposition d’objets).</span> <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0015 (Violation de la contrainte de tesselation : espace Espace entre objets).</span> @@ -32,9 +32,9 @@ L'utilisateur peut sélectionner la contrainte de tesselation pour intégrer un ##### Attributs de regroupement -On peut définir ensuite des attributs de regroupements. Le paramètre **Attributs de regroupement** permet de regrouper les entités à tester en les divisant en groupes en fonction des valeurs d’un attribut. Le contrôle est effectué sur les entités ayant les mêmes valeurs d’attribut de regroupement. Deux entités superposées ayant des valeurs d’attributs différentes ne génèrent donc pas d’erreur, le contrôle n’est pas effectué. Deux entités se chevauchant avec la même valeur d’attribut de regroupement produiront une erreur lors du contrôle. +On peut définir ensuite des attributs de regroupements. Le paramètre **Attributs de regroupement** permet de regrouper les entités à tester en les divisant en groupes en fonction des valeurs d’un attribut. Le contrôle est effectué sur les entités ayant les mêmes valeurs d’attribut de regroupement. Deux entités superposées ayant des valeurs d’attributs différentes ne génèrent donc pas d’erreur, le contrôle n’est pas effectué. Deux entités se chevauchant avec la même valeur d’attribut de regroupement produiront une erreur lors du contrôle. -[En savoir plus sur les contraintes topologies et le regroupement d’attributs.](../../04-ContraintesRessources/03.07.Contraintes_topologiques.html#attributs-de-regroupement-et-contrainte-topologique) +[En savoir plus sur les contraintes topologies et le regroupement d’attributs.](../../04-ContraintesRessources/03.07.Contraintes_topologiques.html#attributs-de-regroupement-et-contrainte-topologique) Il peut ensuite être défini une règle de validation. Une règle de validation permet à l’application de valider des erreurs de tesselation. Ne sont considérés comme en erreur que les objets qui respectent la règle de validation. @@ -42,6 +42,6 @@ Il peut ensuite être défini une règle de validation. Une règle de validation #### Définition de contrainte topologiques dans la liste -En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. L’onglet Topologie de la liste permet d’afficher la liste de tous les contraintes topologiques des types d’entités du schéma en cours. +En cliquant dans l’arbre, sur le nœud type d’entités d’un schéma , la liste des types d’entités composant le schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser tous les types d’entités et les contraintes définies dans le formulaire de création. L’onglet Topologie de la liste permet d’afficher la liste de tous les contraintes topologiques des types d’entités du schéma en cours.  diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.06.DefinitionContrainteConstruction.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.06.DefinitionContrainteConstruction.md" index 2325bbc..12538c6 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.06.DefinitionContrainteConstruction.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/03.06.DefinitionContrainteConstruction.md" @@ -1,6 +1,6 @@ ### Définition de contraintes de construction -Une règle de construction détermine les modalités de construction de la géométrie d’entité par rapport à d’autres entités dites de référence. +Une règle de construction détermine les modalités de construction de la géométrie d’entité par rapport à d’autres entités dites de référence. La fonction **Ajouter une contrainte de construction** accessible via le menu contextuel permet de créer un nouvelle contrainte de construction. @@ -8,7 +8,7 @@ La fonction **Ajouter une contrainte de construction** accessible via le menu co #### Caractéristiques de la contrainte de construction -L’interface **Caractéristiques de la contrainte de construction** permet de définir des contraintes de construction de la géométrie d’un type d’entité par rapport à la géométrie d’un type d’entité de référence. +L’interface **Caractéristiques de la contrainte de construction** permet de définir des contraintes de construction de la géométrie d’un type d’entité par rapport à la géométrie d’un type d’entité de référence.  @@ -18,11 +18,11 @@ L’interface **Caractéristiques de la contrainte de construction** permet <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0051 (Erreur de contrainte de construction stricte - vertex)</span> -**- Appui strict sur segment** : tous les segments de l’entité à contrôler doivent être égaux aux segments des entités de référence. +**- Appui strict sur segment** : tous les segments de l’entité à contrôler doivent être égaux aux segments des entités de référence. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0050 (Erreur de contrainte de construction stricte - segment)</span> -**- Appui sur segment, partie de segment** : tous les segments du type d’entité à contrôler ne doivent pas croiser ou être contenus dans le type d’entité de référence. +**- Appui sur segment, partie de segment** : tous les segments du type d’entité à contrôler ne doivent pas croiser ou être contenus dans le type d’entité de référence. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0052 (Erreur de contrainte de construction permissive - segment)</span> diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.md" index 95d9724..49043ab 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.md" @@ -2,11 +2,11 @@  -La fonction **Ajouter une contrainte sur les cardinalités** accessible via le menu contextuel permet de créer une nouvelle contrainte de cardinalité. Lors du clic sur cet élément, une nouvelle contrainte est ajoutée et l’interface de création de la contrainte est affichée. +La fonction **Ajouter une contrainte sur les cardinalités** accessible via le menu contextuel permet de créer une nouvelle contrainte de cardinalité. Lors du clic sur cet élément, une nouvelle contrainte est ajoutée et l’interface de création de la contrainte est affichée.  -Elle permet de créer de nouvelles relations en définissant les types d’entités parents et enfant et en précisant les nombres minimales et maximales d’enfants et de parents. L'utilisateur doit spécifier la correspondance entre les attributs du types d’entité parent et du type d’entité enfant. Il peut rajouter un commentaire pour détailler le contrôle. +Elle permet de créer de nouvelles relations en définissant les types d’entités parents et enfant et en précisant les nombres minimales et maximales d’enfants et de parents. L’utilisateur doit spécifier la correspondance entre les attributs du types d’entité parent et du type d’entité enfant. Il peut rajouter un commentaire pour détailler le contrôle. Voici les erreurs pouvant être retournées par ce contrôle : @@ -14,8 +14,8 @@ Voici les erreurs pouvant être retournées par ce contrôle : <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0031 Enfant sans parent</span> -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0032 Parent avec trop d’enfants</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0032 Parent avec trop d’enfants</span> -<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0033 Parents sans enfant ou avec pas assez d’enfants</span> +<span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0033 Parents sans enfant ou avec pas assez d’enfants</span> [En savoir plus sur les relations de cardinalités dans Qualigéo.](../../04-ContraintesRessources/03.01.RelationsCardinalites.html) diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.md" index cef5386..5945a7a 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.md" @@ -2,11 +2,11 @@  -La fonction **Ajouter une contrainte de relation spatiale** permet de créer un nouvelle contrainte de relation spatiale. Lors du clic sur cet élément, une nouvelle contrainte est ajoutée à la liste et l’interface de création de la contrainte est affichée. +La fonction **Ajouter une contrainte de relation spatiale** permet de créer un nouvelle contrainte de relation spatiale. Lors du clic sur cet élément, une nouvelle contrainte est ajoutée à la liste et l’interface de création de la contrainte est affichée.  -L'utilisateur nomme la relation puis sélectionne un premier type d’entité, puis un deuxième dans le champs Entité liée. Le groupement **opérateurs** permet de sélectionner un ou plusieurs opérateurs pour définir les relations liants les entités sélectionnées. +L’utilisateur nomme la relation puis sélectionne un premier type d’entité, puis un deuxième dans le champs Entité liée. Le groupement **opérateurs** permet de sélectionner un ou plusieurs opérateurs pour définir les relations liants les entités sélectionnées. [En savoir plus et accéder à la matrice des relations spatiales.](../../04-ContraintesRessources/03.06.MatriceRelationsSpatiales.html) @@ -16,6 +16,6 @@ Une relation de cardinalité existante peut également être sélectionnée pour ### Utilisation de la liste -En cliquant dans l’arbre, sur le nœud Relations spatiales d’un schéma , la liste des contraintes de relations spatiales définies dans un schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser toutes les relations spatiales définies. +En cliquant dans l’arbre, sur le nœud Relations spatiales d’un schéma , la liste des contraintes de relations spatiales définies dans un schéma s’affiche dans la fenêtre de droite. La liste permet de visualiser toutes les relations spatiales définies.  diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/06.DefinitionContraintesSpecifiquesJDD.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/06.DefinitionContraintesSpecifiquesJDD.md" index 6a52ece..c16b77f 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/06.DefinitionContraintesSpecifiquesJDD.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/06.DefinitionContraintesSpecifiquesJDD.md" @@ -1,15 +1,15 @@ ## Définition de contraintes spécifiques sur un jeu de données -La fonction **Ajouter une contrainte spécifique sur le jeu de données** permet de créer une nouvelle contrainte avec une fonction python. Cela permet d'effectuer des calculs de valeurs sur l’ensemble d’un jeu de données. La fonction retourne un booléen en fonction du résultat du calcul. +La fonction **Ajouter une contrainte spécifique sur le jeu de données** permet de créer une nouvelle contrainte avec une fonction python. Cela permet d’effectuer des calculs de valeurs sur l’ensemble d’un jeu de données. La fonction retourne un booléen en fonction du résultat du calcul. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0035 et E0045</span>  -Dans l’exemple ci -dessus, l’utilisateur définit un nom de contrainte. Il sélectionne ensuite la fonction Python à utiliser. Les fonctions sont directement éditables en cliquant sur le bouton <big style="font-weight: bold;">+</big> qui vous redirige vers l’interface de code. +Dans l’exemple ci -dessus, l’utilisateur définit un nom de contrainte. Il sélectionne ensuite la fonction Python à utiliser. Les fonctions sont directement éditables en cliquant sur le bouton <big style="font-weight: bold;">+</big> qui vous redirige vers l’interface de code. Par exemple, la fonction python CheckFeatureNumber ci-dessous permet le contrôle du nombre de bâtiments et retourne une erreur si le nombre total dépasse 50. -Trois arguments sont implémentés : le nom du type d’entité, le nombre minimal et le nombre maximal : +Trois arguments sont implémentés : le nom du type d’entité, le nombre minimal et le nombre maximal :  diff --git "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/07.DefinitionContraintesCode.md" "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/07.DefinitionContraintesCode.md" index abeddee..38140ac 100644 --- "a/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/07.DefinitionContraintesCode.md" +++ "b/01-Utilisation de Qualig\303\251o/02-SpecifierSchemaContraintes/07.DefinitionContraintesCode.md" @@ -2,7 +2,7 @@ Deux langages différents peuvent être utilisés afin de définir des contraintes spécifiques sur les jeux de données, les entités et les attributs. -La section **Code** permet d’accéder soit à un éditeur de texte pour définir des fonctions pyhton, soit au formulaire de création de fonctions fme_evaluate. +La section **Code** permet d’accéder soit à un éditeur de texte pour définir des fonctions pyhton, soit au formulaire de création de fonctions fme_evaluate. [En savoir plus sur les langages de définitions de contraintes spécifiques.](../../04-ContraintesRessources/04.LangagesDefinition.html) @@ -10,9 +10,9 @@ La section **Code** permet d’accéder soit à un éditeur de texte pour d  -Au dessus du formulaire d’édition de code Python, une barre de menus permet d’importer ou d’exporter le code à partir d’un fichier texte. +Au dessus du formulaire d’édition de code Python, une barre de menus permet d’importer ou d’exporter le code à partir d’un fichier texte. -Lorsque une erreur de codage est implémentée sur une contrainte relative à une entité l’erreur "Erreur de codage sur l’entité" est retournée ; et lorsque une erreur de codage est implémentée sur une contraintes relative à un attribut l’ "Erreur de codage sur l’attribut" est retournée. Une erreur de codage implémentée sur un jeu de données retourne l’erreur "Violation de la contrainte spécifique (Python) sur le jeu de données". +Lorsque une erreur de codage est implémentée sur une contrainte relative à une entité l’erreur "Erreur de codage sur l’entité" est retournée ; et lorsque une erreur de codage est implémentée sur une contraintes relative à un attribut l’ "Erreur de codage sur l’attribut" est retournée. Une erreur de codage implémentée sur un jeu de données retourne l’erreur "Violation de la contrainte spécifique (Python) sur le jeu de données". <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreurs retournées : E0046, E0049 et E0048</span> @@ -22,7 +22,7 @@ Lorsque une erreur de codage est implémentée sur une contrainte relative à un  -Le formulaire de saisie du code de type fme_evaluate se présente sous la forme d’une liste des différentes fonctions utilisables. La particularité des ces fonctions est qu’ elles doivent obligatoirement être présentées sur une seule ligne et renvoyer une valeur booléenne. +Le formulaire de saisie du code de type fme_evaluate se présente sous la forme d’une liste des différentes fonctions utilisables. La particularité des ces fonctions est qu’ elles doivent obligatoirement être présentées sur une seule ligne et renvoyer une valeur booléenne. [En savoir plus sur le code fme_evaluate.](../../04-ContraintesRessources/04.LangagesDefinition.html#fme-evaluate) diff --git "a/01-Utilisation de Qualig\303\251o/03.Analyser un contr\303\264le.md" "b/01-Utilisation de Qualig\303\251o/03.Analyser un contr\303\264le.md" index e6108be..ac2ee90 100644 --- "a/01-Utilisation de Qualig\303\251o/03.Analyser un contr\303\264le.md" +++ "b/01-Utilisation de Qualig\303\251o/03.Analyser un contr\303\264le.md" @@ -1,9 +1,9 @@ # Analyser un contrôle -Le menu Analyse donne accès à la liste des analyses effectuées. L’interface est composée de deux parties : +Le menu Analyse donne accès à la liste des analyses effectuées. L’interface est composée de deux parties : -* la liste des Contrôles (en haut de l’interface), -* le rapport (en bas de l’interface). +* la liste des Contrôles (en haut de l’interface), +* le rapport (en bas de l’interface).  @@ -11,36 +11,36 @@ Le menu Analyse donne accès à la liste des analyses effectuées. L’inter La liste affiche tous les contrôles effectués sur les jeux de données avec les informations principales suivantes : -* l'identifiant du contrôle, +* l’identifiant du contrôle, * le nom du contrôle, -* le nombre d'erreurs, +* le nombre d’erreurs, * le nom du schéma de contraintes, * la durée du traitement, * la date du contrôle. -Par ailleurs, en cliquant sur un contrôle, la partie droite de l'interface donne accès aux métadonnées du contrôle en précisant le jeu de données utilisé, le format source, le système de coordonnées, les versions logicielles, la version du schéma de contraintes et l'auteur du traitement. Le log du traitement est accessible en cliquant sur le lien "Log" et il est possible d'intégrer un commentaire au contrôle. +Par ailleurs, en cliquant sur un contrôle, la partie droite de l’interface donne accès aux métadonnées du contrôle en précisant le jeu de données utilisé, le format source, le système de coordonnées, les versions logicielles, la version du schéma de contraintes et l’auteur du traitement. Le log du traitement est accessible en cliquant sur le lien "Log" et il est possible d’intégrer un commentaire au contrôle. ### Générer un rapport Le bouton  permet de générer un rapport en ayant au préalable sélectionné un contrôle. -L’interface de génération de rapport s’affiche. +L’interface de génération de rapport s’affiche.  -Sélectionner ensuite le format d'export du rapport (docx, html ou pdf). +Sélectionner ensuite le format d’export du rapport (docx, html ou pdf). -### Barre d'outils Analyse +### Barre d’outils Analyse -Le bouton permet d’accéder à la fenêtre de Filtre des contrôles . +Le bouton permet d’accéder à la fenêtre de Filtre des contrôles . -L’utilisateur sélectionne un ou plusieurs contrôles à afficher en fonction de l’auteur, du schéma, de la date...puis clique sur Filtre pour afficher les contrôles désirés. +L’utilisateur sélectionne un ou plusieurs contrôles à afficher en fonction de l’auteur, du schéma, de la date...puis clique sur Filtre pour afficher les contrôles désirés. -Le bouton  permet d’annuler une sélection et le bouton  permet de supprimer les contrôles sélectionnés. Un message d’avertissement s’affiche lors de toute demande de suppression : pour la valider, l’utilisateur clique sur Oui. Le bouton  permet de relancer un contrôle avec les mêmes paramètres du test déjà saisis. +Le bouton  permet d’annuler une sélection et le bouton  permet de supprimer les contrôles sélectionnés. Un message d’avertissement s’affiche lors de toute demande de suppression : pour la valider, l’utilisateur clique sur Oui. Le bouton  permet de relancer un contrôle avec les mêmes paramètres du test déjà saisis. Le bouton  permet de visualiser les données en erreur dans FME Data Inspector. -Le bouton d'export de contrôle permet d’exporter dans le format de son choix les erreurs retournées par un contrôle de sorte à pouvoir les visualiser dans une application tierce. Il est possible de répartir les erreurs générées soit par type d’erreur, soit par type d’entités et de produire ainsi soit un fichier par type d’erreur soit un fichier par type d’entités. On peut également choisir aucune ventilation des résultats en sélectionnant l’option Regrouper. +Le bouton d’export de contrôle permet d’exporter dans le format de son choix les erreurs retournées par un contrôle de sorte à pouvoir les visualiser dans une application tierce. Il est possible de répartir les erreurs générées soit par type d’erreur, soit par type d’entités et de produire ainsi soit un fichier par type d’erreur soit un fichier par type d’entités. On peut également choisir aucune ventilation des résultats en sélectionnant l’option Regrouper. Le bouton  permet de relancer un traitement avec les paramètres du contrôle sélectionné. @@ -54,21 +54,21 @@ Cet onglet représente pour chaque contrôle sélectionné, les erreurs présent  -Les erreurs sont listées par classes. Le **type d’erreur** et le **type d’entité** sont affichés. +Les erreurs sont listées par classes. Le **type d’erreur** et le **type d’entité** sont affichés. -Le champ **Entité** correspond à la clé primaire de l’entité sur laquelle une erreur a été trouvée. Si l’erreur concerne une entité sans clé primaire, alors la cellule est vide. +Le champ **Entité** correspond à la clé primaire de l’entité sur laquelle une erreur a été trouvée. Si l’erreur concerne une entité sans clé primaire, alors la cellule est vide. -[Consulter la liste des types d’erreurs](../04-ContraintesRessources/02.ListeErreurs.html). +[Consulter la liste des types d’erreurs](../04-ContraintesRessources/02.ListeErreurs.html). -L’attribut concerné par l’erreur est ensuite affiché dans le champs **Attribut** et le détail de l’erreur apparaît dans le champs **Erreur**. +L’attribut concerné par l’erreur est ensuite affiché dans le champs **Attribut** et le détail de l’erreur apparaît dans le champs **Erreur**. -Le champ **Exception** permet au contrôleur de spécifier qu’une valeur retournée par Qualigéo est acceptable et qu’elle ne doit pas être considérée comme une véritable erreur. Elle devient ainsi une exception. +Le champ **Exception** permet au contrôleur de spécifier qu’une valeur retournée par Qualigéo est acceptable et qu’elle ne doit pas être considérée comme une véritable erreur. Elle devient ainsi une exception. -Il est ensuite possible de saisir un commentaire sur l’erreur dans le champs **Commentaire.** +Il est ensuite possible de saisir un commentaire sur l’erreur dans le champs **Commentaire.** -### Onglet Stats Types d’entité +### Onglet Stats Types d’entité -L’onglet **Stats Type d’entité** affiche le nombre d’entités par type d’entité. Un clic sur le nom d’une colonne permet de trier les enregistrements par ordre alphabétique ou numérique. +L’onglet **Stats Type d’entité** affiche le nombre d’entités par type d’entité. Un clic sur le nom d’une colonne permet de trier les enregistrements par ordre alphabétique ou numérique.  @@ -76,32 +76,32 @@ Le jeu de données analysé ci-dessus comporte par exemple, 384 communes, 16 lot ### Stats chaîne de caractères -Cet onglet représente, pour chaque contrôle sélectionné, les statistiques sur les valeurs de type chaînes de caractères présentes dans le jeu de données. Le nombre total d’entités par attribut, le nombre d’entités nulles et non nulles sont ainsi affichés. +Cet onglet représente, pour chaque contrôle sélectionné, les statistiques sur les valeurs de type chaînes de caractères présentes dans le jeu de données. Le nombre total d’entités par attribut, le nombre d’entités nulles et non nulles sont ainsi affichés. -Un clic sur le nom d’une colonne permet de trier les enregistrements. +Un clic sur le nom d’une colonne permet de trier les enregistrements.  -Les statistiques affichées ci-dessus montre que le type d’entité LOTS comporte 16 entités non nulles ayant un attribut "Descriptif". +Les statistiques affichées ci-dessus montre que le type d’entité LOTS comporte 16 entités non nulles ayant un attribut "Descriptif". ### Stats Domaines Cet onglet représente, pour chaque contrôle sélectionné, des statistiques sur les valeurs de type domaine présentes dans le jeu de données. -Pour chaque attribut de type Domaine, sont listées les différentes **valeurs** possibles et le nombre **total d’occurences** par valeur. +Pour chaque attribut de type Domaine, sont listées les différentes **valeurs** possibles et le nombre **total d’occurences** par valeur. -Un clic sur le nom d’une colonne permet de trier les enregistrements. +Un clic sur le nom d’une colonne permet de trier les enregistrements.  -Dans l’exemple ci-dessus, 3 entités ont la valeur J pour l’attrbut cdn_LvDegreDN et 3 ont la valeur 2a. +Dans l’exemple ci-dessus, 3 entités ont la valeur J pour l’attrbut cdn_LvDegreDN et 3 ont la valeur 2a. ### Stats Numériques Cet onglet représente, pour chaque contrôle sélectionné, des statistiques sur les valeurs numériques présentes dans le jeu de données. -Pour chaque attribut de type numérique, sont affichées les valeurs mininimales (**Min**) et maximales (**Max)**, la **médiane**, le nombre total de valeurs **(Nb.val.)**, le nombre total de valeurs numériques **(Nb.val.numeriques)**, la **somme** et **moyenne**, l’**écart type** et le **mode**. +Pour chaque attribut de type numérique, sont affichées les valeurs mininimales (**Min**) et maximales (**Max)**, la **médiane**, le nombre total de valeurs **(Nb.val.)**, le nombre total de valeurs numériques **(Nb.val.numeriques)**, la **somme** et **moyenne**, l’**écart type** et le **mode**. -N.B : La valeur -9999999 représentent des valeurs incalculables. Il est par exemple, impossible de calculer un écart type sur la valeur d’une seule entité, dans ce cas de figure l’écart-type prend alors la valeur de -9999999. +N.B : La valeur -9999999 représentent des valeurs incalculables. Il est par exemple, impossible de calculer un écart type sur la valeur d’une seule entité, dans ce cas de figure l’écart-type prend alors la valeur de -9999999.  diff --git "a/01-Utilisation de Qualig\303\251o/04.ExecuterControle.md" "b/01-Utilisation de Qualig\303\251o/04.ExecuterControle.md" index 81c00da..b395c35 100644 --- "a/01-Utilisation de Qualig\303\251o/04.ExecuterControle.md" +++ "b/01-Utilisation de Qualig\303\251o/04.ExecuterControle.md" @@ -1,6 +1,6 @@ # Exécuter un contrôle -Le menu Contrôle permet de contrôler un jeu de données selon les contraintes d’un schéma. +Le menu Contrôle permet de contrôler un jeu de données selon les contraintes d’un schéma. ## Définition du jeu de données à contrôler @@ -10,21 +10,21 @@ Le menu Contrôle permet de contrôler un jeu de données selon les contraintes Le contrôleur spécifie le **format du jeu** de données à tester en le sélectionnant dans la liste déroulante. -Il peut ajouter un commentaire pour détailler par exemple le jeu de données à tester et le cas d’utilisation du contrôle. +Il peut ajouter un commentaire pour détailler par exemple le jeu de données à tester et le cas d’utilisation du contrôle. ### Système de coordonnées (optionnel) -Le contrôleur sélectionne le système de coordonnées du jeu de données à contrôler, **si ce dernier n’est pas défini directement dans la donnée.** +Le contrôleur sélectionne le système de coordonnées du jeu de données à contrôler, **si ce dernier n’est pas défini directement dans la donnée.** En fonction du type de format de données, les paramètres Jeu de données diffèrent : ### Formats de type fichiers -L’utilisateur sélectionne le fichier ou les fichiers à contrôler. Lorsque plusieurs fichiers sont à tester, cliquer sur le bouton  pour accéder à la fenêtre de sélection des fichiers / répertoires complémentaires. Le contrôleur choisit les fichiers à tester en sélectionnant soit le **répertoire** en entier en incluant les sous répertoires (case à cocher Inclure les sous-répertoires) , soit plusieurs fichiers distincts. +L’utilisateur sélectionne le fichier ou les fichiers à contrôler. Lorsque plusieurs fichiers sont à tester, cliquer sur le bouton  pour accéder à la fenêtre de sélection des fichiers / répertoires complémentaires. Le contrôleur choisit les fichiers à tester en sélectionnant soit le **répertoire** en entier en incluant les sous répertoires (case à cocher Inclure les sous-répertoires) , soit plusieurs fichiers distincts. ### Formats de Bases de données -L’utilisateur spécifie le nom du serveur, le port, la base de données, le nom utilisateur et mot de passe. +L’utilisateur spécifie le nom du serveur, le port, la base de données, le nom utilisateur et mot de passe.  @@ -34,25 +34,25 @@ Si le format est de type Oracle, le serveur et le port ne sont pas à définir.  -L’utilisateur spécifie soit la géodatabase soit l'arborescence à contrôler. +L’utilisateur spécifie soit la géodatabase soit l’arborescence à contrôler. ## Sélection du schéma de contraintes de référence Le contrôleur sélectionne le schéma de contraintes à utiliser. -### Nombre d’erreur Max +### Nombre d’erreur Max -Via ce paramètre, le contrôleur spécifie le **nombre d’erreurs maximales** que le contrôle doit autoriser, au delà duquel il cesse son activité. Par défaut la valeur "0" est saisie, signifiant "illimité" : Aucune contrainte sur le nombre d’erreurs n’est ainsi spécifiée et le contrôle poursuivra son activité malgré un très grand nombre d’erreurs. +Via ce paramètre, le contrôleur spécifie le **nombre d’erreurs maximales** que le contrôle doit autoriser, au delà duquel il cesse son activité. Par défaut la valeur "0" est saisie, signifiant "illimité" : Aucune contrainte sur le nombre d’erreurs n’est ainsi spécifiée et le contrôle poursuivra son activité malgré un très grand nombre d’erreurs. -Ce paramètre permet donc au contrôleur de rapidement valider un jeu de données en estimant de manière arbitraire un nombre d’erreurs acceptable. +Ce paramètre permet donc au contrôleur de rapidement valider un jeu de données en estimant de manière arbitraire un nombre d’erreurs acceptable. <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0017</span> ### Générer des statistiques -Générer des statistiques permet de générer lors d’un contrôle des statistiques sur le nombre de types d’objets traités par types d’entités, sur les attributs de type chaîne de caractères , sur les domaines de valeurs et les valeurs numériques. +Générer des statistiques permet de générer lors d’un contrôle des statistiques sur le nombre de types d’objets traités par types d’entités, sur les attributs de type chaîne de caractères , sur les domaines de valeurs et les valeurs numériques. - Pour que des statistiques puissent être calculées, les attributs doivent avoir leur type défini dans la champs Type des caractéristiques de l’attribut : + Pour que des statistiques puissent être calculées, les attributs doivent avoir leur type défini dans la champs Type des caractéristiques de l’attribut :  diff --git a/02-LigneCommande/01.TraitementsLigneCommande.md b/02-LigneCommande/01.TraitementsLigneCommande.md index ab810c2..1ba49c0 100644 --- a/02-LigneCommande/01.TraitementsLigneCommande.md +++ b/02-LigneCommande/01.TraitementsLigneCommande.md @@ -1,6 +1,6 @@ # Traitements autonomes en ligne de commande -Qualigeo permet d’exécuter des traitements en ligne de commande sans avoir besoin de passer par l’interface. Ces traitements autonomes sont développés en language Python. +Qualigeo permet d’exécuter des traitements en ligne de commande sans avoir besoin de passer par l’interface. Ces traitements autonomes sont développés en language Python. * Les paramètres sont fournis sous la forme d’un dictionnaire python. * La liste des paramètres est entourée de " { " et " } ". @@ -12,7 +12,7 @@ Qualigeo permet d’exécuter des traitements en ligne de commande sans avoi Les scripts python suivants sont fournis : -## Lancement d’un contrôle simple : control.py +## Lancement d’un contrôle simple : control.py Le script python control.py permet de lancer un contrôle sur un jeu de données. Dans un premier temps, il récupère l’identifiant du contrôle, puis lance celui-ci et pour finir met à jour la base de données avec le log, la date de fin du contrôle ainsi que son état. Si le script n’arrive pas à sauvegarder le fichier de log dans la base de donnée, celui-ci est conservé. @@ -35,9 +35,9 @@ Le script python control.py permet de lancer un contrôle sur un jeu de données * formatSchema : format du format personnalisé si utilisé * genStat : génération de statistiques ou pas (non, 0, oui, 1) * nbErreurMax : nombre d’erreurs max (0 = infini) -* coordsys : système de coordonnées du jeu de données si il n’est pas défini dans le schéma +* coordsys : système de coordonnées du jeu de données si il n’est pas défini dans le schéma * formatSchema : format du format personnalisé si utilisé -* fts: valeur vide si le format est de type fichier fichier ou directory. Pour les formats de bases de données, liste des types d’entités à lire séparés par des espaces et protégé par des "". +* fts: valeur vide si le format est de type fichier fichier ou directory. Pour les formats de bases de données, liste des types d’entités à lire séparés par des espaces et protégé par des "". * Database : paramètres affectés aux ressources des formats de type base de données * dbServer : nom du serveur de données * dbPort : port du jeu de données @@ -56,10 +56,10 @@ Chaque nom de paramètre est séparé de sa valeur par ":". Tous les paramètres sont séparés par des ",". ``` -fme "c:/Qualigeo/script/control.py" "{’--schema’: ’Cadastre’, ’--format’: ’EDIGEO’, ’--auteur’: ’admin’, ’--commentaire’: ’test commande’, ’--coordsys’:--ControlDatabase’: ’qualigeo’, ’--ControlServer’: ’localhost’, ’--ControlPort’: 5432, ’--ControlUser’: ’admin’, ’--ControlPassword’:’admin’, ’--source’:’C:/Users/admin/Desktop/EDIGEOE2.THF’, ’--fts’: ’’}" +fme "c:/Qualigeo/script/control.py" "{’--schema’: ’Cadastre’, ’--format’: ’EDIGEO’, ’--auteur’: ’admin’, ’--commentaire’: ’test commande’, ’--coordsys’:--ControlDatabase’: ’qualigeo’, ’--ControlServer’: ’localhost’, ’--ControlPort’: 5432, ’--ControlUser’: ’admin’, ’--ControlPassword’:’admin’, ’--source’:’C:/Users/admin/Desktop/EDIGEOE2.THF’, ’--fts’: ’’}" ``` -## Génération d’un rapport : report.py +## Génération d’un rapport : report.py Le script report.py permet de générer un rapport simple au format XML ou DOCX. @@ -77,17 +77,17 @@ Dans un premier temps le script génère un fichier xml contenant les données. * dbPassword : mot de passe utilisateur * xsltStyleSheet : chemin de la feuille de style. * deleteXml : Suppression du xml servant à produire le rapport au format HTML, une fois ce dernier généré. ("yes" ou "no") -* reportType : format de sortie du rapport ("docx" ou "html"). Remplace l’extension fournie. +* reportType : format de sortie du rapport ("docx" ou "html"). Remplace l’extension fournie. - Si le paramètre reportType est en conflit avec le paramètre destXml, l’extension fournie sera celle du paramètre --reporType + Si le paramètre reportType est en conflit avec le paramètre destXml, l’extension fournie sera celle du paramètre --reporType ### Exemple ``` -fme "c:/Qualigeo/script/report.py" "{’--idControle’: ’21’, ’--PicturePath’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/report/resources/logo_qualigeo.png’, ’--destXml’: ’C:/rapport/rapport3.xml’, ’--xsltStyleSheet’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/engine/xslt/simple.xslt’, ’--dbPort’: ’5432’, ’--dbDatabase’: ’qualigeo’, ’--dbUSer’: ’admin’, ’--dbPassword’: ’admin’, ’--dbServer’: ’localhost’, ’--deleteXml’: ’no’, ’--reportType’: ’docx’}" +fme "c:/Qualigeo/script/report.py" "{’--idControle’: ’21’, ’--PicturePath’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/report/resources/logo_qualigeo.png’, ’--destXml’: ’C:/rapport/rapport3.xml’, ’--xsltStyleSheet’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/engine/xslt/simple.xslt’, ’--dbPort’: ’5432’, ’--dbDatabase’: ’qualigeo’, ’--dbUSer’: ’admin’, ’--dbPassword’: ’admin’, ’--dbServer’: ’localhost’, ’--deleteXml’: ’no’, ’--reportType’: ’docx’}" ``` -## Lancement d’un contrôle et de génération du rapport correspondant : Control_report.py +## Lancement d’un contrôle et de génération du rapport correspondant : Control_report.py Le script control_report.py permet de lancer un contrôle et ensuite de générer le rapport correspondant au format XML ou DOCX. Il lance dans un premier temps le script control.py puis lance ensuite le script rapport.py. @@ -116,7 +116,7 @@ Il faut fournir la liste des paramètres nécessaires au fonctionnement du contr * ControlUser : utilisateur base de données * ControlPassword : mot de passe * source : source des données à tester. Soit un chemin de fichier, soit les chemins de fichiers séparés par des espaces, soit le nom de la base de données si le format est de type base de données, soit un nom de répertoire si le format est de type directory -* fts (si le format est de type fichier fichier ou directory: valeur vide, pour les formats bases de données : liste des types d’entités à lire séparés par des espaces et protégé par des "") +* fts (si le format est de type fichier fichier ou directory: valeur vide, pour les formats bases de données : liste des types d’entités à lire séparés par des espaces et protégé par des "") * Database : paramètres affectés aux ressources des formats de type base de données * dbServer : serveur du jeu de données * dbPort : port du jeu de données @@ -130,24 +130,24 @@ Il faut fournir la liste des paramètres nécessaires au fonctionnement du contr * imageDir : répertoire de stockage des images * xsltStyleSheet : chemin de la feuille de style.</span> * deleteXml : Suppression du xml servant à produire le rapport au format HTML, une fois ce dernier généré. ("yes" ou "no") -* reportType : format de sortie du rapport ("docx" ou "html")</span>. Remplace l’extension fournie. +* reportType : format de sortie du rapport ("docx" ou "html")</span>. Remplace l’extension fournie. ### Exemple ``` -fme " c:/Qualigeo/script/control_report.py" "{’--schema’: ’recette3’, ’--format’: ’SHAPE’, ’--formatSchema’: ’SHAPE’, ’--auteur’: ’margot’, ’--commentaire’: ’test controle rapport d’aurélien’, ’--genStat’: 0, ’--nbErreurMax’: 0, ’--controlDatabase’: ’qualigeo’, ’--controlServer’: ’localhost’, ’--controlPort’: 5432, ’--controlUser’: ’admin’, ’--controlPassword’:’admin’, ’--source’: ’C:/produit/qualigeo/tests/data/recette3/recette3.zip’}" "{ ’--PicturePath’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/report/resources/logo_qualigeo.png’, ’--destXml’: ’C:/qualigeo2017/rapport/rapportcontrolerapport.xml’, ’--xsltStyleSheet’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/engine/xslt/simple.xslt’,’--dbUSer’: ’admin’, ’--deleteXml’: ’no’, ’--reportType’: ’docx’}" +fme " c:/Qualigeo/script/control_report.py" "{’--schema’: ’recette3’, ’--format’: ’SHAPE’, ’--formatSchema’: ’SHAPE’, ’--auteur’: ’margot’, ’--commentaire’: ’test controle rapport d’aurélien’, ’--genStat’: 0, ’--nbErreurMax’: 0, ’--controlDatabase’: ’qualigeo’, ’--controlServer’: ’localhost’, ’--controlPort’: 5432, ’--controlUser’: ’admin’, ’--controlPassword’:’admin’, ’--source’: ’C:/produit/qualigeo/tests/data/recette3/recette3.zip’}" "{ ’--PicturePath’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/report/resources/logo_qualigeo.png’, ’--destXml’: ’C:/qualigeo2017/rapport/rapportcontrolerapport.xml’, ’--xsltStyleSheet’: ’C:/Program Files (x86)/qualigeo_2017.1.b23689_betax64/Qualigeo/engine/xslt/simple.xslt’,’--dbUSer’: ’admin’, ’--deleteXml’: ’no’, ’--reportType’: ’docx’}" ``` -## Lancement d’un contrôle et d’un rapport : gtf_control_report.py +## Lancement d’un contrôle et d’un rapport : gtf_control_report.py -Le script gtf_control_report.py permet d’exécuter un contrôle et un rapport sur un jeu de données. +Le script gtf_control_report.py permet d’exécuter un contrôle et un rapport sur un jeu de données. ### Liste des paramètres : * schema : nom du schéma des contraintes à exploiter * format : format du jeu de données à contrôler * sourceMotif : extension des données sources -* H_summaryFIle : chemin et nom du fichier texte contenant le nombre d’erreurs générées +* H_summaryFIle : chemin et nom du fichier texte contenant le nombre d’erreurs générées * <span style="font-family: Calibri; font-size: 11pt;">H_destReportFile : chemin et nom du rapport destination</span> * reportStyleSheet * GTF_CONNECTION_STRING @@ -159,7 +159,7 @@ Le script gtf_control_report.py permet d’exécuter un contrôle et un rapp ### Exemple ``` -"C:/Program Files (x86)/FME/fme.exe" "C:/qualigeo_2017.1.b23877_betax64/Qualigeo/script/gtf_control_report.py" "{’--sourceDir’: ’C:/Users/schemas/qsx’, ’--schema’: ’recette1’, ’--format’: ’SHAPE’, ’--sourceMotif’: ’\*.zip’, ’--H_summaryFile’: ’C:/Users/Documents/RapportGTF/summary.txt’, ’--H_destReportFile’: ’C:/Users/Documents/RapportGTF/rapport.xml’, ’--PicturePath’: ’C:/qualigeo_2017.1.b23877_betax64/Qualigeo/report/resources/logo_qualigeo.png’, ’--reportStyleSheet’: ’simple’}" +"C:/Program Files (x86)/FME/fme.exe" "C:/qualigeo_2017.1.b23877_betax64/Qualigeo/script/gtf_control_report.py" "{’--sourceDir’: ’C:/Users/schemas/qsx’, ’--schema’: ’recette1’, ’--format’: ’SHAPE’, ’--sourceMotif’: ’\*.zip’, ’--H_summaryFile’: ’C:/Users/Documents/RapportGTF/summary.txt’, ’--H_destReportFile’: ’C:/Users/Documents/RapportGTF/rapport.xml’, ’--PicturePath’: ’C:/qualigeo_2017.1.b23877_betax64/Qualigeo/report/resources/logo_qualigeo.png’, ’--reportStyleSheet’: ’simple’}" ``` Les chemins des fichiers indiqués en commande doivent être parfaitement identiques à ceux du script Python exécuté. diff --git a/03-ConfigurationAdministration/01.Configuration.md b/03-ConfigurationAdministration/01.Configuration.md index c806d70..aadd4b5 100644 --- a/03-ConfigurationAdministration/01.Configuration.md +++ b/03-ConfigurationAdministration/01.Configuration.md @@ -1,14 +1,14 @@ # Configuration de Qualigéo -Le menu Outils > Configuration permet d’accéder à la fenêtre de configuration de l’application. +Le menu Outils > Configuration permet d’accéder à la fenêtre de configuration de l’application. ## Configuration des moteurs FME et Qualigéo -Moteur FME : on entend par Moteur FME, l’instance de FME en charge de l’exécution des contrôles et des analyses. L’administrateur localise l’application fme.exe à utiliser. +Moteur FME : on entend par Moteur FME, l’instance de FME en charge de l’exécution des contrôles et des analyses. L’administrateur localise l’application fme.exe à utiliser. -Dossier Moteur : on entend par dossier Moteur, le répertoire ’Engine’ de Qualigéo comportant l’intégralité des scripts FME. L’administrateur indique le chemin vers ce répertoire. +Dossier Moteur : on entend par dossier Moteur, le répertoire ’Engine’ de Qualigéo comportant l’intégralité des scripts FME. L’administrateur indique le chemin vers ce répertoire. -Qualigéo est disponible en deux langues, anglais et français, et l’administrateur sélectionne ici la langue à utiliser. +Qualigéo est disponible en deux langues, anglais et français, et l’administrateur sélectionne ici la langue à utiliser. Il choisit ensuite de sauvegarder les logs. diff --git a/03-ConfigurationAdministration/02.InterfaceAdministration.md b/03-ConfigurationAdministration/02.InterfaceAdministration.md index d2753c6..379a351 100644 --- a/03-ConfigurationAdministration/02.InterfaceAdministration.md +++ b/03-ConfigurationAdministration/02.InterfaceAdministration.md @@ -15,7 +15,7 @@ La sélection du nœud Formats affiche un tableau de tous les formats exploitabl  -Un double clic sur un format permet d’afficher son formulaire d’édition. Le bouton **Supprimer** permet de supprimer les formats cochés. +Un double clic sur un format permet d’afficher son formulaire d’édition. Le bouton **Supprimer** permet de supprimer les formats cochés. ### Source Type @@ -27,20 +27,20 @@ Les formats sont organisés selon le type de source : ### Édition de Format -Un clic sur le nom d’un format permet d’afficher le formulaire de création/édition d’un format. +Un clic sur le nom d’un format permet d’afficher le formulaire de création/édition d’un format.  Pour définir un format classique ou personnalisé, les informations suivantes sont nécessaires : -* **Id format**, nom du format tel qu’il apparaît dans la colonne "Nom du court" dans la Galerie des formats de FME. +* **Id format**, nom du format tel qu’il apparaît dans la colonne "Nom du court" dans la Galerie des formats de FME. * **Format**, le nom du format qui apparaîtra dans la liste dans Qualigéo. Il correspond au champs "Description" de la Galerie des formats de FME. * **Type**, le type des données (2D, 3D ou NON_SPATIAL). * **Source Type**, le type du jeu de données (FILE, DIRECTORY, DATABASE). -* **Extensions**, la liste des extensions utilisées par le schéma. Les extensions s’écrivent comme sur l’exemple précédent (*.extension) et sont séparées par un "|". -* L’option **"Utilisable pour l’export des contrôles"** indique si un rapport peut être généré ou non dans ce format. +* **Extensions**, la liste des extensions utilisées par le schéma. Les extensions s’écrivent comme sur l’exemple précédent (*.extension) et sont séparées par un "|". +* L’option **"Utilisable pour l’export des contrôles"** indique si un rapport peut être généré ou non dans ce format. - **L’intégration de [format personnalisé](../04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.html) se fait de la même façon qu’un format classique, en renseignant l’ensemble des champs. Il est conseillé d’insérer la même valeur pour les champs ’id Format’ et ’Format’.** + **L’intégration de [format personnalisé](../04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.html) se fait de la même façon qu’un format classique, en renseignant l’ensemble des champs. Il est conseillé d’insérer la même valeur pour les champs ’id Format’ et ’Format’.** [En savoir plus sur les formats personnalisés dans Qualigéo et obtenir des exemples.](../04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.html) @@ -56,33 +56,33 @@ Un clic sur le nœud Utilisateurs affiche la liste des utilisateurs et leur rôl  -Un double clic sur un utilisateur permet d’afficher le formulaire lié à celui-ci. Le bouton **Supprimer** permet de supprimer les utilisateurs cochés. +Un double clic sur un utilisateur permet d’afficher le formulaire lié à celui-ci. Le bouton **Supprimer** permet de supprimer les utilisateurs cochés. ### Rôles La liste des utilisateurs regroupe ceux-ci en fonction de leur **Rôle** : -* qual_administrator : administrateur de Qualigéo. Il accède à l’intégralité des fonctionnalités et notamment aux fonctions d’administration telles que la gestion des utilisateurs et l’exploitation de l’application disponibles dans le menu . -* qual_designer : utilisateur qui édite un schéma de contraintes. Il accède à l’intégralité des schémas de contraintes publics qu’il en soit le concepteur ou non, et il peut les modifier. Il peut exécuter un contrôle sur l’intégralité des schémas publics et accède à l’ensemble des analyses. -* qual_controler : utilisateur qui lance un contrôle et accède à son analyse. Il accède à tous les schémas publics mais ne peut pas les modifier. Il accède à l’intégralité des analyses. -* Aucun : pour tous les utilisateurs de la base de données n’ayant aucun rôle sur la base Qualigéo. +* qual_administrator : administrateur de Qualigéo. Il accède à l’intégralité des fonctionnalités et notamment aux fonctions d’administration telles que la gestion des utilisateurs et l’exploitation de l’application disponibles dans le menu . +* qual_designer : utilisateur qui édite un schéma de contraintes. Il accède à l’intégralité des schémas de contraintes publics qu’il en soit le concepteur ou non, et il peut les modifier. Il peut exécuter un contrôle sur l’intégralité des schémas publics et accède à l’ensemble des analyses. +* qual_controler : utilisateur qui lance un contrôle et accède à son analyse. Il accède à tous les schémas publics mais ne peut pas les modifier. Il accède à l’intégralité des analyses. +* Aucun : pour tous les utilisateurs de la base de données n’ayant aucun rôle sur la base Qualigéo. -Un menu contextuel est associé à chacun de ces nœuds permettant d’ajouter un utilisateur avec le rôle spécifié. +Un menu contextuel est associé à chacun de ces nœuds permettant d’ajouter un utilisateur avec le rôle spécifié. [En savoir plus sur la création de comptes et de rôles](../04-ContraintesRessources/05.04.CreationComptesRoles.html) ### Ajouter un Utilisateur -Le nœud utilisateur permet d’afficher le formulaire correspondant à l’utilisateur sélectionné. +Le nœud utilisateur permet d’afficher le formulaire correspondant à l’utilisateur sélectionné.  Pour définir un utilisateur, il faut définir les informations suivantes : -* **Nom**, le nom de l’utilisateur. -* **Mot de passe**, le mot de passe à saisir deux fois. Lors de la modification d’un utilisateur, si vous souhaitez modifier sont mot de passe, cliquer sur **Modifier**. -* **Rôle**, le rôle de l’utilisateur sur la base Qualigéo. -* **Actif**, si cette case est décochée,l’utilisateur ne possède aucun rôle sur la base Qualigéo. +* **Nom**, le nom de l’utilisateur. +* **Mot de passe**, le mot de passe à saisir deux fois. Lors de la modification d’un utilisateur, si vous souhaitez modifier sont mot de passe, cliquer sur **Modifier**. +* **Rôle**, le rôle de l’utilisateur sur la base Qualigéo. +* **Actif**, si cette case est décochée,l’utilisateur ne possède aucun rôle sur la base Qualigéo. #### Menu contextuel @@ -102,10 +102,10 @@ La personnalisation des rapports permet de gérer le style du rendu PDF. Un styl ## Ajout et gestion de systèmes de coordonnées -L’interface Caractéristique du système de coordonnées accessible via le menu contextuel du nœud Systèmes de coordonnées  permet l’ajout de système de coordonnées. +L’interface Caractéristique du système de coordonnées accessible via le menu contextuel du nœud Systèmes de coordonnées  permet l’ajout de système de coordonnées.  -L’administrateur définit l’id du système c’est à dire l’identifiant du système tel qu’il est définit dans FME. +L’administrateur définit l’id du système c’est à dire l’identifiant du système tel qu’il est définit dans FME. -Il indique ensuite le Format c’est à dire la valeur à afficher dans l’interface de Qualigéo (listes déroulantes). +Il indique ensuite le Format c’est à dire la valeur à afficher dans l’interface de Qualigéo (listes déroulantes). diff --git a/04-ContraintesRessources/01.ListeContraintes.md b/04-ContraintesRessources/01.ListeContraintes.md index 684bbd6..51506b5 100644 --- a/04-ContraintesRessources/01.ListeContraintes.md +++ b/04-ContraintesRessources/01.ListeContraintes.md @@ -11,13 +11,13 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo <td>Contrainte</td> <td>Explication / Ressource</td> <td style="text-align: center;">Erreur(s) </td> - <td style="text-align: center;">Libellé de l’erreur </td> + <td style="text-align: center;">Libellé de l’erreur </td> </tr> <tr> - <td style="text-align: left;">Contrainte sur l’Interprétation de la géométrie</td> + <td style="text-align: left;">Contrainte sur l’Interprétation de la géométrie</td> <td style="text-align: left;"> <p class="texte"> <span style="font-size: 10pt;">Vérifie les coordonnées des géométries et leur interprétation</span></p> - <p><a href="./03.02.TypeGeometrie.html" style="font-size: 8pt;">En savoir plus sur les contraintes d’inteprétation et de type de géométrie</a> + <p><a href="./03.02.TypeGeometrie.html" style="font-size: 8pt;">En savoir plus sur les contraintes d’inteprétation et de type de géométrie</a> </p> </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#type-de-geometrie-et-interpretation-de-la-geometrie">E0002</a> @@ -25,58 +25,58 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo <td style="text-align: left;">Géométrie non conforme (interprétation de la géométrie).</td> </tr> <tr> - <td style="text-align: left;">Contrainte présence d’attribut </td> - <td style="text-align: left;">Vérifie la présence des attributs et détecte la présence d’attribut en trop. </td> + <td style="text-align: left;">Contrainte présence d’attribut </td> + <td style="text-align: left;">Vérifie la présence des attributs et détecte la présence d’attribut en trop. </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#type-dentites-et-attribut-non-definis">E0003</a> </td> <td style="text-align: left;">Attribut non autorisé</td> </tr> <tr> - <td style="text-align: left;">Contrainte d’existence obligatoire d’attribut </td> - <td style="text-align: left;">Vérifie la présence des attributs et détecte l’absence d’attribut.</td> + <td style="text-align: left;">Contrainte d’existence obligatoire d’attribut </td> + <td style="text-align: left;">Vérifie la présence des attributs et détecte l’absence d’attribut.</td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#type-dentites-et-attribut-non-definis">E0004</a> </td> <td style="text-align: left;">Attribut obligatoire absent</td> </tr> <tr> - <td style="text-align: left;">Contrainte d’existence d’un Type d’entités</td> - <td style="text-align: left;">Vérifie la présence/absence de type d’entités</td> + <td style="text-align: left;">Contrainte d’existence d’un Type d’entités</td> + <td style="text-align: left;">Vérifie la présence/absence de type d’entités</td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence">E0005 et E0006</a> </td> - <td style="text-align: left;">Type d’entité obligatoire absent</td> + <td style="text-align: left;">Type d’entité obligatoire absent</td> </tr> <tr> - <td style="text-align: left;">Contrainte sur la Longueur max d’attribut</td> + <td style="text-align: left;">Contrainte sur la Longueur max d’attribut</td> <td style="text-align: left;">Vérifie la longueur des attributs</td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#longueur-dattribut/01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#longueur-dattribut">E0007</a> </td> - <td style="text-align: left;">Taille de l’attribut trop grande</td> + <td style="text-align: left;">Taille de l’attribut trop grande</td> </tr> <tr> - <td style="text-align: left;">Contrainte d’unicité</td> - <td style="text-align: left;">Une contrainte d’unicité garantit l’unicité de données contenues dans un attribut. Elle exige que toutes les valeurs d’un attribut soient uniques. </td> + <td style="text-align: left;">Contrainte d’unicité</td> + <td style="text-align: left;">Une contrainte d’unicité garantit l’unicité de données contenues dans un attribut. Elle exige que toutes les valeurs d’un attribut soient uniques. </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.03.DefinitionContraintesUnicite.html">E0008</a> </td> - <td style="text-align: left;">Violation de la contrainte d’unicité</td> + <td style="text-align: left;">Violation de la contrainte d’unicité</td> </tr> <tr> <td style="text-align: left;">Contrainte sur la nullité de valeur </td> - <td style="text-align: left;">Vérifie la nullité d’attribut</td> + <td style="text-align: left;">Vérifie la nullité d’attribut</td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#valeur-obligatoire">E0009</a> </td> <td style="text-align: left;">Violation de contrainte de non nullité</td> </tr> <tr> <td style="text-align: left;">Contrainte sur domaine de valeurs </td> - <td style="text-align: left;">Vérifie si les valeurs d’attributs sont dans une plage définie. </td> + <td style="text-align: left;">Vérifie si les valeurs d’attributs sont dans une plage définie. </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#domaine-de-valeurs">E0010</a> </td> - <td style="text-align: left;">Valeur d’attribut hors domaine</td> + <td style="text-align: left;">Valeur d’attribut hors domaine</td> </tr> <tr> <td style="text-align: left;">Contrainte de relation spatiale</td> <td style="text-align: left;"> - <p class="texte" style="font-size: 10pt;">Vérifie les relations spatiales entre deux types d’entités </p> + <p class="texte" style="font-size: 10pt;">Vérifie les relations spatiales entre deux types d’entités </p> <p style="font-size: 10pt;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.html"><span style="font-size: 8pt;">En savoir plus sur les </span><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.html" style="font-size: 8pt;">contraintes de relations spatiales </a></a> </p> </td> @@ -85,15 +85,15 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo <td style="text-align: left;">Violation de la contrainte de relation spatiale</td> </tr> <tr> - <td style="text-align: left;">Contraintes de Valeur d’attribut définie par Expression régulière</td> + <td style="text-align: left;">Contraintes de Valeur d’attribut définie par Expression régulière</td> <td style="text-align: left;"> - <p class="texte">Vérifie la valeur d’attribut</p> + <p class="texte">Vérifie la valeur d’attribut</p> <p><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#expression-reguliere" style="font-size: 8pt;">En savoir plus sur les contraintes définies pas expressions régulières</a> </p> </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#expression-reguliere">E0012</a> </td> - <td style="text-align: left;">Valeur d’attribut hors expression régulière</td> + <td style="text-align: left;">Valeur d’attribut hors expression régulière</td> </tr> <tr> <td style="text-align: left;">Contrainte de tesselation </td> @@ -110,7 +110,7 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo <tr> <td style="text-align: left;">Contraintes de géométrie selon standards OGC </td> <td style="text-align: left;"> - <p><span style="font-size: 10pt;">Vérifie la géométrie d’entités selon les normes définies par l’OGC</span> + <p><span style="font-size: 10pt;">Vérifie la géométrie d’entités selon les normes définies par l’OGC</span> </p> </p> </td> @@ -121,7 +121,7 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo <tr> <td style="text-align: left;">Contrainte de cardinalité</td> <td style="text-align: left;"> - <p><span style="font-size: 10pt;">Vérifie les cardinalités entre types d’entités enfant et parents. </span> + <p><span style="font-size: 10pt;">Vérifie les cardinalités entre types d’entités enfant et parents. </span> </p> <p><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.html" style="font-size: 8pt;">En savoir plus sur les contraintes de cardinalités</a> </p> @@ -143,7 +143,7 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo <td style="text-align: left;">Date non conforme</td> </tr> <tr> - <td style="text-align: left;">Contrainte spécifique sur type d’entité</td> + <td style="text-align: left;">Contrainte spécifique sur type d’entité</td> <td style="text-align: left;"> <p class="texte" style="font-size: 10pt;">Appelle une fonction spécifique spécifiée par le Designer et retourne une erreur spécifique.</p> <p><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.html#definition-de-contraintes-specifiques-sur-lentite-dans-larbre" style="font-size: 8pt;">En savoir plus sur les langages de définition de contraintes spécifiques</a> @@ -151,12 +151,12 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.html#definition-de-contraintes-specifiques-sur-lentite-dans-larbre">E0035</a> </td> - <td style="text-align: left;">Non respect d’une contrainte spécifique Type (définie par code) sur l’entité</td> + <td style="text-align: left;">Non respect d’une contrainte spécifique Type (définie par code) sur l’entité</td> </tr> <tr> <td style="text-align: left;">Contrainte de domaine spatial - système de coordonnées de référence </td> <td style="text-align: left;"> - <p class="texte" style="font-size: 10pt;">Vérifie l’étendue et le système de coordonnées d’un jeu de données. </p> + <p class="texte" style="font-size: 10pt;">Vérifie l’étendue et le système de coordonnées d’un jeu de données. </p> </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#restreindre-a-un-systeme-de-coordonnees-de-reference">E0036 E0037</a> </td> @@ -175,24 +175,24 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo </tr> <tr> <td style="text-align: left;">Contrainte de plage de valeur numérique sur attribut </td> - <td style="text-align: left;">Vérifie si les valeurs numériques d’attributs sont dans une plage définie. </td> + <td style="text-align: left;">Vérifie si les valeurs numériques d’attributs sont dans une plage définie. </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#valeur-numerique-min-et-max">E0039 et E0040</a> </td> - <td style="text-align: left;">Valeur d’attribut inférieure au minimum</td> + <td style="text-align: left;">Valeur d’attribut inférieure au minimum</td> </tr> <tr> - <td style="text-align: left;">Contrainte de type d’attribut</td> + <td style="text-align: left;">Contrainte de type d’attribut</td> <td style="text-align: left;">Vérifie le type des attributs (alphanumérique, entier, numérique). </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#type-dattributs">E0043</a> </td> - <td style="text-align: left;">Type d’attribut non conforme</td> + <td style="text-align: left;">Type d’attribut non conforme</td> </tr> <tr> - <td style="text-align: left;">Contrainte de présence de Type d’entité</td> - <td style="text-align: left;">Vérifie la présence /absence de type d’entités</td> + <td style="text-align: left;">Contrainte de présence de Type d’entité</td> + <td style="text-align: left;">Vérifie la présence /absence de type d’entités</td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#type-dentites-et-attribut-non-definis">E0044</a> </td> - <td style="text-align: left;">Type d’entité non défini</td> + <td style="text-align: left;">Type d’entité non défini</td> </tr> <tr> <td style="text-align: left;">Contrainte Python sur entité</td> @@ -202,11 +202,11 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.html#definition-de-contraintes-specifiques-sur-lentite-dans-larbre">E0045</a> </td> - <td style="text-align: left;">Violation de la contrainte Python sur l’entité</td> + <td style="text-align: left;">Violation de la contrainte Python sur l’entité</td> </tr> <tr> <td style="text-align: left;"> - <p style="font-size: 10pt;">Contrainte spécifique sur valeur d’attribut (python)</p> + <p style="font-size: 10pt;">Contrainte spécifique sur valeur d’attribut (python)</p> <p> </p> </td> <td style="text-align: left;"> @@ -215,7 +215,7 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo </td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#contraintes-specifiques-sur-lattribut">E0047 </a> </td> - <td style="text-align: left;">Valeur d’attribut hors expression régulière décrite par code python</td> + <td style="text-align: left;">Valeur d’attribut hors expression régulière décrite par code python</td> </tr> <tr> <td style="text-align: left;">Contrainte spécifique sur jeu de données (pyhton)</td> @@ -229,7 +229,7 @@ Le tableau ci-dessous liste les contraintes définissables dans Qualigéo </tr> <tr> <td style="text-align: left;">Contrainte de construction</td> - <td style="text-align: left;">Vérifie la géométrie d’un type d’entité par rapport à la géométrie d’un type d’entité de référence. <p class="texte" style="font-weight: normal;"><span style="font-size: 8pt;"> </span><a href="../04-ContraintesRessources/03.03.ContraintesConstruction" style="font-size: 8pt;">En savoir plus sur les contraintes de construction</a></p></td> + <td style="text-align: left;">Vérifie la géométrie d’un type d’entité par rapport à la géométrie d’un type d’entité de référence. <p class="texte" style="font-weight: normal;"><span style="font-size: 8pt;"> </span><a href="../04-ContraintesRessources/03.03.ContraintesConstruction" style="font-size: 8pt;">En savoir plus sur les contraintes de construction</a></p></td> <td style="text-align: left;"><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html">E0050 à E0052</a> </td> <td style="text-align: left;">Erreur de contrainte de construction</td> diff --git a/04-ContraintesRessources/02.ListeErreurs.md b/04-ContraintesRessources/02.ListeErreurs.md index 0cf8013..ff7b799 100644 --- a/04-ContraintesRessources/02.ListeErreurs.md +++ b/04-ContraintesRessources/02.ListeErreurs.md @@ -1,18 +1,18 @@ # Liste des erreurs générées -Les erreurs générées lors d’un contrôle sont classées par type. On distingue les erreurs relatives : +Les erreurs générées lors d’un contrôle sont classées par type. On distingue les erreurs relatives : * aux entités * à la géométrie * aux jeux de données -* aux types d’entités. +* aux types d’entités. -Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualigéo : +Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualigéo : <table border="1px solid grey"> <tr> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="text-align: center;"><b>id_error_type</b></td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="text-align: center;"><b>classe d’erreur</b></td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="text-align: center;"><b>classe d’erreur</b></td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: center;"><b>nom</b></td> </tr> <tr> @@ -24,37 +24,37 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#type-dentites-et-attribut-non-definis">E0003</a> </td> - <td>Type d’entité</td> + <td>Type d’entité</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Attribut non autorisé</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#type-dentites-et-attribut-non-definis">E0004</a> </td> - <td>Type d’entité</td> + <td>Type d’entité</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Attribut obligatoire absent</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence">E0005</a> </td> <td>Jeu de données</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Type d’entité obligatoire absent</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Type d’entité obligatoire absent</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence">E0006</a> </td> <td>Jeu de données</td> - <td>Type d’entité obligatoire absent (TE défini par une expression régulière). Erreur dépréciée en 2017. </td> + <td>Type d’entité obligatoire absent (TE défini par une expression régulière). Erreur dépréciée en 2017. </td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#longueur-dattribut/01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#longueur-dattribut">E0007</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Taille de l’attribut trop grande</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Taille de l’attribut trop grande</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.03.DefinitionContraintesUnicite.html">E0008</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Violation de la contrainte d’unicité</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Violation de la contrainte d’unicité</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#valeur-obligatoire">E0009</a> @@ -66,7 +66,7 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#domaine-de-valeurs">E0010</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut hors domaine</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut hors domaine</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/05.DefinitionContraintesRelationsSpatiales.html">E0011</a> @@ -78,12 +78,12 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#expression-reguliere">E0012</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut hors expression régulière</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut hors expression régulière</td> </tr> <tr> <td>E0013 </td> <td>Entité</td> - <td>Valeur d’attribut hors expression régulière nommée</td> + <td>Valeur d’attribut hors expression régulière nommée</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.05.DefinitionContraintesTopologiques.html#caracteristiques-de-contraintes-topologique">E0014</a> @@ -100,13 +100,13 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <tr> <td>E0016</td> <td>Entité</td> - <td>Valeur d’attribut hors expression régulière décrite par code tcl</td> + <td>Valeur d’attribut hors expression régulière décrite par code tcl</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence">E0017</a> </td> <td>Jeu de données</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Nombre d’erreurs maximum dépassé</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Nombre d’erreurs maximum dépassé</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence">E0018</a> @@ -123,7 +123,7 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence"">E0020</a> </td> <td>Géométrie</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Géométrie non valide : Trou à l’extérieur de l’enveloppe (erreur OGC_validator : 2)</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Géométrie non valide : Trou à l’extérieur de l’enveloppe (erreur OGC_validator : 2)</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#existence">E0021</a> @@ -195,7 +195,7 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.html">E0032</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Violation de la contrainte de cardinalité : Parent avec trop d’enfants</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Violation de la contrainte de cardinalité : Parent avec trop d’enfants</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/04.DefinitionContraintesCardinalites.html">E0033</a> @@ -213,7 +213,7 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.html#definition-de-contraintes-specifiques-sur-lentite-dans-larbre">E0035</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Non respect d’une contrainte spécifique Type (définie par code) sur l’entité</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Non respect d’une contrainte spécifique Type (définie par code) sur l’entité</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#restreindre-a-un-systeme-de-coordonnees-de-reference">E0036</a> @@ -237,13 +237,13 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#valeur-numerique-min-et-max">E0039</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut inférieure au minimum</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut inférieure au minimum</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#valeur-numerique-min-et-max">E0040</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut supérieure au maximum</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut supérieure au maximum</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#type-de-geometrie-et-interpretation-de-la-geometrie">E0041</a> @@ -255,37 +255,37 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.01.DefinitionTypesEntites.html#type-de-geometrie-et-interpretation-de-la-geometrie">E0042</a> </td> <td>Géométrie</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Problème de relation spatiale, géométrie de l’entité liée non conforme</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Problème de relation spatiale, géométrie de l’entité liée non conforme</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#type-dattributs">E0043</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Type d’attribut non conforme</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Type d’attribut non conforme</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html#type-dentites-et-attribut-non-definis">E0044</a> </td> <td>Jeu de données</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Type d’entité non défini</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Type d’entité non défini</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.04.DefinitionContraintesSpecifiques.html#definition-de-contraintes-specifiques-sur-lentite-dans-larbre">E0045</a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Violation de la contrainte Python sur l’entité</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Violation de la contrainte Python sur l’entité</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#contraintes-specifiques-sur-lattribut">E0046</a> </td> <td>Code</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Erreur de codage de la contrainte Python sur l’entité</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Erreur de codage de la contrainte Python sur l’entité</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/03.02.DefinitionContraintesAttributs.html#contraintes-specifiques-sur-lattribut">E0047 </a> </td> <td>Entité</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut hors expression régulière décrite par code python</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Valeur d’attribut hors expression régulière décrite par code python</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/07.DefinitionContraintesCode.html#edition-de-codes-tcl-et-python">E0048</a> @@ -297,7 +297,7 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/07.DefinitionContraintesCode.html#edition-de-codes-tcl-et-python">E0049</a> </td> <td>Code</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Erreur de codage de la contrainte Python sur l’attribut</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Erreur de codage de la contrainte Python sur l’attribut</td> </tr> <tr> <td><a href="../01-Utilisation de Qualigéo/02-SpecifierSchemaContraintes/02.04.CreationSchemaVierge.html">E0050</a> @@ -338,6 +338,6 @@ Le tableau ci-dessous liste l’ensemble des erreurs retournées par Qualig <tr> <td>E0056</td> <td>Entité</td> - <td>Erreur d’encodage de la valeur de l’attribut</td> + <td>Erreur d’encodage de la valeur de l’attribut</td> </tr> </table> diff --git a/04-ContraintesRessources/03.02.TypeGeometrie.md b/04-ContraintesRessources/03.02.TypeGeometrie.md index c766a24..1b1e004 100644 --- a/04-ContraintesRessources/03.02.TypeGeometrie.md +++ b/04-ContraintesRessources/03.02.TypeGeometrie.md @@ -1,6 +1,6 @@ ## Type de géométrie et interprétation géométrique -La distinction entre le type de géométrie et l’interprétation géométrique est un point important : le type de géométrie indique la géométrie formée par les coordonnées alors que l’interprétation géométrique spécifie comment la géométrie est interprétée. Par exemple, une géométrie de type point peut être interprétée par un des types suivants : point, arc, ellipse ou texte. +La distinction entre le type de géométrie et l’interprétation géométrique est un point important : le type de géométrie indique la géométrie formée par les coordonnées alors que l’interprétation géométrique spécifie comment la géométrie est interprétée. Par exemple, une géométrie de type point peut être interprétée par un des types suivants : point, arc, ellipse ou texte. Les combinaisons valides entre type de géométrie et interprétation géométrique sont décrites dans le tableau ci-dessous : diff --git a/04-ContraintesRessources/03.03.ContraintesConstruction.md b/04-ContraintesRessources/03.03.ContraintesConstruction.md index 1aaebc2..10c73c4 100644 --- a/04-ContraintesRessources/03.03.ContraintesConstruction.md +++ b/04-ContraintesRessources/03.03.ContraintesConstruction.md @@ -2,7 +2,7 @@ <a name="Règles_construction"></a> -Une contrainte de construction permet de définir des règles de construction de la géométrie d’un type d’entité par rapport à la géométrie d’un type d’entité de référence. +Une contrainte de construction permet de définir des règles de construction de la géométrie d’un type d’entité par rapport à la géométrie d’un type d’entité de référence. ## Règles de construction et exemples @@ -31,7 +31,7 @@ Une contrainte de construction permet de définir des règles de construction de <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowSep_ColSep">Construction valide : tous les segments sont égaux</td> <td style="text-align: left;" class="TableStyle_Rows_Body_1_0_RowSep_ColSep"><span style="font-weight: normal;">Construction valide : aucun segment à contrôler ne croise ou ne contient un segment de référence</span> </td> - <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd"><span style="font-weight: normal;">Construction valide : aucune parcelle de référence n’est découpée par la zone d’analyse.</span> + <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd"><span style="font-weight: normal;">Construction valide : aucune parcelle de référence n’est découpée par la zone d’analyse.</span> </td> </tr> <tr> @@ -42,9 +42,9 @@ Une contrainte de construction permet de définir des règles de construction de <p class="texte"><span style="font-size: 10pt;">Construction non valide : Segment [AB] en erreur : un vertex manquant.</span> <![CDATA[ ]]></p> <p class="texte"> </p> </td> - <td style="font-weight: normal;text-align: left;font-size: 10pt;color: #000000;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep">Construction non valide : <p><span style="font-size: 10pt;">Segment [AB] n’est égal à aucun segment de référence</span></p></td> + <td style="font-weight: normal;text-align: left;font-size: 10pt;color: #000000;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep">Construction non valide : <p><span style="font-size: 10pt;">Segment [AB] n’est égal à aucun segment de référence</span></p></td> <td style="font-weight: normal;text-align: left;color: #000000;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep"><span style="color: #ff0000;"><span style="color: #000000;">Construction non valide :</span></span> le segment [AB]contient des segments de référence. </td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd">Construction valide : aucune parcelle de référence n’est découpée par la zone d’analyse.</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd">Construction valide : aucune parcelle de référence n’est découpée par la zone d’analyse.</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep"> @@ -52,8 +52,8 @@ Une contrainte de construction permet de définir des règles de construction de </td> <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowSep_ColSep">Construction non valide : le vertex B est en trop</td> <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowSep_ColSep">Construction non valide : les segment [AB] et [BC] ne sont égaux à aucun segment de référence. </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowSep_ColSep"><span style="color: #ff0000;"><span style="color: #000000;">Construction valide </span></span><span style="color: #000000;">:</span> les segments [AB] et [BC] ne croisent pas de segment de référence et n’en contiennent pas.</td> - <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd"><span style="font-weight: normal;">Construction valide : aucune parcelle de référence n’est découpée par la zone d’analyse.</span> + <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowSep_ColSep"><span style="color: #ff0000;"><span style="color: #000000;">Construction valide </span></span><span style="color: #000000;">:</span> les segments [AB] et [BC] ne croisent pas de segment de référence et n’en contiennent pas.</td> + <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd"><span style="font-weight: normal;">Construction valide : aucune parcelle de référence n’est découpée par la zone d’analyse.</span> </td> </tr> <tr> @@ -83,17 +83,17 @@ Une contrainte de construction permet de définir des règles de construction de </td> <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep">Construction valide: tous les vertex sont égaux.</td> <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep">Construction non valide segments [AB]et [FE] en erreur</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep"><span style="color: #ff0000;"><span style="color: #000000;">Construction valide</span></span><span style="color: #000000;"> : les</span> segments [AB] et [FE] ne croisent pas de segments de référence (ils les touchent), et n’en contient aucun. </td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd">Construction valide : aucune parcelle n’est découpée par la zone d’étude.</td> + <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_0_0_RowSep_ColSep"><span style="color: #ff0000;"><span style="color: #000000;">Construction valide</span></span><span style="color: #000000;"> : les</span> segments [AB] et [FE] ne croisent pas de segments de référence (ils les touchent), et n’en contient aucun. </td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd">Construction valide : aucune parcelle n’est découpée par la zone d’étude.</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowEnd_ColSep"> <img src="..\_images/7_126x137.png" style="width: 126;height: 137;" /> </td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowEnd_ColSep">Construction non valide : aucun vertex n’est égal à un aucun vertex de référence.</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowEnd_ColSep">Construction non valide : aucun segment n’est égal à un aucun segment de référence.</td> - <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowEnd_ColSep">Construction valide : aucun segment à contrôler n’intersecte ni n’est contenu dans un segment de référence. </td> - <td class="TableStyle_Rows_Body_1_0_RowEnd_ColEnd"><span style="font-weight: normal;">Construction valide : la parcelle 1 n’est pas découpée par la zone d’analyse et est totalement incluse. </span> + <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowEnd_ColSep">Construction non valide : aucun vertex n’est égal à un aucun vertex de référence.</td> + <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowEnd_ColSep">Construction non valide : aucun segment n’est égal à un aucun segment de référence.</td> + <td style="font-weight: normal;text-align: left;" class="TableStyle_Rows_Body_1_0_RowEnd_ColSep">Construction valide : aucun segment à contrôler n’intersecte ni n’est contenu dans un segment de référence. </td> + <td class="TableStyle_Rows_Body_1_0_RowEnd_ColEnd"><span style="font-weight: normal;">Construction valide : la parcelle 1 n’est pas découpée par la zone d’analyse et est totalement incluse. </span> </td> </tr> </tbody> @@ -102,17 +102,17 @@ Une contrainte de construction permet de définir des règles de construction de ### Règle de validation des erreurs -Une règle de validation permet à Qualigéo de valider des erreurs de construction en fonction d’une règle définie par une fonction. +Une règle de validation permet à Qualigéo de valider des erreurs de construction en fonction d’une règle définie par une fonction. -Deux attributs **area_ref_ft** correspondant à la superficie du polygone de référence et **_area_ft**, correspondant à la superficie des polygones à contrôler permettent d’intégrer des règles relatives aux surfaces découpées. +Deux attributs **area_ref_ft** correspondant à la superficie du polygone de référence et **_area_ft**, correspondant à la superficie des polygones à contrôler permettent d’intégrer des règles relatives aux surfaces découpées. -Par exemple, une fonction peut être utilisée pour indiquer qu’une erreur doit être générée si la superficie des polygones découpés est inférieure à une valeur précise ou à un certain pourcentage de la superficie d’origine. +Par exemple, une fonction peut être utilisée pour indiquer qu’une erreur doit être générée si la superficie des polygones découpés est inférieure à une valeur précise ou à un certain pourcentage de la superficie d’origine. -L’exemple ci-dessous illustre le cas de découpage de parcelles (type d’entités de référence) par une zone urbaine (type d’entité à contrôler). La fonction ci-dessous indique que si la superficie des parcelles découpées est inférieure à 3% de la superficie totale de la parcelle d’origine ou si elle est inférieure à 2 m² alors aucune une erreur ne doit être générée. Au delà de 3% de la superficie totale ou supérieure à 2 m², une erreur de construction est donc détectée. +L’exemple ci-dessous illustre le cas de découpage de parcelles (type d’entités de référence) par une zone urbaine (type d’entité à contrôler). La fonction ci-dessous indique que si la superficie des parcelles découpées est inférieure à 3% de la superficie totale de la parcelle d’origine ou si elle est inférieure à 2 m² alors aucune une erreur ne doit être générée. Au delà de 3% de la superficie totale ou supérieure à 2 m², une erreur de construction est donc détectée.  -<table style="width: 100%;caption-side: top;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> +<table style="width: 100%;caption-side: top;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> <col style="width: 392px;" /> <col /> <tbody> @@ -124,28 +124,28 @@ L’exemple ci-dessous illustre le cas de découpage de parcelles (type d’ <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> <img src="..\_images/8_180x130.png" style="width: 180;height: 130;" /> </td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="font-weight: normal;">Construction valide : - de 3 % de la superficie de l’entité de référence est découpée et se trouve à l’extérieur de l’entité d’analyse.</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="font-weight: normal;">Construction valide : - de 3 % de la superficie de l’entité de référence est découpée et se trouve à l’extérieur de l’entité d’analyse.</td> </tr> <tr> <td class="TableStyle_Basic_Body_0_0_RowEnd_ColSep"> <img src="..\_images/9_179x101.png" style="width: 179;height: 101;" /> </td> - <td class="TableStyle_Basic_Body_0_0_RowEnd_ColEnd" style="font-weight: normal;">Construction non valide : + de 3 % de la superficie de l’entité de référence est découpée et se trouve à l’extérieur de l’entité d’analyse. </td> + <td class="TableStyle_Basic_Body_0_0_RowEnd_ColEnd" style="font-weight: normal;">Construction non valide : + de 3 % de la superficie de l’entité de référence est découpée et se trouve à l’extérieur de l’entité d’analyse. </td> </tr> </tbody> </table> -**NB** : les entités découpées se trouvant à l’intérieur de la zone d’analyse récupèrent l’ attributs \_area\_ft de cette dernière, en revanche les entités découpées se trouvant à l’extérieur de la zone ne le récupèrent pas. +**NB** : les entités découpées se trouvant à l’intérieur de la zone d’analyse récupèrent l’ attributs \_area\_ft de cette dernière, en revanche les entités découpées se trouvant à l’extérieur de la zone ne le récupèrent pas. -La fonction à saisir dans la règle de validation peut contenir n’importe quelle formule exploitable par le Transformer ExpressionEvaluator de FME et renvoyant les valeurs 0 (faux) ou 1 (vrai). +La fonction à saisir dans la règle de validation peut contenir n’importe quelle formule exploitable par le Transformer ExpressionEvaluator de FME et renvoyant les valeurs 0 (faux) ou 1 (vrai). #### Fonctions communément utilisées -@Area(1) : renvoie la superficie de l’objet +@Area(1) : renvoie la superficie de l’objet -@Length(2,1) : renvoie le périmètre de l’objet +@Length(2,1) : renvoie le périmètre de l’objet -@Value(attr) : renvoie la valeur de l’attribut "attr" +@Value(attr) : renvoie la valeur de l’attribut "attr" Attention, une erreur dans la formule risque de produire une erreur irrécupérable qui empêchera la réalisation du contrôle. @@ -153,4 +153,4 @@ outes les fonctions disponibles sont décrites dans le document de référence : #### Utiliser la précision comme tolérance -Pour permettre la comparaison stricte des géométries et tenir compte d’écarts minimes dus au format de stockage ou à la reprojection, il convient d’utiliser la précision comme tolérance pour ne pas considérer comme des erreurs les décalages observés inférieurs à cette dernière. +Pour permettre la comparaison stricte des géométries et tenir compte d’écarts minimes dus au format de stockage ou à la reprojection, il convient d’utiliser la précision comme tolérance pour ne pas considérer comme des erreurs les décalages observés inférieurs à cette dernière. diff --git a/04-ContraintesRessources/03.04.ValidationGeometrique.md b/04-ContraintesRessources/03.04.ValidationGeometrique.md index 7e3e021..e7b7022 100644 --- a/04-ContraintesRessources/03.04.ValidationGeometrique.md +++ b/04-ContraintesRessources/03.04.ValidationGeometrique.md @@ -1,6 +1,6 @@ ## Validation de la géométrie -Qualigéo permet la spécification et le contrôle de la géométrie des types d’entités. Ce contrôle est basé sur l’utilisation du Transformer GeometryValidator de FME. Ce dernier effectue les contrôles de validité selon les spécifications de l’OGC (simple ou valide), et/ ou selon des critères géométriques sélectionnés en paramètres. +Qualigéo permet la spécification et le contrôle de la géométrie des types d’entités. Ce contrôle est basé sur l’utilisation du Transformer GeometryValidator de FME. Ce dernier effectue les contrôles de validité selon les spécifications de l’OGC (simple ou valide), et/ ou selon des critères géométriques sélectionnés en paramètres. ### Critères de validation de la géométrie @@ -158,7 +158,7 @@ Mauvaise orientation des normales de surface Contraintes OGC -La validation d’une géométrie peut également se faire selon deux normes OGC distinctes : +La validation d’une géométrie peut également se faire selon deux normes OGC distinctes : * La librairie OGC simple * La libairie OGC Valide @@ -171,7 +171,7 @@ La contrainte OGC simple regroupe les 3 contraintes : La contrainte OGC valide regroupes les contraintes : -* Trou à l’extérieur - 2: Hole Outside Shell (trou à l’extérieur) +* Trou à l’extérieur - 2: Hole Outside Shell (trou à l’extérieur) * Trous imbriqués - 3: Nested Holes (trous imbriqués) * Intérieur déconnecté 4: Disconnected Interior (intérieur déconnecté) * Anneau auto intersecté 6: Ring Self Intersection (anneau auto-intersecté) @@ -184,7 +184,7 @@ La contrainte OGC valide regroupes les contraintes : #### Exemple de polygones et contraintes OGC -<table style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> +<table style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> <col style="width: 178px;" /> <col style="width: 355px;" /> <col style="width: 110px;" /> @@ -259,7 +259,7 @@ La contrainte OGC valide regroupes les contraintes : <tr> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;font-size: 10pt;">OGC Valide</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;font-size: 10pt;"> - <p><span style="font-size: 10pt;">Fails OGC Valid / Hole Outside Shell. Trou à l’extérieur de l’enveloppe.</span> + <p><span style="font-size: 10pt;">Fails OGC Valid / Hole Outside Shell. Trou à l’extérieur de l’enveloppe.</span> </p> </td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;font-size: 10pt;"><a name="E0020"></a>E0020</td> diff --git a/04-ContraintesRessources/03.05.PrecisionTolerance.md b/04-ContraintesRessources/03.05.PrecisionTolerance.md index 7d95eb6..87a4afd 100644 --- a/04-ContraintesRessources/03.05.PrecisionTolerance.md +++ b/04-ContraintesRessources/03.05.PrecisionTolerance.md @@ -1,23 +1,23 @@ ## Précision/Tolérance et relations spatiales dans Qualigéo -La précision et la tolérance sont exploitées pour assurer la vérification de contraintes de relations spatiales et de construction. La précision opère un arrondi sur les coordonnées des entités, alors que la tolérance permet la création d’une zone tampon sur les entités de référence afin d’ignorer ou accepter des erreurs éventuelles des digitalisation. +La précision et la tolérance sont exploitées pour assurer la vérification de contraintes de relations spatiales et de construction. La précision opère un arrondi sur les coordonnées des entités, alors que la tolérance permet la création d’une zone tampon sur les entités de référence afin d’ignorer ou accepter des erreurs éventuelles des digitalisation. ### Précision et relation spatiale -La précision détermine la précision de stockage des coordonnées des entités. Elle permet d’ignorer des écarts minimes dus au format de stockage des données. +La précision détermine la précision de stockage des coordonnées des entités. Elle permet d’ignorer des écarts minimes dus au format de stockage des données. -Par exemple, dans le cas de données en Lambert, une précision de 1 correspond à une précision décimétrique c’est à dire que les coordonnées sont arrondies à un chiffre après la virgule. Une précision de 2 correspond à une précision centimétrique et ainsi de suite. Aucun arrondi n’est effectué si aucune précision n’est paramétrée (précision =0). +Par exemple, dans le cas de données en Lambert, une précision de 1 correspond à une précision décimétrique c’est à dire que les coordonnées sont arrondies à un chiffre après la virgule. Une précision de 2 correspond à une précision centimétrique et ainsi de suite. Aucun arrondi n’est effectué si aucune précision n’est paramétrée (précision =0). #### Exemple -L’exemple ci-dessous présente le point 1 et le point 2 : +L’exemple ci-dessous présente le point 1 et le point 2 : * **Point 1 (1,1221111 1,1221111)** * **Point 2 (1,131515 1,1351515)** -Dans le cas d’une précision décimétrique, ces deux points sont identiques, alors que dans le cas d’une précision centimétriques, ces derniers sont distincts. +Dans le cas d’une précision décimétrique, ces deux points sont identiques, alors que dans le cas d’une précision centimétriques, ces derniers sont distincts. -<table style="width: 100%;border-left-style: solid;border-left-width: 1px;border-right-style: solid;border-right-width: 1px;border-top-style: solid;border-top-width: 1px;border-bottom-style: solid;border-bottom-width: 1px;margin-left: 0;margin-right: auto;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> +<table style="width: 100%;border-left-style: solid;border-left-width: 1px;border-right-style: solid;border-right-width: 1px;border-top-style: solid;border-top-width: 1px;border-bottom-style: solid;border-bottom-width: 1px;margin-left: 0;margin-right: auto;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> <col style="width: 85px;" /> <col style="width: 293px;" /> <col style="width: 33%;" /> @@ -68,11 +68,11 @@ Dans le cas d’une précision décimétrique, ces deux points sont identiqu ### Tolérance et relation spatiale -Exprimée en unité terrain, la tolérance permet d’ignorer des erreurs en créant une zone tampon (positive ou négative) sur le type d’entité de référence. Le type d’entités à contrôler peut ainsi valider la contrainte de relation spatiale de type "A l’intérieur" qu’il n’aurait pas satisfait sans l’agrandissement ou le rétrécissement opéré par la tolérance. +Exprimée en unité terrain, la tolérance permet d’ignorer des erreurs en créant une zone tampon (positive ou négative) sur le type d’entité de référence. Le type d’entités à contrôler peut ainsi valider la contrainte de relation spatiale de type "A l’intérieur" qu’il n’aurait pas satisfait sans l’agrandissement ou le rétrécissement opéré par la tolérance. #### Exemple -Un BATIMENT doit toujours être à l’intérieur d’une PARCELLE. Il est nécessaire de définir une tolérance afin d’ignorer l’erreur de digitalisation illustrée ci-dessous. Via la tolérance, les décalages observés sont acceptés et aucune erreur n’est générée. La tolérance est opérée sur les types d’entités de référence et est exprimée en unité terrain. +Un BATIMENT doit toujours être à l’intérieur d’une PARCELLE. Il est nécessaire de définir une tolérance afin d’ignorer l’erreur de digitalisation illustrée ci-dessous. Via la tolérance, les décalages observés sont acceptés et aucune erreur n’est générée. La tolérance est opérée sur les types d’entités de référence et est exprimée en unité terrain.  @@ -80,11 +80,11 @@ Ce cas de figure ne sera pas considéré comme une erreur si une tolérance de 0 ### Tolérance et contrainte de construction -La tolérance peut être exploitée pour vérifier la règle de construction "Appui sur segment ou partie de segment" (tous les segments du type d’entité à contrôler ne doivent pas croiser ou être contenus dans le type d’entité de référence). En effectuant une zone tampon sur l’entité de référence, une erreur de construction est générée pour chaque segment de l’ entité qui intersecte la référence agrandie par la zone tampon. +La tolérance peut être exploitée pour vérifier la règle de construction "Appui sur segment ou partie de segment" (tous les segments du type d’entité à contrôler ne doivent pas croiser ou être contenus dans le type d’entité de référence). En effectuant une zone tampon sur l’entité de référence, une erreur de construction est générée pour chaque segment de l’ entité qui intersecte la référence agrandie par la zone tampon. #### Exemple -<table style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> +<table style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> <col style="width: 317px;" /> <col /> <tbody> diff --git a/04-ContraintesRessources/03.06.MatriceRelationsSpatiales.md b/04-ContraintesRessources/03.06.MatriceRelationsSpatiales.md index 0b2391c..eccdc7f 100644 --- a/04-ContraintesRessources/03.06.MatriceRelationsSpatiales.md +++ b/04-ContraintesRessources/03.06.MatriceRelationsSpatiales.md @@ -238,7 +238,7 @@ Le tableau ci-dessous liste les différentes relations possibles entre deux enti </td> </tr> <tr> - <td rowspan="3" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><a name="kanchor25"></a><a name="operateur_interieur"></a>A l’intérieur</td> + <td rowspan="3" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><a name="kanchor25"></a><a name="operateur_interieur"></a>A l’intérieur</td> <td style="text-align: center;" class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> <img src="..\_images/pointBase_91x91.png" style="width: 91;height: 91;" /> </td> diff --git a/04-ContraintesRessources/03.07.Contraintes_topologiques.md b/04-ContraintesRessources/03.07.Contraintes_topologiques.md index ec79178..a934c8a 100644 --- a/04-ContraintesRessources/03.07.Contraintes_topologiques.md +++ b/04-ContraintesRessources/03.07.Contraintes_topologiques.md @@ -6,9 +6,9 @@ Le formulaire **caractéristiques de la contrainte topologique** permet de spéc La **<a name="kanchor49"></a>tesselation** met en avant les trous et chevauchements dans un jeu de données. La contrainte de tesselation [Laurini et Milleret-Raffort 1993] correspond à la partition totale d’un territoire par des polygones, sans espace ni chevauchement. La tesselation (ou mosaïque) est synonyme de couverture planaire. Les tuilages ou dallages sont des tesselations de motif régulier (rectangulaire en général). -La contrainte de tesselation de Qualigéo accepte que l’espace soit constituée d’éléments non connexes, totalement disjoints, comme des îles. +La contrainte de tesselation de Qualigéo accepte que l’espace soit constituée d’éléments non connexes, totalement disjoints, comme des îles. -Dans Qualigéo, une contrainte de tesselation interdit donc le chevauchement de polygones ou la présence d’espaces fermées non remplis. +Dans Qualigéo, une contrainte de tesselation interdit donc le chevauchement de polygones ou la présence d’espaces fermées non remplis. Les trous dans les polygones sont acceptés si ces trous sont remplis par un autre polygone. <table> <col style="width: 353px;"></colgroup> @@ -51,7 +51,7 @@ Les trous dans les polygones sont acceptés si ces trous sont remplis par un aut <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep"><img src="..\_images/casfigure4.png"></td> -<td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Tesselation non valide : création d’un espace vide. 1 erreur générée</td> +<td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Tesselation non valide : création d’un espace vide. 1 erreur générée</td> </tr> @@ -77,7 +77,7 @@ Les trous dans les polygones sont acceptés si ces trous sont remplis par un aut ## Attributs de regroupement et contrainte topologique -Le paramètre **Attributs de regroupement** permet de regrouper les entités à tester en les divisant en groupes en fonction des valeurs d’un attribut. Le contrôle est effectué sur les entités ayant les mêmes valeurs d’attribut de regroupement. Deux entités superposées ayant des valeurs d’attributs différentes ne génèrent donc pas d’erreur, le contrôle n’est pas effectué. Deux entités se chevauchant avec la même valeur d’attribut de regroupement produiront une erreur lors du contrôle. +Le paramètre **Attributs de regroupement** permet de regrouper les entités à tester en les divisant en groupes en fonction des valeurs d’un attribut. Le contrôle est effectué sur les entités ayant les mêmes valeurs d’attribut de regroupement. Deux entités superposées ayant des valeurs d’attributs différentes ne génèrent donc pas d’erreur, le contrôle n’est pas effectué. Deux entités se chevauchant avec la même valeur d’attribut de regroupement produiront une erreur lors du contrôle.  @@ -89,7 +89,7 @@ Dans l’exemple ci-dessus, si l’attribut de regroupement est TYPEZONE, alors Une règle de validation permet à l’application de valider des erreurs de tesselation. Ne sont considérés comme en erreur que les objets qui respectent la règle de validation. -Les exemples ci-dessous illustrent le cas de chevauchements et trous entre deux polygones. La règle de validation définie indique à Qualigéo qu’une erreur doit être générée si la superficie des espaces et chevauchements est inférieure à 1m². +Les exemples ci-dessous illustrent le cas de chevauchements et trous entre deux polygones. La règle de validation définie indique à Qualigéo qu’une erreur doit être générée si la superficie des espaces et chevauchements est inférieure à 1m².  @@ -97,7 +97,7 @@ Les exemples ci-dessous illustrent le cas de chevauchements et trous entre deux Exemple : -<table style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url('../Resources/TableStyles/Basic.css');" class="TableStyle_Basic" cellspacing="0"><colgroup><col> <col> <col> <col></colgroup> +<table style="width: 100%;margin-left: 0;margin-right: auto;mc-table-style: url(’../Resources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"><colgroup><col> <col> <col> <col></colgroup> <tbody> @@ -121,7 +121,7 @@ Exemple : <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Erreur E0014</td> -<td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Pas d’erreur</td> +<td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Pas d’erreur</td> </tr> @@ -131,7 +131,7 @@ Exemple : <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Erreur E0014</td> -<td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Pas d’erreur</td> +<td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Pas d’erreur</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Erreur E0014</td> @@ -145,7 +145,7 @@ Exemple : <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep">Erreur E0015</td> -<td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Pas d’erreur</td> +<td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd">Pas d’erreur</td> </tr> @@ -155,7 +155,7 @@ Exemple : <td class="TableStyle_Basic_Body_0_0_RowEnd_ColSep">Erreur E0015</td> -<td class="TableStyle_Basic_Body_0_0_RowEnd_ColSep">Pas d’erreur</td> +<td class="TableStyle_Basic_Body_0_0_RowEnd_ColSep">Pas d’erreur</td> <td class="TableStyle_Basic_Body_0_0_RowEnd_ColEnd">Erreur E0015</td> @@ -167,15 +167,15 @@ Exemple : La règle de validation correspond ainsi à une tolérance à partir de laquelle une erreur doit être retournée. Elle permet de passer outre des erreurs topologiques mineures ou au contraire des objets importants tels que des lacs ou la cour intérieure des immeubles. -La fonction à saisir dans la règle de validation peut contenir n’importe quelle formule exploitable par le Transformer ExpressionEvaluator de FME et renvoyant les valeurs 0 (faux) ou 1 (vrai). +La fonction à saisir dans la règle de validation peut contenir n’importe quelle formule exploitable par le Transformer ExpressionEvaluator de FME et renvoyant les valeurs 0 (faux) ou 1 (vrai). **Fonctions communément utilisées :** -* @Area(1) : renvoie la superficie de l’objet +* @Area(1) : renvoie la superficie de l’objet -* @Length(2,1) : renvoie le périmètre de l’objet +* @Length(2,1) : renvoie le périmètre de l’objet -* @Value(attr) : renvoie la valeur de l’attribut "attr" +* @Value(attr) : renvoie la valeur de l’attribut "attr" Attention, une erreur dans la formule risque de produire une erreur irrécupérable qui empêchera la réalisation du contrôle. diff --git a/04-ContraintesRessources/04.LangagesDefinition.md b/04-ContraintesRessources/04.LangagesDefinition.md index 6bb93c7..c6d0700 100644 --- a/04-ContraintesRessources/04.LangagesDefinition.md +++ b/04-ContraintesRessources/04.LangagesDefinition.md @@ -1,6 +1,6 @@ # Langages de définition de contraintes spécifiques -Lorsqu’un contrôle spécialisé est nécessaire, des scripts peuvent permettent de définir des contraintes complexes sur des jeux de données, des types d’entités ou des attributs. Par exemple, un contrôle de relations entre attributs ou un contrôle de présence d’attributs en cascade peuvent être assurés par de tels scripts. +Lorsqu’un contrôle spécialisé est nécessaire, des scripts peuvent permettent de définir des contraintes complexes sur des jeux de données, des types d’entités ou des attributs. Par exemple, un contrôle de relations entre attributs ou un contrôle de présence d’attributs en cascade peuvent être assurés par de tels scripts. Deux langages sont exploitables dans Qualigéo : @@ -9,9 +9,9 @@ Deux langages sont exploitables dans Qualigéo : ## Code Python -Un script Python est exécuté dans FME via le Transformer PythonCaller. La documentation de référence est donc celle du transformer PythonCaller et de la fonction @Python(). Pour consulter l’intégralité de la documentation de l’API, naviguez jusqu’au dossier d’installation de FME et allez à l’emplacement fmeobjects\python\apidoc\index.html. +Un script Python est exécuté dans FME via le Transformer PythonCaller. La documentation de référence est donc celle du transformer PythonCaller et de la fonction @Python(). Pour consulter l’intégralité de la documentation de l’API, naviguez jusqu’au dossier d’installation de FME et allez à l’emplacement fmeobjects\python\apidoc\index.html. -L’accès aux attributs, géométries et systèmes de coordonnées se fait via des objets Python. +L’accès aux attributs, géométries et systèmes de coordonnées se fait via des objets Python. Les contraintes spécifiques sur les entités écrites en langage Python doivent être définies sous forme de fonctions. @@ -36,7 +36,7 @@ Les fonctions Python utilisées pour spécifier des contraintes doivent impléme <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;">params</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;">array</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;font-weight: normal;"> - <p>Facultatif. Tableau des paramètres passés par l’utilisateur. </p> + <p>Facultatif. Tableau des paramètres passés par l’utilisateur. </p> <p> Ce tableau peut être vide.</p> </td> @@ -45,7 +45,7 @@ Les fonctions Python utilisées pour spécifier des contraintes doivent impléme #### Résultat -<table style="mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> +<table style="mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> <col style="width: 197px;" /> <col style="width: 242px;" /> <col style="width: 800px;" /> @@ -57,13 +57,13 @@ Les fonctions Python utilisées pour spécifier des contraintes doivent impléme <tr> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;">_error</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;">int [0|1]</td> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;font-weight: normal;">La fonction doit retourner 1 si l’entité est en erreur ou 0 dans le cas inverse. </td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;font-weight: normal;">La fonction doit retourner 1 si l’entité est en erreur ou 0 dans le cas inverse. </td> </tr> <tr> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;">_message</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="font-weight: normal;">string xx</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;font-weight: normal;"> - <p>Si _error=1 la variable _message doit contenir le message d’erreur qui sera associé à l’erreur dans la table "erreur" de la base de contrôle de Qualigéo.</p> + <p>Si _error=1 la variable _message doit contenir le message d’erreur qui sera associé à l’erreur dans la table "erreur" de la base de contrôle de Qualigéo.</p> <p> Peut être vide.</p> </td> </tr> @@ -71,7 +71,7 @@ Les fonctions Python utilisées pour spécifier des contraintes doivent impléme ### Ecriture du code - Le début de chaque script doit commencer par 8 lignes d’appel des librairies suivantes : + Le début de chaque script doit commencer par 8 lignes d’appel des librairies suivantes : # IMPORT LIBRAIRIES @@ -93,9 +93,9 @@ Les fonctions Python utilisées pour spécifier des contraintes doivent impléme #coding : latin-1</span> -Il est fortement conseillé d’utiliser l’utf-8 pour pouvoir gérer les accents. +Il est fortement conseillé d’utiliser l’utf-8 pour pouvoir gérer les accents. -L’appel de la librairie fmeobject permet l’utilisation de la classe Python de FME donnant accès aux fonctions FME, décrites dans l’API. La fonction est ensuite nommée et décrite. +L’appel de la librairie fmeobject permet l’utilisation de la classe Python de FME donnant accès aux fonctions FME, décrites dans l’API. La fonction est ensuite nommée et décrite. ### Exemple de script python @@ -119,51 +119,51 @@ L’appel de la librairie fmeobject permet l’utilisation de la classe def verif_SIREN(feature): - # variable SIREN correspondant a l’attribut SIREN de la table DOC_URBA + # variable SIREN correspondant a l’attribut SIREN de la table DOC_URBA SIREN = feature.getAttribute("SIREN") - # variable INTERCO correspondant a l’attribut INTERCO de la table DOC_URBA + # variable INTERCO correspondant a l’attribut INTERCO de la table DOC_URBA INTERCO = feature.getAttribute("INTERCO") # condition non autorisee - if (SIREN == "" and INTERCO ==’T’): + if (SIREN == "" and INTERCO ==’T’): # message d erreur si cette condition a lieue _error = 1 - _message = "Valeur SIREN obligatoire si l’autorité publique est une intercommunalité" + _message = "Valeur SIREN obligatoire si l’autorité publique est une intercommunalité" return _error, _message else : - # pas d erreur si la condition non autorisée n’a pas lieue + # pas d erreur si la condition non autorisée n’a pas lieue _error = 0 - _message = ’’ + _message = ’’ return _error, _message __ -Après l’appel des bibliothèques, un nom est donnée à la fonction : "verifSIREN". +Après l’appel des bibliothèques, un nom est donnée à la fonction : "verifSIREN". 2 variables sont ensuite créées, relatives à la table DOC_URBA : -* SIREN qui récupère l’attribut SIREN -* INTERCO qui récupère l’attribut INTERCO +* SIREN qui récupère l’attribut SIREN +* INTERCO qui récupère l’attribut INTERCO -Si le code SIREN est égale à Null et si l’attribut INTERCO est égale à T, alors le message "1, Valeur SIREN obligatoire si l’autorité publique est une intercommunalité" est retourné, sinon aucun message n’est retourné. +Si le code SIREN est égale à Null et si l’attribut INTERCO est égale à T, alors le message "1, Valeur SIREN obligatoire si l’autorité publique est une intercommunalité" est retourné, sinon aucun message n’est retourné. ### Log -Il est possible d’écrire des informations dans le fichier de log des contrôles de Qualigéo en instanciant un objet de la classe FMELogfile de la librairie fmeobjects. +Il est possible d’écrire des informations dans le fichier de log des contrôles de Qualigéo en instanciant un objet de la classe FMELogfile de la librairie fmeobjects. -<table style="mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> +<table style="mc-table-style: url(’../Ressources/TableStyles/Basic.css’);" class="TableStyle_Basic" cellspacing="0"> <col style="width: 400px;" /> <col style="width: 84px;" /> <col style="width: 475px;" /> @@ -178,7 +178,7 @@ Il est possible d’écrire des informations dans le fichier de log des cont <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Retourne un objet de la classe FMELogfile. Cet objet peut être utilisé pour insérer des messages dans le fichier de log du contrôle Qualigéo.</td> </tr> <tr> - <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="text-align: left;">fmeobjects. FMELogfile().log(’string’)</td> + <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep" style="text-align: left;">fmeobjects. FMELogfile().log(’string’)</td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColSep"> </td> <td class="TableStyle_Basic_Body_0_0_RowSep_ColEnd" style="text-align: left;">Ecrit la chaîne string dans le fichier de log du contrôle Qualigéo.</td> </tr> @@ -190,21 +190,21 @@ La librairie fmeobjects donne également accès aux fonctions FME de bas niveau,  Attention à respecter la casse du nom de fonction._ - Les apostrophes doivent être précédées d’un \ lors de la création d’une chaîne de caractères, aussi bien dans le code python que dans la définition de la contrainte dans Qualigéo Designer._ + Les apostrophes doivent être précédées d’un \ lors de la création d’une chaîne de caractères, aussi bien dans le code python que dans la définition de la contrainte dans Qualigéo Designer._ -### Erreurs d’exécution/deboggage +### Erreurs d’exécution/deboggage -La gestion de l’exécution du code python est robuste mais il demeure impossible de récupérer toutes les erreurs. +La gestion de l’exécution du code python est robuste mais il demeure impossible de récupérer toutes les erreurs. #### Erreur grave -Si le script python contient une erreur grave non récupérable, le contrôle s’arrête et son statut passe en "Erreur". +Si le script python contient une erreur grave non récupérable, le contrôle s’arrête et son statut passe en "Erreur". -Il faut alors consulter le fichier de log <Qualigeo>/Log/control.log pour identifier l’origine du problème. +Il faut alors consulter le fichier de log <Qualigeo>/Log/control.log pour identifier l’origine du problème. #### Erreur récupérable -Si l’erreur est récupérable, le script continue mais une erreur Qualigéo de type E0046 " Erreur de codage de la contrainte python sur l’entité " est inscrite dans la base des erreurs. La cause de l’erreur est décrite dans le champ message, par exemple " global name ’INSEE_DEPT’ is not defined " +Si l’erreur est récupérable, le script continue mais une erreur Qualigéo de type E0046 " Erreur de codage de la contrainte python sur l’entité " est inscrite dans la base des erreurs. La cause de l’erreur est décrite dans le champ message, par exemple " global name ’INSEE_DEPT’ is not defined " ==> Erreurs retournées : E0046 @@ -214,13 +214,13 @@ Lorsque le traitement arrive à son terme, le log correspondant est disponible d #### Deboggage -Nous conseillons d’utiliser l’objet Logger pour inscrire des informations dans le fichier de log. Attention, ces messages sont rapidement très volumineux et il est conseillé de les passer en commentaire en phase de production. +Nous conseillons d’utiliser l’objet Logger pour inscrire des informations dans le fichier de log. Attention, ces messages sont rapidement très volumineux et il est conseillé de les passer en commentaire en phase de production. -Pour diminuer les temps de test, il peut être intéressant de créer un schéma spécifique ne servant qu’à la validation du code python. De même, il est souvent utile de travailler sur un jeu de données réduit. +Pour diminuer les temps de test, il peut être intéressant de créer un schéma spécifique ne servant qu’à la validation du code python. De même, il est souvent utile de travailler sur un jeu de données réduit. -Attention, à l’indentation. Python demande un respect très strict de l’indentation, un espace en trop peut générer une erreur. Nous conseillons donc d’utiliser un un éditeur Python ou un éditeur de texte avec coloration syntaxique (Notepad++, Textpad). +Attention, à l’indentation. Python demande un respect très strict de l’indentation, un espace en trop peut générer une erreur. Nous conseillons donc d’utiliser un un éditeur Python ou un éditeur de texte avec coloration syntaxique (Notepad++, Textpad). - Il est également possible de travailler directement dans FME en utilisant le Transformer PythonCaller. C’est sans doute la solution la plus performante en phase de test car elle permet de contrôler très rapidement le code, les messages retournés tout en fournissant un éditeur de texte convivial. + Il est également possible de travailler directement dans FME en utilisant le Transformer PythonCaller. C’est sans doute la solution la plus performante en phase de test car elle permet de contrôler très rapidement le code, les messages retournés tout en fournissant un éditeur de texte convivial. --- @@ -228,7 +228,7 @@ Pour diminuer les temps de test, il peut être intéressant de créer un schéma Les contraintes spécifiques sur les entités écrites avec le langage fme evaluate retournent des valeurs arithmétiques ou booléenes. -Pour définir des fonctions fme, il est possible de faire appel à d’autres fonctions FME ou des fonctions arithmétiques. +Pour définir des fonctions fme, il est possible de faire appel à d’autres fonctions FME ou des fonctions arithmétiques. Ces fonctions possèdent la même structure que la fonction FME @Evaluate. @@ -244,12 +244,12 @@ Les fonctions disponibles sont décrite dans le document « FME functions and fa ### Erreur grave -Si la fonction fme contient une erreur grave non récupérable, le contrôle s’arrête et son statut passe en "Erreur". +Si la fonction fme contient une erreur grave non récupérable, le contrôle s’arrête et son statut passe en "Erreur". -Il faut alors consulter le fichier de log <Qualigeo>/Log/control.log pour identifier l’origine du problème. +Il faut alors consulter le fichier de log <Qualigeo>/Log/control.log pour identifier l’origine du problème. Lorsque le traitement arrive à son terme, le log correspondant est disponible dans la fenêtre Analyse.  -Il est également possible de travailler directement dans FME en utilisant le transformer FMEFunctionCaller. Il faut ensuite faire appel à la fonction @Evaluate dans laquelle on saisit le code à tester. C’est sans doute la solution la plus performante car elle permet des tests très rapides et offre un bon éditeur de texte. \ No newline at end of file +Il est également possible de travailler directement dans FME en utilisant le transformer FMEFunctionCaller. Il faut ensuite faire appel à la fonction @Evaluate dans laquelle on saisit le code à tester. C’est sans doute la solution la plus performante car elle permet des tests très rapides et offre un bon éditeur de texte. \ No newline at end of file diff --git a/04-ContraintesRessources/05.01.DefinirContraintesREGEX.md b/04-ContraintesRessources/05.01.DefinirContraintesREGEX.md index 9a6ffd5..56e5647 100644 --- a/04-ContraintesRessources/05.01.DefinirContraintesREGEX.md +++ b/04-ContraintesRessources/05.01.DefinirContraintesREGEX.md @@ -2,29 +2,29 @@ Dans Qualigéo le test données se fait avec la bibliothèque re en python2.7 ([https://docs.python.org/2/library/re.html](https://docs.python.org/2/library/re.html)) -Une expression régulière est une chaîne de caractères appelée parfois motif (pattern en anglais) qui décrit un ensemble de chaînes de caractères possibles selon une syntaxe précise pour la trouver dans un bloc de texte et éventuellement lui appliquer un traitement automatisé comme un ajout, un remplacement ou une suppression. Elles permettent l’édition et le contrôle de texte ainsi que la manipulation de langages informatiques. +Une expression régulière est une chaîne de caractères appelée parfois motif (pattern en anglais) qui décrit un ensemble de chaînes de caractères possibles selon une syntaxe précise pour la trouver dans un bloc de texte et éventuellement lui appliquer un traitement automatisé comme un ajout, un remplacement ou une suppression. Elles permettent l’édition et le contrôle de texte ainsi que la manipulation de langages informatiques. Les mécanismes de base pour former de telles expressions sont basés sur des caractères spéciaux de regroupement, de quantification et de substitution : ## Les opérateurs standards -* Une barre verticale <span style="color: #943a99;">|</span> est l’opérateur de choix, il sépare plusieurs expressions alternatives, il peut donc être combiné autant de fois que nécessaire. C’est donc le symbole "OU" . Par exemple : numero|num|numéro, signifie que l’on recherche soit le mot "numero" soit le mot "num", soit le mot "numéro". +* Une barre verticale <span style="color: #943a99;">|</span> est l’opérateur de choix, il sépare plusieurs expressions alternatives, il peut donc être combiné autant de fois que nécessaire. C’est donc le symbole "OU" . Par exemple : numero|num|numéro, signifie que l’on recherche soit le mot "numero" soit le mot "num", soit le mot "numéro". -* L’accent circonflexe <span style="color: #943a99; font-weight: bold;">^</span> indique le début d’une chaîne. ^num représente le mot "num" en début de ligne. +* L’accent circonflexe <span style="color: #943a99; font-weight: bold;">^</span> indique le début d’une chaîne. ^num représente le mot "num" en début de ligne. -* Le dollar <span style="color: #943a99; font-weight: bold;">$</span> indique la fin d’une chaîne : ^num$ représente alors le mot "num" sur une seule ligne. +* Le dollar <span style="color: #943a99; font-weight: bold;">$</span> indique la fin d’une chaîne : ^num$ représente alors le mot "num" sur une seule ligne. ## Les classes de caractères -Une classe de caractères se placent entre crochets <span style="color: #943a99;font-weight: bold;">[]</span> : un des éléments à l’intérieur des crochets convient. Une classe de caractère fait donc correspondre un seul des caractères compris dans les crochets. +Une classe de caractères se placent entre crochets <span style="color: #943a99;font-weight: bold;">[]</span> : un des éléments à l’intérieur des crochets convient. Une classe de caractère fait donc correspondre un seul des caractères compris dans les crochets. Par exemple, [nm] trouve dans le mot numéro "n" ou "m". ## Les intervalles de classes -* Le tiret <span style="color: #943a99;font-weight: bold;">-</span> autorise une plage de caractères. Ainsi [a-z] autorise n’importe quelle lettre de a à z. [0-9] autorise un chiffre entre 0 et 9. [1-8] correspond à un chiffre entre 1 et 8. +* Le tiret <span style="color: #943a99;font-weight: bold;">-</span> autorise une plage de caractères. Ainsi [a-z] autorise n’importe quelle lettre de a à z. [0-9] autorise un chiffre entre 0 et 9. [1-8] correspond à un chiffre entre 1 et 8. -* L’accent circonflexe au début d’une intervalle de classe **[^ ]** permet d’exclure un caractère en début de classe . Par exemple [^0-9] signifie que la chaîne comporte un caractère qui n’est pas un chiffre. +* L’accent circonflexe au début d’une intervalle de classe **[^ ]** permet d’exclure un caractère en début de classe . Par exemple [^0-9] signifie que la chaîne comporte un caractère qui n’est pas un chiffre. ## Les quantificateurs @@ -34,13 +34,13 @@ Les quantificateurs permettent de spécifier le nombre de fois que peut se rép <span style="color: #943a99; font-weight: bold;">+</span>indique que le caractère qui le précède est obligatoire , il peut donc être présent 1 ou plusieurs fois -<span style="color: #943a99; font-weight: normal;">\*</span> indique que la caractère qui le précède est facultatif et qu’il peut être présent 0, 1 ou plusieurs fois. +<span style="color: #943a99; font-weight: normal;">\*</span> indique que la caractère qui le précède est facultatif et qu’il peut être présent 0, 1 ou plusieurs fois. Pour indiquer que les quantificateurs sont relatifs à plusieurs caractères et non pas au seul caractère le précédent, il faut placer ces derniers entre parenthèses <span style="color: #943a99; font-weight: normal;">()</span>. ## Les quantificateurs bornés -Les accolades **{}** permettent de spécifier des quantificateurs bornés et spécifier ainsi le nombre de fois qu’un caractère ou groupe de caractères se répètent. +Les accolades **{}** permettent de spécifier des quantificateurs bornés et spécifier ainsi le nombre de fois qu’un caractère ou groupe de caractères se répètent. Le quantificateur borné permet de faire correspondre exactement de m à n occurences de ce qui précède, m et n étant deux entiers tels que m < n. Si le premier caractère m est omis, alors il prend la valeur par défaut 0\. Si le deuxième caractère est omis mais que la virgule est présente, il est considéré comme infini. Enfin si le deuxième caractère et la virgule sont omis, alors il prend la valeur du premier caractère m. @@ -48,7 +48,7 @@ Ainsi, {2} indique que le caractère ou groupe de caractères se répètent 2 fo {3,5} indique que le caractère ou groupe de caractères se répètent 3 à 5 fois. -et {3,} indique que le caractère ou groupe de caractères se répètent au minimum 3 fois et ce jusqu’à l’infini. +et {3,} indique que le caractère ou groupe de caractères se répètent au minimum 3 fois et ce jusqu’à l’infini. Donc, le quantificateur ? correspond à écrire {0,1} @@ -56,11 +56,11 @@ Le quantificateur + correspond à écrire {1,} Et le quantificateur * correspond à écrire {0,} -## Les séquences d’échappement +## Les séquences d’échappement -Les caractères **.()[]*+?$|?\** sont utilisés par les expressions régulières pour spécifier les chaînes de caractères à apparier, mais, ils doivent aussi pouvoir désigner littéralement le caractère correspondant. Pour cela, il faut les "échappés" par des séquences d’échappement. Ceci se fait en les précédant d’un <span style="color: #943a99; font-weight: bold;">\</span>. +Les caractères **.()[]*+?$|?\** sont utilisés par les expressions régulières pour spécifier les chaînes de caractères à apparier, mais, ils doivent aussi pouvoir désigner littéralement le caractère correspondant. Pour cela, il faut les "échappés" par des séquences d’échappement. Ceci se fait en les précédant d’un <span style="color: #943a99; font-weight: bold;">\</span>. -<span style="font-weight: normal;">Au sein d’une classe de caractères, le caractère d’échappement n’est pas nécessaire. La recherche du caractère **-** doit alors être spécifié en début ou fin de la classe pour ne pas être confondu avec une intervalle de classe.</span> +<span style="font-weight: normal;">Au sein d’une classe de caractères, le caractère d’échappement n’est pas nécessaire. La recherche du caractère **-** doit alors être spécifié en début ou fin de la classe pour ne pas être confondu avec une intervalle de classe.</span> ## Les classes abrégées (POSIX)** @@ -72,15 +72,15 @@ Les classes abrégés correspondent à des raccourcis, pour simplifier la rédac * **\w** correspond à une lettre non accentué ou à un chiffre et équivaut à [a-zA-Z0-9_ * <span style="color: #943a99; font-weight: bold;">\W</span> correspond à ni une lettre ni un chiffre ( équivaut à ([^0-9a-zA-Z]) * **\d** correspond à un chiffre et est équivalent à [0-9] -* **\D** indique ce qui n’est pas un chiffre et équivont donc à écrire [^0-9] +* **\D** indique ce qui n’est pas un chiffre et équivont donc à écrire [^0-9] * **\s** indique un espace vlanc -## Exemples d’expressions régulières** +## Exemples d’expressions régulières** * Entier positif : -^[0-9]+$ <span style="color: #943a99;">(Tout chiffre de 0 à 9 qui peut se répéter à l’infini).</span> +^[0-9]+$ <span style="color: #943a99;">(Tout chiffre de 0 à 9 qui peut se répéter à l’infini).</span> -* Entier négatif : <span>^-[0-9]+$</span> ("-" suivi de n’importe quel chiffre de 0 à 9 qui peut se répéter à l’infini). +* Entier négatif : <span>^-[0-9]+$</span> ("-" suivi de n’importe quel chiffre de 0 à 9 qui peut se répéter à l’infini). * Code postal français métropolitains + Dom Tom : diff --git a/04-ContraintesRessources/05.02.FormatsDate.md b/04-ContraintesRessources/05.02.FormatsDate.md index fb659ca..6929adf 100644 --- a/04-ContraintesRessources/05.02.FormatsDate.md +++ b/04-ContraintesRessources/05.02.FormatsDate.md @@ -2,9 +2,9 @@ La définition de dates dans Qualigéo se réfère à la librairie standard Python. De nombreuses informations et exemples de structures de dates sont disponibles sur le site [http://docs.python.org/library/datetime.html](http://docs.python.org/library/datetime.html) -Le tableau ci-dessous liste l’ensemble des directives dédiées : +Le tableau ci-dessous liste l’ensemble des directives dédiées : -<table style="mc-table-style: url(’../Resources/TableStyles/Lignes.css’);border-left-style: solid;border-left-width: 1px;border-left-color: #000000;border-right-style: solid;border-right-width: 1px;border-right-color: #000000;border-top-style: solid;border-top-width: 1px;border-top-color: #000000;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #000000;caption-side: bottom;" class="TableStyle_Rows" cellspacing="0"> +<table style="mc-table-style: url(’../Resources/TableStyles/Lignes.css’);border-left-style: solid;border-left-width: 1px;border-left-color: #000000;border-right-style: solid;border-right-width: 1px;border-right-color: #000000;border-top-style: solid;border-top-width: 1px;border-top-color: #000000;border-bottom-style: solid;border-bottom-width: 1px;border-bottom-color: #000000;caption-side: bottom;" class="TableStyle_Rows" cellspacing="0"> <caption> </caption> <col style="width: 75px;" /> <col style="width: 563px;" /> @@ -17,7 +17,7 @@ Le tableau ci-dessous liste l’ensemble des directives dédiées : <tbody> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%a</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’abréviation locale du jour. (Dim)</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’abréviation locale du jour. (Dim)</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%A</td> @@ -25,7 +25,7 @@ Le tableau ci-dessous liste l’ensemble des directives dédiées : </tr> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%b</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’abréviation locale du mois. (Oct)</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’abréviation locale du mois. (Oct)</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%B</td> @@ -45,19 +45,19 @@ Le tableau ci-dessous liste l’ensemble des directives dédiées : </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%H</td> - <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’heure au format 24 h [00,23]</td> + <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’heure au format 24 h [00,23]</td> </tr> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%I</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’heure au format 12 h [01,12]</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’heure au format 12 h [01,12]</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%j</td> - <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd" style="text-align: left;">Renvoie le jour de l’année [001,366]</td> + <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd" style="text-align: left;">Renvoie le jour de l’année [001,366]</td> </tr> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%m</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie les mois de l’année en version numérique [01,12]</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie les mois de l’année en version numérique [01,12]</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%M</td> @@ -65,7 +65,7 @@ Le tableau ci-dessous liste l’ensemble des directives dédiées : </tr> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%p</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie AM ou PM en fonction de l’heure.</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie AM ou PM en fonction de l’heure.</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%S</td> @@ -89,15 +89,15 @@ Le tableau ci-dessous liste l’ensemble des directives dédiées : </tr> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%X</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie la représentation locale del’heure (15:31:33)</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie la représentation locale del’heure (15:31:33)</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%y</td> - <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd" style="text-align: left;">Renvoie les deux derniers chiffres de l’année (05)</td> + <td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd" style="text-align: left;">Renvoie les deux derniers chiffres de l’année (05)</td> </tr> <tr> <td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="text-align: left;">%Y</td> - <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’année (2005)</td> + <td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd" style="text-align: left;">Renvoie l’année (2005)</td> </tr> <tr> <td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="text-align: left;">%z</td> diff --git a/04-ContraintesRessources/05.03.EditerExpression.md b/04-ContraintesRessources/05.03.EditerExpression.md index 9a14309..02d5387 100644 --- a/04-ContraintesRessources/05.03.EditerExpression.md +++ b/04-ContraintesRessources/05.03.EditerExpression.md @@ -2,9 +2,9 @@ Une expression nommée est une expression régulière sauvegardée dans Qualigéo. -L’interface **Expression nommée** liste les expressions régulières déjà saisies, et permet au designer d’en créer une nouvelle en la nommant puis en entrant sa structure dans le champ **Expression**. +L’interface **Expression nommée** liste les expressions régulières déjà saisies, et permet au designer d’en créer une nouvelle en la nommant puis en entrant sa structure dans le champ **Expression**. -Le bouton **Valider** permet de confirmer la création de l’expression alors que le bouton **Annuler** annule les modifications en cours. +Le bouton **Valider** permet de confirmer la création de l’expression alors que le bouton **Annuler** annule les modifications en cours.  diff --git a/04-ContraintesRessources/05.04.CreationComptesRoles.md b/04-ContraintesRessources/05.04.CreationComptesRoles.md index 967806d..4a839cd 100644 --- a/04-ContraintesRessources/05.04.CreationComptesRoles.md +++ b/04-ContraintesRessources/05.04.CreationComptesRoles.md @@ -4,7 +4,7 @@ #### Administrateur -L’administrateur administre la base de données Postgresql et est en charge de la création des comptes utilisateurs et des rôles associés. +L’administrateur administre la base de données Postgresql et est en charge de la création des comptes utilisateurs et des rôles associés. #### Designer @@ -12,11 +12,11 @@ Le Designer est en charge de la création des contraintes #### Contrôleur -Le contrôleur correspond à l’utilisateur final de Qualigéo et exécute des contrôles selon les schémas qu’il aura choisi au préalable. +Le contrôleur correspond à l’utilisateur final de Qualigéo et exécute des contrôles selon les schémas qu’il aura choisi au préalable. ### Requêtes SQL de création de rôles et de comptes -#### Creation d’un role +#### Creation d’un role Remplacer <Nom role> par le nom du rôle souhaité @@ -44,7 +44,7 @@ SUPERUSER INHERIT CREATEDB CREATEROLE; REATE ROLE <nom_user> LOGIN -PASSWORD ’<password>’ +PASSWORD ’<password>’ NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE; @@ -52,7 +52,7 @@ GRANT <role> TO <nom_user>; #### Rôles sur les tables et vues -Ensuite il faut définir les droits des rôles sur les différentes tables et vues sur lequel l’administrateur souhaite définir l’accés. +Ensuite il faut définir les droits des rôles sur les différentes tables et vues sur lequel l’administrateur souhaite définir l’accés. ex: @@ -72,7 +72,7 @@ GRANT <droits> ON TABLE <table> TO <role>; GRANT <droits> ON TABLE <vue> TO <role>; -Les droits possibles sont select, insert, update et delete. L’administrateur définit les droits en les séparant par des virgules +Les droits possibles sont select, insert, update et delete. L’administrateur définit les droits en les séparant par des virgules #### Droits sur les séquences @@ -92,4 +92,4 @@ sinon GRANT <droits> ON TABLE <sequence> TO <role>; -Les droits possibles sont SELECT, UPDATE, USAGE. L’adminisatrateur définit les droits en les séparant par des virgules. +Les droits possibles sont SELECT, UPDATE, USAGE. L’adminisatrateur définit les droits en les séparant par des virgules. diff --git a/04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.md b/04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.md index 781efe4..fd8b6a1 100644 --- a/04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.md +++ b/04-ContraintesRessources/05.05.UtilisationFormatsPersonnalises.md @@ -1,43 +1,43 @@ ## Utilisation de formats personnalisés dans Qualigéo -Les formats personnalisés peuvent être exploités par Qualigéo. Ils permettent d’exploiter toute la puissance de FME dans le prétraitement des données à contrôler : certaines contraintes ne peuvent pas être paramétrées dans un unique schéma de contraintes dans Qualigéo. Une méthode permet d’effectuer des vérifications supplémentaires à celles proposées par le logiciel en concevant un projet FME de contrôles sur les éléments non paramétrables dans Qualigéo, puis d’exporter le projet FME en tant que format personnalisé. +Les formats personnalisés peuvent être exploités par Qualigéo. Ils permettent d’exploiter toute la puissance de FME dans le prétraitement des données à contrôler : certaines contraintes ne peuvent pas être paramétrées dans un unique schéma de contraintes dans Qualigéo. Une méthode permet d’effectuer des vérifications supplémentaires à celles proposées par le logiciel en concevant un projet FME de contrôles sur les éléments non paramétrables dans Qualigéo, puis d’exporter le projet FME en tant que format personnalisé. -De la sorte, l’intégralité des règles du schéma de contraintes et du format personnalisé est vérifiée lors d’un seul contrôle dans Qualigéo. +De la sorte, l’intégralité des règles du schéma de contraintes et du format personnalisé est vérifiée lors d’un seul contrôle dans Qualigéo. Intégrer un format personnalisé dans Qualigéo permet par exemple de : * Contrôler un jeu de données contenant plusieurs formats -* Contrôler l’arborescences de fichiers dans un jeu de données +* Contrôler l’arborescences de fichiers dans un jeu de données * Contrôler des relations de cardinalités particulières... -Si l’administrateur choisit d’intégrer les formats personnalisés, il est alors possible de rajouter ces formats, de la même façon qu’un [format classique](../Interface%20de%20Qualigéo/Outils/interface%20administration.htm#Gestion_des_Formats), en fournissant le nom du format personnalisé tel qu’il a été défini dans FME, sa description, son type et son extension. +Si l’administrateur choisit d’intégrer les formats personnalisés, il est alors possible de rajouter ces formats, de la même façon qu’un [format classique](../Interface%20de%20Qualigéo/Outils/interface%20administration.htm#Gestion_des_Formats), en fournissant le nom du format personnalisé tel qu’il a été défini dans FME, sa description, son type et son extension. Des erreurs spécifiques au projet du format personnalisé peuvent être créées dans FME et transmises à Qualigéo lors du contrôle. ==> "Erreur retournée : E0055 (Erreur définie et testée dans le format personnalisé) -### 1 Démarche d’intégration et d’utilisation d’un format personnalisé +### 1 Démarche d’intégration et d’utilisation d’un format personnalisé 1. Création du format personnalisé dans FME (\*.fds). 2. Installation du format personnalisé sur le serveur 3. Intégration du format personnalisé dans Qualigéo 4. Contrôle de jeu de données (pré traitement via le format personnalisé). -### 2 Exemple de création d’un format personnalisé +### 2 Exemple de création d’un format personnalisé -#### 2.1 Création d’un format personnalisé dans FME (\*.fds) +#### 2.1 Création d’un format personnalisé dans FME (\*.fds) Pour pouvoir être exploité par Qualigéo et générer des erreurs spécifiques aux format personnalisé, le projet de création de format personnalisé doit contenir les éléments suivants : * FeatureReader : Transformer de lecture du schéma et des données à contrôler -* Writer ’SCHEMA_QUALIGEO_FP’, relié au port Schéma de la données à lire : Écriture du schéma exploité lors du contrôle. -* Writer ’ERREURS_QUALIGEO_FP’, type d’entités en sortie stockant l’erreur de type E0055 à générer avec son propre message d’erreur stocké dans l’attribut ’message’ . -* Writer ’Généric’, relié au port Généric, permet de générer les types d’entités dynamiquement pour être exploités en phase de contrôle. +* Writer ’SCHEMA_QUALIGEO_FP’, relié au port Schéma de la données à lire : Écriture du schéma exploité lors du contrôle. +* Writer ’ERREURS_QUALIGEO_FP’, type d’entités en sortie stockant l’erreur de type E0055 à générer avec son propre message d’erreur stocké dans l’attribut ’message’ . +* Writer ’Généric’, relié au port Généric, permet de générer les types d’entités dynamiquement pour être exploités en phase de contrôle. -En phase de contrôle, les 3 types d’entités ainsi générés sont exploités pour générer l’erreur désirée. +En phase de contrôle, les 3 types d’entités ainsi générés sont exploités pour générer l’erreur désirée. -**Exemple de projet de création de format personnalisé pour contrôler la couleur d’affichage des villes françaises au format Mapinfo : check_color.fds** +**Exemple de projet de création de format personnalisé pour contrôler la couleur d’affichage des villes françaises au format Mapinfo : check_color.fds**  @@ -45,27 +45,27 @@ En phase de contrôle, les 3 types d’entités ainsi générés sont exploi Pour pouvoir être exploité, le format personnalisé est ensuite installé sur le serveur où est installé Qualigéo. -Un double clic sur le fichier .fds permet d’installer le format personnalisé dans le répertoire FORMATS (%userprofile%\Mes documents\FME\Formats) +Un double clic sur le fichier .fds permet d’installer le format personnalisé dans le répertoire FORMATS (%userprofile%\Mes documents\FME\Formats) #### 2.3 Ajout du format personnalisé dans Qualigéo -L’intégration de format personnalisé se fait de la même façon qu’un **[format classique,](../Interface%20de%20Qualigéo/Outils/interface%20administration.htm#Gestion_des_Formats)** en renseignant l’ensemble des champs. de la fenêtre d’ajout de format. +L’intégration de format personnalisé se fait de la même façon qu’un **[format classique,](../Interface%20de%20Qualigéo/Outils/interface%20administration.htm#Gestion_des_Formats)** en renseignant l’ensemble des champs. de la fenêtre d’ajout de format.  - <span style="font-family: Calibri;">Il est conseillé d’insérer la même valeur pour les champs ’id Format’ et ’Format’.</span> + <span style="font-family: Calibri;">Il est conseillé d’insérer la même valeur pour les champs ’id Format’ et ’Format’.</span> - Dans le cas de format personnalisé, il faut décocher la case ’Utilisable pour l’export des contrôles’. + Dans le cas de format personnalisé, il faut décocher la case ’Utilisable pour l’export des contrôles’. -La sélection de l’option "Utiliser comme format personnalisé" affiche la valeur PATH comme format de schéma. Le "PATH" indique l’utilisation d’un format personnalisé dans le contrôle. Le projet de contrôle exploite alors le type d’entités schéma ’SCHEMA_QUALIGEO_FP’ généré lors de la conception du format personnalisé Writer ’SCHEMA_QUALIGEO_FP. +La sélection de l’option "Utiliser comme format personnalisé" affiche la valeur PATH comme format de schéma. Le "PATH" indique l’utilisation d’un format personnalisé dans le contrôle. Le projet de contrôle exploite alors le type d’entités schéma ’SCHEMA_QUALIGEO_FP’ généré lors de la conception du format personnalisé Writer ’SCHEMA_QUALIGEO_FP. Le format personnalisé est ensuite ajouté à la liste des formats exploitables par Qualigéo. Une fois intégré, un format personnalisé peut être contrôlé comme tout autre fichier classique. -#### 2.4 Contrôle d’un jeu de données +#### 2.4 Contrôle d’un jeu de données -Un prétraitement permet le contrôle des données comme s’il s’agissait d’une une unique source de données à contrôler. Puis le contrôle Qualigéo s’opère selon le schéma de contrainte sélectionné. +Un prétraitement permet le contrôle des données comme s’il s’agissait d’une une unique source de données à contrôler. Puis le contrôle Qualigéo s’opère selon le schéma de contrainte sélectionné. La couleur de données Mapinfo est désormais "contrôlable" dans Qualigéo en exploitant le format personnalisé précédemment créé. @@ -75,11 +75,11 @@ La couleur de données Mapinfo est désormais "contrôlable" dans Qualigéo en e Veremes a développé certains formats personnalisés spécifiques aux géo standards tels qui sont définis par le CNIG et la COVADIS (PLU, GRACETHD, PCRS). Pour connaître les formats disponibles et leur conditions d’utilisation, veuillez contacter le service [support de Veremes](../Support_technique.htm). -Le standard de données GRACE THD constitue le référentiel en matière d’aménagement numérique des territoires. L’échange des données GRACE se fait via des fichiers au format Shapefile (données géographiques) et au format CSV pour les données non géographiques. De telles données ne peuvent pas être contrôlées par un unique schéma dans Qualigéo. Par exemple, les relations entre deux tables de format différent ne pourraient pas être vérifiées. Un format personnalisé basé sur le regroupement de ces deux formats permet donc de contourner cette contrainte. +Le standard de données GRACE THD constitue le référentiel en matière d’aménagement numérique des territoires. L’échange des données GRACE se fait via des fichiers au format Shapefile (données géographiques) et au format CSV pour les données non géographiques. De telles données ne peuvent pas être contrôlées par un unique schéma dans Qualigéo. Par exemple, les relations entre deux tables de format différent ne pourraient pas être vérifiées. Un format personnalisé basé sur le regroupement de ces deux formats permet donc de contourner cette contrainte. * Conception du formats personnalisé GRACE -Dans FME, un projet est développé pour regrouper et pré traiter les fichiers des deux formats et de la sorte être en capacité de vérifier l’intégralité d’un jeu de données GRACE. En premier lieu le projet décompresse les données fournies au format ZIP, puis regroupe les sources de données. Des contrôles de cardinalités spécifiques (non possibles dans Qualigéo) sont ensuite implémentés en fin de traitement, et permette de retourner des erreurs spécifiques avec un message adapté à chaque erreur de cardinalité. Par exemple, "La relation de cardinalité n’est pas respectée avec la table "t_adresse". L’attribut a pour valeur "@Value(pt_ad_code)". +Dans FME, un projet est développé pour regrouper et pré traiter les fichiers des deux formats et de la sorte être en capacité de vérifier l’intégralité d’un jeu de données GRACE. En premier lieu le projet décompresse les données fournies au format ZIP, puis regroupe les sources de données. Des contrôles de cardinalités spécifiques (non possibles dans Qualigéo) sont ensuite implémentés en fin de traitement, et permette de retourner des erreurs spécifiques avec un message adapté à chaque erreur de cardinalité. Par exemple, "La relation de cardinalité n’est pas respectée avec la table "t_adresse". L’attribut a pour valeur "@Value(pt_ad_code)". <span style="color: #943a99; font-family: Calibri; font-size: 11pt;">==> Erreur retournée : E0055</span> diff --git a/04-ContraintesRessources/05.07.CreationConnexionODBC.md b/04-ContraintesRessources/05.07.CreationConnexionODBC.md index 6d11860..9ed3f38 100644 --- a/04-ContraintesRessources/05.07.CreationConnexionODBC.md +++ b/04-ContraintesRessources/05.07.CreationConnexionODBC.md @@ -1,16 +1,16 @@ -### Création d’une connexion ODBC +### Création d’une connexion ODBC - Création d’une connexion <span class="MCTextPopup">[ODBC](javascript:void(0);)<span class="MCTextPopupBody_0" style="display: none; ">Open DataBase Connectivity. Format défini par Windows permettant la communication entre les clients bases de données fonctionnant sous Windows et les SGBD du marché.</span></span> + Création d’une connexion <span class="MCTextPopup">[ODBC](javascript:void(0);)<span class="MCTextPopupBody_0" style="display: none; ">Open DataBase Connectivity. Format défini par Windows permettant la communication entre les clients bases de données fonctionnant sous Windows et les SGBD du marché.</span></span> -Au lancement de l’application l’interface de connexion s’affiche. L’utilisateur doit se connecter à la fois à la base de contraintes et de contrôle. +Au lancement de l’application l’interface de connexion s’affiche. L’utilisateur doit se connecter à la fois à la base de contraintes et de contrôle. -Lors de la toute première connexion, l’utilisateur doit sélectionner le connecteur ODBC à utiliser en cliquant sur le bouton **ODBC.** +Lors de la toute première connexion, l’utilisateur doit sélectionner le connecteur ODBC à utiliser en cliquant sur le bouton **ODBC.**   -Se positionner dans l’onglet Source de données systèmes et cliquer sur **Ajouter**. +Se positionner dans l’onglet Source de données systèmes et cliquer sur **Ajouter**.  @@ -24,14 +24,14 @@ Spécifier ensuite le nom de la connexion dans **Data source** et le nom de la b Spécifier ensuite le Serveur de la base de données. -Ne pas définir d’ User Name et de mot de passe . +Ne pas définir d’ User Name et de mot de passe . Cliquer sur **Save** . Si la base de contrôle est différente de la base de contraintes, la procédure est à reproduire pour la seconde base. -[En savoir plus sur l’interface de connexion](../Interface%20de%20Qualigéo/Connexion%20à%20Qualigéo.htm). +[En savoir plus sur l’interface de connexion](../Interface%20de%20Qualigéo/Connexion%20à%20Qualigéo.htm). -Les connexions sont maintenant initialisées , vous pouvez vous connecter à l’application. +Les connexions sont maintenant initialisées , vous pouvez vous connecter à l’application. -[En savoir plus sur l’interface principale](../Interface%20de%20Qualigéo/fenêtre%20principale.htm). +[En savoir plus sur l’interface principale](../Interface%20de%20Qualigéo/fenêtre%20principale.htm). diff --git a/Ressources/Images/attribut.png b/Ressources/Images/attribut.png index 91722d7792efe0fc749ce0b8b9de962d3f0211ed..80ff31152d1dc9178f6abb98c21f0992e123e0e0 100644 GIT binary patch literal 154764 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%0A&M@RQ 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@gs_d*hGG-#_NByubg?Q~ekB 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 CW?c3F literal 34495 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 T@sAl87#KWV{an^LB{Ts5?LeN= -- GitLab