(avec l'autorisation du Clark Labs - exercice librement inspiré du didacticiel d'Idrisi32)
Objectifs : gestion de bases de données par filtrage et création de requêtes à l'aide du langage SQL
Fonctions décrites dans ce TP : Database Workshop, Filter Table, Add field, Calculate Field Values
Comme cela a été vu dans la fiche guide 1.2, une collection de vecteurs est créée en associant des fichiers attributs et un fichier à référence spatiale.
Une des façons les plus simples d'accéder aux tables de la base de données est d'utiliser un langage connu sous le nom de SQL (Structured Query Language). Une première approche passe les filtrages et les calculs.
a) Fermer toutes les fenêtres
- Afficher le fichier vecteur MedHomVal depuis la collection de vecteur MAZIP.
- Lancer l'atelier de base de données Database Workshop
GIS Analysis / Database Query / Database Workshop
ou à l'aide de l'icône ci-dessous,
- Déplacer la table en bas à droite de l'écran.
- Faire en sorte que la carte et la table soit visible.
b) Sélectionner l'icône des filtres de la table (Filter Table) du Database Workshop.
- La partie gauche de l'écran de dialogue va contenir les requêtes ;
- La partie droite contient les utilitaires de rédaction.
Noter que :
- chaque expression est séparée de la suivante par un espace ;
- les noms de champs qui contiennent des caractères spéciaux (comme les blancs) sont entourés de crochets "[ ]" ;
- il est recommandé d'utiliser l'utilitaire de rédaction d'expression SQL.
- Filtrage des données pour trouver toutes les zones ZIP dont la valeur médiane des maisons (median home value) est supérieur à quatre fois le revenu médian.
- L'astérisque dans la boîte de saisie après Select signifie :
=> la table filtrée contient tous les champs
Le laisser par défaut.
Si l'on ne veut que certains champs, les nommer à sa place :
- en les séparant par des virgules ;
- en conservant le champ clef (ou jointure, ID field)
- La zone From est comprise dans la table courante (Demographic).
- La boîte de saisie Where est au coeur de l'opération de filtrage.
Elle contient les paramètres qui seront évalués comme vrai ou faux quand le filtre interrogera les enregistrements.
- La boîte de saisie du tri (Order by) est optionnelle.
- Elle est laissée à blanc ;
ou
- effectuera un tri croissant dans la table selon le champ indiqué
c) Taper directement ou utiliser l'utilitaire d'expressions SQL pour générer l'expression suivante dans la boîte WHERE :
[MedHomVal] > (4 * [MedHHInc] )
Noter que :
- il y a un espace de part et d'autre de l'opérateur plus grand que ">" et multiplié "*" ;
- l'usage des parenthèses pour lever les ambiguïtés.
- Valider par OK.
Quand la requête fonctionne, tous les objets qui :
- respectent la condition sont affichés en rouge ;
- ne respectent pas la condition sont affichés en bleu foncé ;
Noter aussi que :
- la table ne contient plus que les enregistrements pour qui la condition est "vrai" (polygones en rouge sur la carte) ;
- si vous cliquer avec le curseur d'interrogation (Cursor Inquiry Mode) sur un polygone bleu foncé, il est indiqué comme inconnu.
d) Cliquer plusieurs fois de suite sur l'icône d'inversion du Database Workshop.
- Cela permet juste de voir rapidement où l'analyse porte.
Noter aussi que :
- Si plusieurs cartes sont affichées à l'aide d'une collection
toutes montrent le résultats du filtrage.
e) Enfin, pour enlever le filtre, activer l'icône correspondante (Remove Filter icon)
f) Laisser la base de données à l'écran
- Fermer toutes les cartes de la collection.
Il faut créer un nouveau champ et pour cela toutes les cartes doivent être fermées pour des questions d'accès lorsque l'on modifie la structure de la table.
g) Ajouter un champ par le menu d'édition de l'atelier de base de données.
Edit / Add field
Dans la fenêtre du gestionnaire de champs (Field Manager)
- Nom du nouveau champ => MFratio
- Type de données (Data Type) => Réel simple précision (Single Precision Real)
- Valider par OK.
- Contrôler que le nouveau champ a été créé à droite des champs existants.
h) Cliquer sur l'icône de calcul de champs.
Dans la fenêtre de la calculatrice SQL (SQL Calculate)
- Nom du champ à calculer (Set) => MFratio
- Formule (zone "=") => [Males] / [Females]
Les taper directement ou les sélectionner dans les champs (Fields).
Noter que :
- il y a un espace de part et d'autre de l'opérateur de division.
- Valider par OK.
puis
- Accepter de modifier la base de données.
- Déplacer les curseurs pour voir le résultats de MFratio.
i) Sélectionner une cellule du champ MFratio.
- Afficher une vue du résultat.
- Noter la distribution spatiale.
Relevez le défi !
Créer un affichage booléen des villes du Massachusetts où il y a plus d'homme que de femmes (le ratio homme / femme supérieur à un).
Les requêtes ont été faites dans cet exercice sur les attributs dans la base de données. C'était possible en raison de l'unicité des objets, les ZIP, pour lesquels on avait de multiples attributs. L'affichage du résultat des requêtes se faisait par un lien entre la base de données et le fichier vecteur au travers des zones ZIP. Comme on le verra dans la partie 2 du didacticiel, on apprendra à utiliser les outils du SIG raster pour faire des requêtes sur des objets multiples (décrivant différentes superpositions).
NB : les mots suivis de "*" font partie du vocabulaire géographique, donc leur définition doit être connue. Faites-vous un glossaire.