Index: trunk/workshop-foss4g/validity.rst
===================================================================
--- trunk/workshop-foss4g/validity.rst	(revision 50)
+++ trunk/workshop-foss4g/validity.rst	(revision 62)
@@ -4,5 +4,5 @@
 ====================
 
-Dans 90% des cas la rÃ©ponse Ã  la question "pourquoi mes requÃªtes me renvoit un message d'erreur du type 'TopologyException' error"" est : "un ou plusieurs des arguments passÃ©s sont invalides". Ce qui nous conduit Ã  nous demander : que signifie invalide et pourquoi est-ce important ?
+Dans 90% des cas la rÃ©ponse Ã  la question "pourquoi mes requÃªtes me renvoient un message d'erreur du type 'TopologyException' error"" est : "un ou plusieurs des arguments passÃ©s sont invalides". Ce qui nous conduit Ã  nous demander : que signifie invalide et pourquoi est-ce important ?
 
 Qu'est-ce que la validitÃ© ?
@@ -13,12 +13,12 @@
 Certaines des rÃšgles de validation des polygones semble Ã©videntes, et d'autre semblent arbitraires (et le sont vraiment).
 
- * Les contours des Polygon doivent Ãªtre fermÃ©s.
- * Les contours qui dÃ©finissent des trous doivent Ãªtre inclus dans la zone dÃ©finit par le coutour extÃ©rieur.
+ * Les contours des polygones doivent Ãªtre fermÃ©s.
+ * Les contours qui dÃ©finissent des trous doivent Ãªtre inclus dans la zone dÃ©finie par le contour extÃ©rieur.
  * Les contours ne doivent pas s'intersecter (ils ne doivent ni se croiser ni se toucher).
  * Les contours ne doivent pas toucher les autres contours, sauf en un point unique.
 
-Les deux derniÃšres rÃšgles font partie de la catÃ©gorie arbitraires. Il y a d'autre moyen de dÃ©finir des poygones qui sont consistent mais les rÃšgles ci-dessus sont celles utilisÃ©es dans le standard :term:`OGC` :term:`SFSQL` que respecte PostGIS.
+Les deux derniÃšres rÃšgles font partie de la catÃ©gorie arbitraire. Il y a d'autres moyens de dÃ©finir des polygones qui sont consistants mais les rÃšgles ci-dessus sont celles utilisÃ©es dans le standard :term:`OGC` :term:`SFSQL` que respecte PostGIS.
 
-La raison pour laquelle ces rÃšgles sont importants est que les algorythmes de calcul dÃ©pendent de cette structuration consistante des arguments. Il est possible de construire des algorythmes qui n'utilise pas cette structuration, mais ces fonctions tendents Ã  Ãªtre trÃšs lentes, Ã©tant donnÃ© que la premiÃšre Ã©tape consistera Ã  "analyser et construire  des strcuture Ã  l'intÃ©rieur des donnÃ©es".
+La raison pour laquelle ces rÃšgles sont importantes est que les algorithmes de calcul dÃ©pendent de cette structuration consistante des arguments. Il est possible de construire des algorithmes qui n'utilisent pas cette structuration, mais ces fonctions tendent Ã  Ãªtre trÃšs lentes, Ã©tant donnÃ© que la premiÃšre Ã©tape consiste Ã  "analyser et construire  des structures Ã  l'intÃ©rieur des donnÃ©es".
 
 Voici un exemple de pourquoi cette structuration est importante. Ce polygone n'est pas valide :
@@ -27,10 +27,10 @@
 
   POLYGON((0 0, 0 1, 2 1, 2 2, 1 2, 1 0, 0 0));
-  
+
 Vous pouvez comprendre ce qui n'est pas valide en regardant cette figure :
 
 .. image:: ./validity/figure_eight.png
 
-Le contour externe est exactement en forme en 8 avec une intersection au milieux. Notez que la fonction de rendu graphique est tout de mÃªme capable d'en afficher l'intÃ©rieur, don visuellement cela ressemble bien Ã  une "aire" : deux unitÃ©s quarrÃ©, donc une aire couplant ces deux unitÃ©s.
+Le contour externe est exactement en forme en 8 avec une intersection au milieu. Notez que la fonction de rendu graphique est tout de mÃªme capable d'en afficher l'intÃ©rieur, donc visuellement cela ressemble bien Ã  une "aire" : deux unitÃ©s carrÃ©, donc une aire couplant ces deux unitÃ©s.
 
 Essayons maintenant de voir ce que pense la base de donnÃ©es de notre polygone :
@@ -39,12 +39,12 @@
 
   SELECT ST_Area(ST_GeometryFromText('POLYGON((0 0, 0 1, 1 1, 2 1, 2 2, 1 2, 1 1, 1 0, 0 0))'));
-  
+
 ::
 
-    st_area 
+    st_area
    ---------
           0
 
-Que ce passe-t-il ici ? L'algorythme qui calcule l'aire suppose que les contours ne s'intersectent pas. Un contours normal devra toujours avoir une aire qui est bornÃ©e (l'intÃ©rieur) dans un sens de la ligne du contour (peu importe quelle sens, juste *un* sens). NÃ©anmoins, dans notre figure en 8, le contour externe est Ã  droite de la ligne pour un lobe et Ã  gauche pour l'autre. Cela entraine que les aire qui sont calculÃ©es pour chaque lobe annulent la prÃ©cÃ©dente (l'une vaut 1 et l'autre -1) donc le rÃ©sultat est une "aire de zÃ©ro".
+Que ce passe-t-il ici ? L'algorithme qui calcule l'aire suppose que les contours ne s'intersectent pas. Un contour normal devra toujours avoir une aire qui est bornÃ©e (l'intÃ©rieur) dans un sens de la ligne du contour (peu importe quelle sens, juste *un* sens). NÃ©anmoins, dans notre figure en 8, le contour externe est Ã  droite de la ligne pour un lobe et Ã  gauche pour l'autre. Cela entraine que les aires qui sont calculÃ©es pour chaque lobe annulent la prÃ©cÃ©dente (l'une vaut 1 et l'autre -1) donc le rÃ©sultat est une "aire de zÃ©ro".
 
 
@@ -52,5 +52,5 @@
 --------------------
 
-Dans l'exemple prÃ©cÃ©dent nous avions un polygone que nous **savions** non-valide. Comment dÃ©terminer les gÃ©omÃ©tries non valides dans une tables d'un million d'enregistrements ? Avec la fonction :command:`ST_IsValid(geometry)`. UtilisÃ© avec notre polygone prÃ©cÃ©dent, nous abtenons rapidement la rÃ©ponse :
+Dans l'exemple prÃ©cÃ©dent nous avions un polygone que nous **savions** non-valide. Comment dÃ©terminer les gÃ©omÃ©tries non valides dans une tables d'un million d'enregistrements ? Avec la fonction :command:`ST_IsValid(geometry)` utilisÃ©e avec notre polygone prÃ©cÃ©dent, nous obtenons rapidement la rÃ©ponse :
 
 .. code-block:: sql
@@ -58,9 +58,9 @@
   SELECT ST_IsValid(ST_GeometryFromText('POLYGON((0 0, 0 1, 1 1, 2 1, 2 2, 1 2, 1 1, 1 0, 0 0))'));
 
-:: 
+::
 
   f
 
-Maintenant nous savons que l'entitÃ© est non-valide mais nous ne savons pas pourquoi. Nous pouvons utilier la fonction :command:`ST_IsValidReason(geometry)` pour trtouver la cause de non validitÃ© :
+Maintenant nous savons que l'entitÃ© est non-valide mais nous ne savons pas pourquoi. Nous pouvons utiliser la fonction :command:`ST_IsValidReason(geometry)` pour trouver la cause de non validitÃ© :
 
 .. code-block:: sql
@@ -74,9 +74,9 @@
 Vous remarquerez qu'en plus de la raison (intersection) la localisation de la non validitÃ© (coordonnÃ©e (1 1)) est aussi renvoyÃ©e.
 
-Nous pouvons aussi utiiliser la fonction :command:`ST_IsValid(geometry)` pour tester nos tables : 
+Nous pouvons aussi utiiliser la fonction :command:`ST_IsValid(geometry)` pour tester nos tables :
 
 .. code-block:: sql
 
-  -- Trouver tout les polygones non valides et leur problÃšme 
+  -- Trouver tous les polygones non valides et leur problÃšme
   SELECT name, boroname, ST_IsValidReason(the_geom)
   FROM nyc_neighborhoods
@@ -85,5 +85,5 @@
 ::
 
-           name           |   boroname    |                     st_isvalidreason                      
+           name           |   boroname    |                     st_isvalidreason
  -------------------------+---------------+-----------------------------------------------------------
   Howard Beach            | Queens        | Self-intersection[597264.083368305 4499924.54228856]
@@ -97,31 +97,31 @@
 ---------------------
 
-CommenÃ§ons par la mauvaise nouvelle : il n'y a aucune garantie de pouvoir corriger une gÃ©omÃ©trie non valide. Dans le pire des scÃ©narios, vous pouvez utiliser la fonction  :command:`ST_IsValid(geometry)` pour identifier les entitÃ©s non valides, les dÃ©placer dans une autre table, exporter cette table et les rÃ©parer Ã  l'aide d'un outils extÃ©rieur.
+CommenÃ§ons par la mauvaise nouvelle : il n'y a aucune garantie de pouvoir corriger une gÃ©omÃ©trie non valide. Dans le pire des scÃ©narios, vous pouvez utiliser la fonction  :command:`ST_IsValid(geometry)` pour identifier les entitÃ©s non valides, les dÃ©placer dans une autre table, exporter cette table et les rÃ©parer Ã  l'aide d'un outil extÃ©rieur.
 
-Voici un exemple de requÃªte SQL qui dÃ©placent les gÃ©omÃ©tries non valides hors de la table principale dans une table Ã  part pour les exporter vers un programme de rÃ©paration.
+Voici un exemple de requÃªte SQL qui dÃ©place les gÃ©omÃ©tries non valides hors de la table principale dans une table Ã  part pour les exporter vers un programme de rÃ©paration.
 
 .. code-block:: sql
 
-  -- Table Ã  part des gÃ©omÃ©tries non-valide
+  -- Table Ã  part des gÃ©omÃ©tries non-valides
   CREATE TABLE nyc_neighborhoods_invalid AS
   SELECT * FROM nyc_neighborhoods
   WHERE NOT ST_IsValid(the_geom);
-  
+
   -- Suppression de la table principale
   DELETE FROM nyc_neighborhoods
   WHERE NOT ST_IsValid(the_geom);
-  
-Un bon outils pour rÃ©parer visuellemen des gÃ©omÃ©tries non valide est OpenJump (http://openjump.org) qui contient un outils de validation depuis le menu **Tools->QA->Validate Selected Layers**.
 
-Maintenant, la bonne nouvelle : un grand nombre de non-validitÃ©s **peuvent Ãªtre rÃ©solues dans la base de donnÃ©es** en utilisant la fonction : :command:`ST_Buffer`.
+Un bon outil pour rÃ©parer visuellement des gÃ©omÃ©tries non valide est OpenJump (http://openjump.org) qui contient un outils de validation depuis le menu **Tools->QA->Validate Selected Layers**.
 
-Le coup du Buffer tire avantafe de la maniÃšre dont les buffers sont construit : une gÃ©omÃ©trie bufferisÃ©e est une nouvelle gÃ©omÃ©trie, construite en dÃ©plaÃ§ant les lignes de la gÃ©omÃ©trie d'origine. Si vous dÃ©placez les lignes originales par *rien* (zero) alors la nouvelle gÃ©omÃ©trie aura une structure identique Ã  l'originale, mais puisqu'elle utilise les rÃšgles topologiques de l':term:`OGC, elle sera valide.
+Maintenant, la bonne nouvelle : un grand nombre de non-validitÃ©s **peut Ãªtre rÃ©solu dans la base de donnÃ©es** en utilisant la fonction : :command:`ST_Buffer`.
+
+Le coup du Buffer tire avantage de la maniÃšre dont les buffers sont construits : une gÃ©omÃ©trie bufferisÃ©e est une nouvelle gÃ©omÃ©trie, construite en dÃ©plaÃ§ant les lignes de la gÃ©omÃ©trie d'origine. Si vous dÃ©placez les lignes originales par *rien* (zero) alors la nouvelle gÃ©omÃ©trie aura une structure identique Ã  l'originale, mais puisqu'elle utilise les rÃšgles topologiques de l':term:`OGC`, elle sera valide.
 
 Par exemple, voici un cas classique de non-validitÃ© - le "polygone de la banane" - un seul contour que crÃ©e une zone mais se touche, laissant un "trou" qui n'en est pas un.
 
-:: 
+::
 
   POLYGON((0 0, 2 0, 1 1, 2 2, 3 1, 2 0, 4 0, 4 4, 0 4, 0 0))
-  
+
 .. image:: ./validity/banana.png
 
@@ -143,4 +143,4 @@
 .. note::
 
-  Le "polygone banane" (ou "coquillage inversÃ©") est un cas oÃ¹ le modÃšle topologique de l':term:`OGC` et de ESRI diffÃšrent. Le model ESRI considÃšre que les contours que se touchent sont non valides et prÃ©fÃšre la forme de banane pour ce cas de figure. Le modÃšle de l'OGC est l'inverse.
-  
+  Le "polygone banane" (ou "coquillage inversÃ©") est un cas oÃ¹ le modÃšle topologique de l':term:`OGC` et de ESRI diffÃšrent. Le modÃšle ESRI considÃšre que les contours qui se touchent sont non valides et prÃ©fÃšre la forme de banane pour ce cas de figure. Le modÃšle de l'OGC est l'inverse.
+
