IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

[Postgis] Construction de requête


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut [Postgis] Construction de requête
    Bonjour,

    Actuellement en stage au Conseil Régional Aquitaine et plus particulièrement au sein de la cellule THD (Très Haut Débit), je travaille sur des données télécom. C’est dans ce cadre que j’essaye de créer une base de données Postgis, en lien avec Qgis, avec pour objectif d’extraire des données directement depuis la base via des requêtes.
    Etant néophyte dans ce domaine, je fais appel à vous car j’ai plusieurs problèmes que je n’arrive pas à résoudre malgré mes lectures sur le langage SQL…

    J’ai donc créé une base PostGis et y ai ajouté une centaine de tables de formats différents (shp, .txt, .csv).


    Mes questions :
    - j’ai dans la plupart de mes tables .txt deux colonnes avec des coordonnées X, Y. Dois-je faire une opération particulière pour ajouter une colonne the_geom comme c’est le cas pour les shapes (cela s’est fait automatiquement pour ces tables) ?

    - Dois-je attribuer la même projection à toutes mes tables ?


    L’objectif de cette base est d’extraire des données à une échelle infra-départementale (communauté de commune, communauté d’agglo, ou communauté urbaine), sachant que dans les tables les informations ne sont localisées qu’à l’échelle de la commune (code INSEE). En effet, une communauté de commune va faire appel à nous afin que nous leur fournissions les informations à l’échelle de leur territoire.

    L’idéal serait donc de réaliser un ensemble de requêtes basées sur un territoire infra-départemental (communauté de commune…) afin de récupérer des données qui se trouvent à l’échelle de la commune dans la base.

    J’ai donc ajouté une table contenant les correspondances entre code INSEE et communauté de commune d’appartenance.
    Je pensais donc fonctionner de deux manières :
    - pour les tables qui ne contiennent pas de coordonnées X,Y il faut donc que je fasse une requête attributaire, je voulais donc rechercher les différents codes INSEE qui m’intéresse au sein de toute la base pour rapatrier toutes les infos
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM wifi_dep_24, wifi_dep_33……………
    WHERE code_insee = '24001'
    Problème, la requête ne peut pas se faire car le champ code_insee apparait dans plusieurs tables. Comment puis-je donc réaliser cette requête ?
    Serait-il possible de réaliser la requête dans l’autre sens, à savoir rechercher une communauté de communes dans la table de correspondance INSEE-communauté de commune, trouver les codes INSEE associés et ensuite réaliser la requête de ces codes INSEE sur toute la table.

    - pour les tables ayant une colonne the_geom, pensez-vous qu’il est possible de faire une requête spatiale ou géométrique, toujours par rapport à la table de correspondance code INSEE-communauté de commune ? Si oui, je n’ai aucune idée sur la façon de procéder donc je suis preneur de quelques pistes.


    Merci d’avance pour votre aide qui me sera précieuse.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Une chose à la fois.....

    tu peux récupérer les codes INSEE en fonction de la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM wifi_dep_24, wifi_dep_33……………
    WHERE wifi_dep_24.code_insee = '24001'
    AND wifi_dep_23.code_insee = '24001'
    ......

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    Oui mais sachant que j'ai une centaine de tables je voulais savoir s'il était possible de simplifier la requête.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Oui, modéliser correctement la base de données .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    Désolé pour cette réponse tardive mais j'étais occupé sur une autre mission et celle-ci été mise en suspens.

    J'ai donc ajouté une colonne the_geom à toutes mes tables et je les ai updatées avec cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table set the_geom = ST_GeomFromText('POINT('||_long||' '|| _lat||')',4326);
    Cela a fonctionné pour la majorité des tables mais j'ai deux types d'erreurs pour d'autres :


    Soit :

    - ERREUR: parse error - invalid geometry

    HINT: "POINT(" <-- parse error at position 6 within geometry

    ********** Erreur **********

    ERREUR: parse error - invalid geometry

    État SQL :XX000
    Soit :

    - ERREUR: Invalid OGC WKT (too short)

    ********** Erreur **********
    ERREUR: Invalid OGC WKT (too short)

    État SQL :XX000
    Je ne comprend pas à quoi sont dues ces erreurs car les tables .txt sont au même format et de structures similaires.


    Sinon, concernant la requête elle-même, je suis parvenu à la réaliser via une jointure entre ma table insee_commune et les autres tables avec ce code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT* 
    FROM aquit_communes_2011
     
    INNER JOIN optique_pro_dep24 ON(optique_pro_dep24.insee=aquit_communes_2011.num_com)
     
    WHERE aquit_communes_2011.pays_nom='Le Périgord Vert';

    Étant donné que j'ai à chaque fois 5 tables de structures identiques (une par département de la région aquitaine), comment pourrais-je faire pour fusionner ces 5 tables et ainsi réaliser une seule requête sur cette "super table" plutôt que 5 requêtes sur 5 tables comme je le fait actuellement ? Quelle fonction dois-je utiliser.


    Merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 11
    Par défaut
    J'ai bien avancé grâce à tous vos conseils et je vous en remercie.

    Je voulais savoir si c'était possible d'updater une colonne à partir d'une colonne d'un fichier .csv créé sous excel ?

    J'ai essayé ça mais ça ne fonctionne pas :

    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE aquitaine_pylones_ftdit set insee = 'C:/Program Files/PostgreSQL/9.0/Classeur2.csv' ;
    Problème : il m'inscrit tout simplement ce qu'il y a écrit entre les guillemets au lieu de copier le contenu de la colonne située sous le chemin d'accès.

Discussions similaires

  1. Construction de requête
    Par grome dans le forum SQL
    Réponses: 3
    Dernier message: 03/06/2008, 17h33
  2. [Java] Outil de construction de requête et affichage du résultat
    Par Toudy dans le forum Autres outils décisionnels
    Réponses: 1
    Dernier message: 07/05/2007, 10h11
  3. Problème de construction de requête !
    Par feasil dans le forum Access
    Réponses: 5
    Dernier message: 18/04/2006, 10h36
  4. [Access] Problème de construction de requête
    Par feasil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/04/2006, 11h59
  5. Problème de construction de requête !
    Par feasil dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo