Index: trunk/workshop-foss4g/joins.rst
===================================================================
--- trunk/workshop-foss4g/joins.rst	(revision 25)
+++ trunk/workshop-foss4g/joins.rst	(revision 26)
@@ -4,9 +4,9 @@
 ===================================
 
-Les jointures saptiales est la cerise sur le gâteau des base de données spatiales. Elles vous pemettent de conbiner les informations de plusieures tables en utilisant une relation spatiale comme clause de jointure. Les plupart des "analyses SIG standards" peuvent être exprimées à l'aide de jointure spatiales.
-
-Dans la partie prcédente, nous avons utilisé les relations spatiales en utilisant deux étapes dans nos requêtes : nous avons dans un premier temps extrait la station de métro "Broad St" puis nous avon utilisé ce résultat dans nos autres requêtes pour répondre aux questions comme "dans quel quartier se situ la station 'Broad St' ?"
-
-En utilisant les jointures spatiales, nous pouvons répondre aux questions en une seule étape, récupérant les informations relatives à la station de métro et le quartie la contenant : 
+Les jointures saptiales est la cerise sur le gÃ¢teau des base de donnÃ©es spatiales. Elles vous pemettent de conbiner les informations de plusieures tables en utilisant une relation spatiale comme clause de jointure. Les plupart des "analyses SIG standards" peuvent Ãªtre exprimÃ©es Ã  l'aide de jointure spatiales.
+
+Dans la partie prcÃ©dente, nous avons utilisÃ© les relations spatiales en utilisant deux Ã©tapes dans nos requÃªtes : nous avons dans un premier temps extrait la station de mÃ©tro "Broad St" puis nous avon utilisÃ© ce rÃ©sultat dans nos autres requÃªtes pour rÃ©pondre aux questions comme "dans quel quartier se situ la station 'Broad St' ?"
+
+En utilisant les jointures spatiales, nous pouvons rÃ©pondre aux questions en une seule Ã©tape, rÃ©cupÃ©rant les informations relatives Ã  la station de mÃ©tro et le quartie la contenant : 
 
 .. code-block:: sql
@@ -27,12 +27,12 @@
    Broad St    | Financial District | Manhattan
 
-Nous avons pu regrouper chaque station de métros avec le quartier duquel elle fait partie, mais dans ce cas nous n'en voulions qu'une. Chaque fonctionn qui envoit un résultat du type vrai/faux peut être utilisée pour joindre spatialement deux tables, mais la plupart du temps on utilise : :command:`ST_Intersects`, :command:`ST_Contains`, et :command:`ST_DWithin`.
+Nous avons pu regrouper chaque station de mÃ©tros avec le quartier duquel elle fait partie, mais dans ce cas nous n'en voulions qu'une. Chaque fonctionn qui envoit un rÃ©sultat du type vrai/faux peut Ãªtre utilisÃ©e pour joindre spatialement deux tables, mais la plupart du temps on utilise : :command:`ST_Intersects`, :command:`ST_Contains`, et :command:`ST_DWithin`.
 
 Jointure et regroupement
 ------------------------
 
-La combinaison de ``JOIN`` avec ``GROUP BY`` fournit le type d'analyse qui est courramment utilisé dans les systèmes SIG.
-
-Par exemple : **Quelle est la population et la répartition raciale du quartier de Manhattan ?** Ici nous avons une question qui combine les informations relatives à la population recenssée et les contours des quartier, or nous ne voulons qu'un seul quartier, celui de Manhattan.
+La combinaison de ``JOIN`` avec ``GROUP BY`` fournit le type d'analyse qui est courramment utilisÃ© dans les systÃšmes SIG.
+
+Par exemple : **Quelle est la population et la rÃ©partition raciale du quartier de Manhattan ?** Ici nous avons une question qui combine les informations relatives Ã  la population recenssÃ©e et les contours des quartier, or nous ne voulons qu'un seul quartier, celui de Manhattan.
 
 .. code-block:: sql
@@ -84,18 +84,18 @@
 
 
-Que ce passe-t-il ici ?  Voici ce qui se passe (l'ordre d'évaluation est optimisé par la base de données) :
-
-#. La clause ``JOIN`` crée une table cirtuelle qui contient les colonnes à la fois des quartier et des recensements (tables neighborhoods et census).
-#. La claue ``WHERE`` filtre la table virtuelle pour ne conserver que la ligne correspondant à Manhattan. 
-#. Les lignes restantes sont regroupées par le nom du quartier et sont utilisées par la fonction d'agrégation : :command:`Sum()` pour réaliser la somme des valeurs de la populations.
-#. Après un peu d'arythmétiques et de formatage (ex: ``GROUP BY``, ``ORDER BY``)) ssur le nombres finaux, notre requête calcul les porcentages.
+Que ce passe-t-il ici ?  Voici ce qui se passe (l'ordre d'Ã©valuation est optimisÃ© par la base de donnÃ©es) :
+
+#. La clause ``JOIN`` crÃ©e une table cirtuelle qui contient les colonnes Ã  la fois des quartier et des recensements (tables neighborhoods et census).
+#. La claue ``WHERE`` filtre la table virtuelle pour ne conserver que la ligne correspondant Ã  Manhattan. 
+#. Les lignes restantes sont regroupÃ©es par le nom du quartier et sont utilisÃ©es par la fonction d'agrÃ©gation : :command:`Sum()` pour rÃ©aliser la somme des valeurs de la populations.
+#. AprÃšs un peu d'arythmÃ©tiques et de formatage (ex: ``GROUP BY``, ``ORDER BY``)) ssur le nombres finaux, notre requÃªte calcul les porcentages.
 
 .. note:: 
 
-   La clause ``JOIN`` combine deux parties ``FROM``.  Par défaut, nous utilisons un jointure du type :``INNER JOIN``, mais il existe quatres autres types de jointures. Pour de plus amples informations à ce sujet, consultez la partie `type_jointure <http://docs.postgresql.fr/9.1/sql-select.html>`_ de la page de la documentation officielle de PostgreSQL.
-
-Nous pouvons aussi utiliser le test de la distance dans notre clef de jointure, pour créer une regroupement de "tout les éléments dans un certain rayon". Essayons de regarder la géographie raciale de New York en utilisant les requêtes de distance.
-
-Premièrement, essayons d'obtenir la répartition raciale de la ville.
+   La clause ``JOIN`` combine deux parties ``FROM``.  Par dÃ©faut, nous utilisons un jointure du type :``INNER JOIN``, mais il existe quatres autres types de jointures. Pour de plus amples informations Ã  ce sujet, consultez la partie `type_jointure <http://docs.postgresql.fr/9.1/sql-select.html>`_ de la page de la documentation officielle de PostgreSQL.
+
+Nous pouvons aussi utiliser le test de la distance dans notre clef de jointure, pour crÃ©er une regroupement de "tout les Ã©lÃ©ments dans un certain rayon". Essayons de regarder la gÃ©ographie raciale de New York en utilisant les requÃªtes de distance.
+
+PremiÃšrement, essayons d'obtenir la rÃ©partition raciale de la ville.
 
 .. code-block:: sql
@@ -116,7 +116,7 @@
 Donc, 8M de personnes de New York, environ 44% sont "blancs" et "26% sont "noirs".
 
-Duke Ellington chantait que "You / must take the A-train / To / go to Sugar Hill way up in Harlem." Comme nous l'avons vu précédemment, Harlem est de très loin le quartier ou se trouve la plus grande concentration d'africains-américains de Manhattan (80.5%). Est-il toujours vrai qu'il faut prendre le train A dont Duke parlait dans sa chanson ?
-
-Premièrement, le contenu du champ ``routes`` de la table ``nyc_subway_stations`` va nous servir à récupérer le train A. Les valeurs de ce champs sont un peu complexes.
+Duke Ellington chantait que "You / must take the A-train / To / go to Sugar Hill way up in Harlem." Comme nous l'avons vu prÃ©cÃ©demment, Harlem est de trÃšs loin le quartier ou se trouve la plus grande concentration d'africains-amÃ©ricains de Manhattan (80.5%). Est-il toujours vrai qu'il faut prendre le train A dont Duke parlait dans sa chanson ?
+
+PremiÃšrement, le contenu du champ ``routes`` de la table ``nyc_subway_stations`` va nous servir Ã  rÃ©cupÃ©rer le train A. Les valeurs de ce champs sont un peu complexes.
 
 .. code-block:: sql
@@ -136,7 +136,7 @@
 .. note::
 
-   Le mot clef ``DISTINCT`` permet d'éliminer les répétitions de lignes de notre résultat. Dans ce mot clef, notre requête renverrait 491 résultats au lieu de 73.
+   Le mot clef ``DISTINCT`` permet d'Ã©liminer les rÃ©pÃ©titions de lignes de notre rÃ©sultat. Dans ce mot clef, notre requÃªte renverrait 491 rÃ©sultats au lieu de 73.
    
-Donc pour trouver le train A, nous allons demander toute les lignes ayant pour ``routes`` la valeur 'A'. Nous pouvons faire cela de différentes manières, mais nous utiliserons aujourd'hui le fait que la fonction :command:`strpos(routes,'A')` retourne un entier différent de 0 si la lettre 'A' se trouve dans la valeur du champs route.
+Donc pour trouver le train A, nous allons demander toute les lignes ayant pour ``routes`` la valeur 'A'. Nous pouvons faire cela de diffÃ©rentes maniÃšres, mais nous utiliserons aujourd'hui le fait que la fonction :command:`strpos(routes,'A')` retourne un entier diffÃ©rent de 0 si la lettre 'A' se trouve dans la valeur du champs route.
 
 .. code-block:: sql
@@ -158,5 +158,5 @@
   A,C,E
   
-Essayons de regrouper la répartition racialedans un rayon de 200 mètres de la ligne du train A.
+Essayons de regrouper la rÃ©partition racialedans un rayon de 200 mÃštres de la ligne du train A.
 
 .. code-block:: sql
@@ -177,12 +177,12 @@
    42.0805466940877366 | 23.0936148851067964 |     185259
 
-La répartition raciale le long de la ligne du train A n'est pas radicallement différente de la répartition générale de la ville de New York.
-
-Jointres avancées
+La rÃ©partition raciale le long de la ligne du train A n'est pas radicallement diffÃ©rente de la rÃ©partition gÃ©nÃ©rale de la ville de New York.
+
+Jointres avancÃ©es
 -----------------
 
-Dans la dernière partie nous avons vu que le train A n'est pas utilisé par des populations si éloignées de la répartition totale du reste de la ville. Y-a-t-il des train qui passent par des parties de la ville qui ne sont pas dans la moyenne de la répartition raciale ?
-
-Pour répondre à cette question, nous ajouterons une nouvelle jointure à notre requête, de telle manière que nous puissions calculer simultanément la répartition raciale de plusieures lignes de métros à la fois. Pour faire ceci, nous créerons une table qui permettra d'énumérer toutes les lignes que nous voulons regrouper.
+Dans la derniÃšre partie nous avons vu que le train A n'est pas utilisÃ© par des populations si Ã©loignÃ©es de la rÃ©partition totale du reste de la ville. Y-a-t-il des train qui passent par des parties de la ville qui ne sont pas dans la moyenne de la rÃ©partition raciale ?
+
+Pour rÃ©pondre Ã  cette question, nous ajouterons une nouvelle jointure Ã  notre requÃªte, de telle maniÃšre que nous puissions calculer simultanÃ©ment la rÃ©partition raciale de plusieures lignes de mÃ©tros Ã  la fois. Pour faire ceci, nous crÃ©erons une table qui permettra d'Ã©numÃ©rer toutes les lignes que nous voulons regrouper.
 
 .. code-block:: sql
@@ -195,5 +195,5 @@
       ('7');
 
-Maintenant nous pouvons joindre les tables des lignes de métros à notre requête précédente.
+Maintenant nous pouvons joindre les tables des lignes de mÃ©tros Ã  notre requÃªte prÃ©cÃ©dente.
 
 .. code-block:: sql
@@ -239,20 +239,20 @@
 
 
-Comme précédemment, les jointure créent une table virtuelle de toutes les combinaisons possible disponibles à l'aide des contraintes de type ``JOIN ON`, ces lignes sont ensuite utilisées dans le regroupement ``GROUP``. La magie spatiale tiend dans l'utilisation de la fonction ``ST_DWithin`` qui s'assure que les bloques sont suffisamment proches des lignes de métros inclues dans le calcul.
+Comme prÃ©cÃ©demment, les jointure crÃ©ent une table virtuelle de toutes les combinaisons possible disponibles Ã  l'aide des contraintes de type ``JOIN ON`, ces lignes sont ensuite utilisÃ©es dans le regroupement ``GROUP``. La magie spatiale tiend dans l'utilisation de la fonction ``ST_DWithin`` qui s'assure que les bloques sont suffisamment proches des lignes de mÃ©tros inclues dans le calcul.
 
 Liste de fonctions
 ------------------
 
-`ST_Contains(geometry A, geometry B) <http://postgis.org/docs/ST_Contains.html>`_: retourne TRUE si et seulement si aucun points de B est à l'extérieur de A, et si au moins un point à l'intérieur de B  est à l'intérieur de A.
-
-`ST_DWithin(geometry A, geometry B, radius) <http://postgis.org/docs/ST_DWithin.html>`_: retourne TRUE si les géométries sont distantes du rayon donné. 
-
-`ST_Intersects(geometry A, geometry B) <http://postgis.org/docs/ST_Intersects.html>`_: retourne TRUE si les géométries/géographies "s'intersectent spatialement" (partage une portiond de l'espace) et FALSE sinon (elles sont dijointes). 
-
-`round(v numeric, s integer) <http://www.postgresql.org/docs/7.4/interactive/functions-math.html>`_: fonction de PostgreSQL qui arrondit à s décimales.
-
-`strpos(chaîne, sous-chaîne) <http://www.postgresql.org/docs/current/static/functions-string.html>`_: fonction de chaîne de caractères de PostgreSQL qui retourne la position de la sous-chaine.
-
-`sum(expression) <http://www.postgresql.org/docs/8.2/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: fonction d'agrégation de PostgreSQL qui retourne la somme d'un ensemble de valeurs.
+`ST_Contains(geometry A, geometry B) <http://postgis.org/docs/ST_Contains.html>`_: retourne TRUE si et seulement si aucun points de B est Ã  l'extÃ©rieur de A, et si au moins un point Ã  l'intÃ©rieur de B  est Ã  l'intÃ©rieur de A.
+
+`ST_DWithin(geometry A, geometry B, radius) <http://postgis.org/docs/ST_DWithin.html>`_: retourne TRUE si les gÃ©omÃ©tries sont distantes du rayon donnÃ©. 
+
+`ST_Intersects(geometry A, geometry B) <http://postgis.org/docs/ST_Intersects.html>`_: retourne TRUE si les gÃ©omÃ©tries/gÃ©ographies "s'intersectent spatialement" (partage une portiond de l'espace) et FALSE sinon (elles sont dijointes). 
+
+`round(v numeric, s integer) <http://www.postgresql.org/docs/7.4/interactive/functions-math.html>`_: fonction de PostgreSQL qui arrondit Ã  s dÃ©cimales.
+
+`strpos(chaÃ®ne, sous-chaÃ®ne) <http://www.postgresql.org/docs/current/static/functions-string.html>`_: fonction de chaÃ®ne de caractÃšres de PostgreSQL qui retourne la position de la sous-chaine.
+
+`sum(expression) <http://www.postgresql.org/docs/8.2/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: fonction d'agrÃ©gation de PostgreSQL qui retourne la somme d'un ensemble de valeurs.
 
 .. rubric:: Footnotes
