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 :

Regrouper des polygones qui se touchent (novice)


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Points : 54
    Points
    54
    Par défaut Regrouper des polygones qui se touchent (novice)
    Bonjour à tous, j'essaie d'obtenir les centroides du regroupement des polygones d'une même couche qui se touchent, sur une BDD très conséquente (plusieurs dizaines de millions d'entités).

    Pour cela, j'utilise la formule suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    drop table if exists couche_regroup;
    create table couche_regroup as(
     
    	select st_centroid(st_unaryunion(unnest(st_clusterintersecting(geom)))) as geom
            from bati_test
    )
    Cela fonctionne parfaitement lorsque j'ai moins de 6 000 000 d'éléments. exemple: j'ai ce message normal qui apparaît, avec le nombre d'entités créées. https://zupimages.net/viewer.php?id=20/15/ielc.png

    Mais si je dépasse 6 000 000 d'entités, la requête se termine mais aucun élément n'est créé dans la table. J'ai ce message qui s'affiche, mais ne me renvoie rien.
    https://zupimages.net/viewer.php?id=20/15/o41z.png

    Je ne comprends pas.

    Je vous remercie.

  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 739
    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 739
    Points : 52 451
    Points
    52 451
    Billets dans le blog
    5
    Par défaut
    Il est possible que l'ensemble des objets agrégés dépasse la capacité de PostGreSQL à les stocker....

    Essayez en transposant votre base de PostGreSQL à SQL Server de voir ce qui se passe...

    À priori il faut partir sur un UnionAggregate dans SQL Server, du genre :

    SELECT GEOMETRY::UnionAggregate(geom)

    Puis dissocier les objets qui ne se recoupent pas et calculer leurs barycentre....

    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. algorithme qui regroupement des mêmes valeurs
    Par luchoo dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/09/2011, 00h28
  2. Réponses: 3
    Dernier message: 08/03/2010, 14h36
  3. Réponses: 4
    Dernier message: 24/02/2010, 10h31
  4. Des canvas qui se touchent avec grid
    Par calogerogigante dans le forum Tkinter
    Réponses: 7
    Dernier message: 22/01/2010, 20h19
  5. Réponses: 0
    Dernier message: 14/04/2009, 00h40

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