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

Extensions PostgreSQL Discussion :

Agrégation d'une couche point se trouvant dans un polygone (correspondance multiple)


Sujet :

Extensions PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Agrégation d'une couche point se trouvant dans un polygone (correspondance multiple)
    Bonjour à tous,

    Je rencontre depuis un moment un point bloquant dans la réalisation d'une demande dans mon stage.
    Je souhaite ajouter un champ à ma couche SITE.shp (couche de point avec plus de 160000 entités) qui fera la somme de 'X' attributs d'un champ y compris le point sélectionné (nombre de logement total=loc_nb_tot) correspondant aux points se trouvant a 'Y' mètres du point sélectionné mais sur la même couche !

    Dans QGIS, il y a une fonction qui s'appelle compter les points dans un polygone. C'est a peu prés ce que j'ai cherché a faire mais a la place du comptage, je veux agréger des attributs.

    J'ai importé la couche SITE sous POSTGIS
    J'ai fait un tampon de 100m sous qgis puis j'ai importé sous POSTGIS

    J'ai testé différentes fonction comme st_intersect,st_within,... mais a chaque fois j'obtiens le même résultat mais qui est faux en majorité !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT site.*, count(*), sum(site.loc_nb_tot)
    FROM site, tampon100
    WHERE st_intersects(site.geom,tampon100.geom)
    group by site.gid
    En faite sur la couche tampon100, il y a beaucoup de tampon qui se croisent a cause de la faible distance des points d'origine de la couche source SITE et j'ai l'impression que ma requête ne tient pas compte de cela. Car sur 2 sites isolés loin de la masse de points il me fait le bon calcul.
    Mais lorsque nous sommes dans la masse de points le calcul est faussé.

    J'ai remarqué que la couche tampon100 à une géométrie en multipolygon.
    Et en sortie de ma requête quand je crée une vue, ma couche site_tampon100 est passé en multipoint.

    Je pense que mon erreur viens de la mais je n'arrive pas a la régler.

    J'ai trouvé sur des forums la fonction st_dump qui pourrait peut être m'aider mais j'avoue avoir perdu pas mal de temps sur cela et j'ai peur de ne pas pouvoir finir...

    Pourriez vous m'aider sur ce sujet ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Totalement incompréhensible !

    Je ne sais même pas ce qu'est une "somme de 'X' attributs d'un champ "...
    En matière de SGBDR on parle de colonne. Pas de champs. Les champes c'est pour les paysans !
    Et un attribut d'un champ c'est comme si vous parliez d'une colonne d'une colonne ! (ou un attribut d'attribut...)

    Un exemple ?
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Désolé pour le vocabulaire, c'est assez nouveau pour moi. Et effectivement c'est peu compréhensible..
    En faite, à l'origine je n'est qu'une couche shp de point. Dans la table attributaire de cette couche j'ai une colonne qui contient des valeurs correspondant au nombre de personnes (loc_nb_tot).
    Je souhaites obtenir 2 nouvelles colonnes qui me comptabilisera le nombre de point (count) et le nombre de personnes (sum) pour tout les points se trouvant dans un rayon de 100m par rapport a un point d'orgine. Mais le count et le sum devront prendre également en compte le point d'origine.

    J'ai donc crée un buffer de 100m sur tous les points et essayé pas mal de requête afin d'obtenir mon résultat mais en vain.

    Sur QGIS, il y a un outils SAGA: point statistics for polygon qui réalise exactement ce que je veux mais il plante par rapport au nombre d'entité. Et je ne peux pas de faire de requête un peu plus avancées mais qu'une somme simple et un comptage.

    Donc je cherche via POSTGIS a réaliser une requête qui me donnera le même résultat
    Voici un rendu de l'outil saga afin de voir les valeurs que je souhaites avoir :
    Nom : Rendu.PNG
Affichages : 902
Taille : 184,0 Ko

    Auriez vous une idée pour faire avancer mon problème?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Faites une intersection entre votre buffer et les points et comptez le nombre d'objets résultants.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Passer d'une couche a l'autre dans un OverView.
    Par solaar dans le forum SIG : Système d'information Géographique
    Réponses: 0
    Dernier message: 04/04/2013, 18h40
  2. Réponses: 4
    Dernier message: 17/02/2011, 21h41
  3. Réponses: 2
    Dernier message: 28/09/2010, 10h04
  4. Réponses: 5
    Dernier message: 16/01/2010, 20h37
  5. Savoir si un point est inclus dans un polygone quelconque
    Par SuperBIBI dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/08/2005, 19h02

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