Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.


Ignore:
Timestamp:
17/03/2012 00:49:40 (12 years ago)
Author:
thomasg
Message:

Fin correction typo et orthographe V2 du document

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workshop-foss4g/joins_exercises.rst

    r47 r62  
    66Voici un petit rappel de certaines des fonctions vues précédemment. Elles seront utiles pour les exercices ! 
    77 
    8  * :command:`sum(expression)` agrégation retournant la somme d'un ensemble 
    9  * :command:`count(expression)` agrégation retournant le nombre d'éléments d'un ensemble 
    10 * :command:`ST_Area(geometry)` retourbe l'aire d'un polygone 
    11 * :command:`ST_AsText(geometry)` returns WKT ``text`` 
    12 * :command:`ST_Contains(geometry A, geometry B)` retourne vrai si la géométrie A contient la géométrie B  
     8* :command:`sum(expression)` agrégation retournant la somme d'un ensemble 
     9* :command:`count(expression)` agrégation retournant le nombre d'éléments d'un ensemble 
     10* :command:`ST_Area(geometry)` retourne l'aire d'un polygone 
     11* :command:`ST_AsText(geometry)` retourne un texte WKT 
     12* :command:`ST_Contains(geometry A, geometry B)` retourne TRUE si la géométrie A contient la géométrie B 
    1313* :command:`ST_Distance(geometry A, geometry B)` retourne la distance minimum entre deux géométries 
    14 * :command:`ST_DWithin(geometry A, geometry B, radius)` retourne vrai si la A est distante d'au plus radius de B 
    15 * :command:`ST_GeomFromText(text)` returns ``geometry`` 
    16 * :command:`ST_Intersects(geometry A, geometry B)` returns the true if geometry A intersects geometry B 
    17 * :command:`ST_Length(linestring)` retourne la longueur d'une linestring 
    18 * :command:`ST_Touches(geometry A, geometry B)` retourne vrai si le contour extérieur de A touche B 
    19 * :command:`ST_Within(geometry A, geometry B)` retourne vrai si A est hors de B 
     14* :command:`ST_DWithin(geometry A, geometry B, radius)` retourne TRUE si la A est distante d'au plus radius de B 
     15* :command:`ST_GeomFromText(text)` retourne une géométrie 
     16* :command:`ST_Intersects(geometry A, geometry B)` retourne TRUE si la géométrie A intersecte la géométrie B 
     17* :command:`ST_Length(linestring)` retourne la longueur d'une ligne 
     18* :command:`ST_Touches(geometry A, geometry B)` retourne TRUE si le contour extérieur de A touche B 
     19* :command:`ST_Within(geometry A, geometry B)` retourne TRUE si A est hors de B 
    2020 
    21 Souvenez-vous aussi des tables à votre disposition :  
     21Souvenez-vous aussi des tables à votre disposition : 
    2222 
    23  * ``nyc_census_blocks``  
    24   
     23 * ``nyc_census_blocks`` 
     24 
    2525   * name, popn_total, boroname, the_geom 
    26   
     26 
    2727 * ``nyc_streets`` 
    28   
     28 
    2929   * name, type, the_geom 
    30     
     30 
    3131 * ``nyc_subway_stations`` 
    32   
     32 
    3333   * name, routes, the_geom 
    34   
     34 
    3535 * ``nyc_neighborhoods`` 
    36   
     36 
    3737   * name, boroname, the_geom 
    3838 
     
    4040--------- 
    4141 
    42  * **"Quelle station de métros se situe dans le quartier 'Little Italy' ? Quelle est l'itinéraire de métro à emprunter ?"** 
    43   
     42 * **"Quelle station de métro se situe dans le quartier 'Little Italy' ? Quelle est l'itinéraire de métro à emprunter ?"** 
     43 
    4444   .. code-block:: sql 
    45   
    46      SELECT s.name, s.routes  
     45 
     46     SELECT s.name, s.routes 
    4747     FROM nyc_subway_stations AS s 
    48      JOIN nyc_neighborhoods AS n  
    49      ON ST_Contains(n.the_geom, s.the_geom)   
     48     JOIN nyc_neighborhoods AS n 
     49     ON ST_Contains(n.the_geom, s.the_geom) 
    5050     WHERE n.name = 'Little Italy'; 
    5151 
    52    ::  
    53    
    54        name    | routes  
     52   :: 
     53 
     54       name    | routes 
    5555    -----------+-------- 
    5656     Spring St | 6 
    57       
     57 
    5858 * **"Quels sont les quartiers desservis pas le train numéro 6 ?"** (Astuce: la colonne ``routes`` de la table ``nyc_subway_stations`` dispose des valeurs suivantes: 'B,D,6,V' et 'C,6') 
    59   
     59 
    6060   .. code-block:: sql 
    61    
    62     SELECT DISTINCT n.name, n.boroname  
     61 
     62    SELECT DISTINCT n.name, n.boroname 
    6363    FROM nyc_subway_stations AS s 
    64     JOIN nyc_neighborhoods AS n  
    65     ON ST_Contains(n.the_geom, s.the_geom)   
     64    JOIN nyc_neighborhoods AS n 
     65    ON ST_Contains(n.the_geom, s.the_geom) 
    6666    WHERE strpos(s.routes,'6') > 0; 
    67      
     67 
    6868   :: 
    69    
    70             name        | boroname   
     69 
     70            name        | boroname 
    7171    --------------------+----------- 
    7272     Midtown            | Manhattan 
     
    8787 
    8888   .. note:: 
    89    
    90      Nous avons utilisé le mot clef ``DISTINCT`` pour supprimer les répétitions dans notre ensemble de résultats où il y avait plus d'une seule station de métro dans le quartier.  
    91          
     89 
     90     Nous avons utilisé le mot clef ``DISTINCT`` pour supprimer les répétitions dans notre ensemble de résultats où il y avait plus d'une seule station de métro dans le quartier. 
     91 
    9292 * **"AprÚs le 11 septembre, le quartier de 'Battery Park' était interdit d'accÚs pendant plusieurs jours. Combien de personnes ont dû être évacuées ?"** 
    93   
     93 
    9494   .. code-block:: sql 
    95   
     95 
    9696     SELECT Sum(popn_total) 
    9797     FROM nyc_neighborhoods AS n 
    98      JOIN nyc_census_blocks AS c  
    99      ON ST_Intersects(n.the_geom, c.the_geom)   
     98     JOIN nyc_census_blocks AS c 
     99     ON ST_Intersects(n.the_geom, c.the_geom) 
    100100     WHERE n.name = 'Battery Park'; 
    101     
    102    ::  
     101 
     102   :: 
    103103 
    104104     9928 
    105      
     105 
    106106 * **"Quelle est la densité de population (personne / km^2) des quartiers de 'Upper West Side' et de 'Upper East Side' ?"** (Astuce: il y a 1000000 m^2 dans un km^2.) 
    107   
     107 
    108108   .. code-block:: sql 
    109     
    110      SELECT  
    111        n.name,  
     109 
     110     SELECT 
     111       n.name, 
    112112       Sum(c.popn_total) / (ST_Area(n.the_geom) / 1000000.0) AS popn_per_sqkm 
    113113     FROM nyc_census_blocks AS c 
     
    117117     OR n.name = 'Upper East Side' 
    118118     GROUP BY n.name, n.the_geom; 
    119       
     119 
    120120   :: 
    121     
    122            name       |  popn_per_sqkm    
     121 
     122           name       |  popn_per_sqkm 
    123123     -----------------+------------------ 
    124124      Upper East Side | 47943.3590089405 
    125125      Upper West Side | 39729.5779474286 
    126126 
    127       
Note: See TracChangeset for help on using the changeset viewer.