Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 1 sur 1
  1. #1

    Question Fonction itère sur toutes les tables d'un schéma

    Bonjour,

    J'ai une couche de points de plusieurs millions d'entités sur la France entière.
    J'ai décidé d'utiliser la fonction \gexec de psql pour diviser mon jeu de données en plusieurs tables correspondant à chaque département.


    Code:
    SELECT 'DROP TABLE IF EXISTS pt_cuivre.dep' || code_dep || '; CREATE TABLE pt_cuivre.dep'|| code_dep || ' AS SELECT  * FROM cuivre.v_france_extract_dep WHERE code_dep =' || quote_literal(code_dep) || ';' AS requete FROM (SELECT DISTINCT code_dep FROM cuivre.v_france_extract_dep) AS a \gexec
    J'aimerais générer des diagrammes de voronoi en reprenant le même principe (c'est à dire une table de voronoi par département) mais en repartant des tables du schéma pt_cuivre.
    Ma question est : comment exécuter mon script en lui faisant boucler sur toutes les tables du schéma pt_cuivre?

    J'ai commencé une fonction qui crée la requête dynamique me donnant pour chaque table la bonne requête à exécuter. (l'essentiel du travail de génération de voronoi vient de de John Powell : https://gis.stackexchange.com/questi.../172256#172256

    Code:
    CREATE OR REPLACE FUNCTION voronoi_pt_cuivre_dep() RETURNS VARCHAR as $BODY$
    BEGIN
    EXECUTE format($$
    -- Calcule l'enveloppe concave pour les points d'entrée
    -- les points sur l'enveloppe concave sont ceux qui ont des polygones non fermés dans le diagramme de Voronoï en sortie.
                 WITH conv_hull(geom) AS
                (SELECT ST_ConcaveHull( ST_Collect(geom),0.70,true ) 
                   FROM %1$s.%2$s meshpoints), 
    -- Trouve les points d'origine de l'enveloppe concave
               edge_points(points) AS 
                   (SELECT mp.geom FROM %1$s.%2$s mp, conv_hull ch 
                   WHERE ST_Touches(ch.geom, mp.geom)),
    -- Buffer autour de l'enveloppe (distance arbitraire)    
                 buffered_points(geom) AS             
                (SELECT ST_Buffer(geom, 100) as geom FROM conv_hull),
    -- Trouve les points les plus proches du buffer de l'enveloppe la plus proche des points de l'étape 2                     
              closest_points(points) AS     
                (SELECT ST_Closestpoint(ST_Exteriorring(bp.geom), ep.points) as points,ep.points as epoints FROM buffered_points bp, edge_points ep),
    -- Ajouter ces points au jeu de données d'origine        
              combined_points(points) AS     
            (SELECT points FROM closest_points UNION SELECT geom FROM %1$s.%2$s meshpoints),
    -- Calcule les diagrammes de voronoi à partir de ce jeu de données combiné. Tous les points ont maintenant des polygones fermés                     
              voronoi (vor) AS 
           (SELECT ST_Dump(ST_VoronoiPolygons(ST_Collect(points))) as geom FROM combined_points)    
        SELECT 
         (vor).path[1] as id, 
         (vor).geom 
        INTO voronoi.%2$s                                  
         FROM voronoi                              
        $$, schemaname, tablename)
    FROM pg_catalog.pg_tables
    WHERE schemaname = 'pt_cuivre';               
    END
    $BODY$ LANGUAGE plpgsql;
    Lorsque j'essaye d'exécuter ma fonction Postgres me dit que plus d'une ligne est renvoyée..je ne trouve pas mon erreur dans le code, auriez vous une idée?

    Merci d'avance!

    Marine.

 

 

Discussions similaires

  1. [ArcGIS 10.x] Restriction des classes de relation en fonction du schéma
    Par Vincent_M13 dans le forum Assistance Technique
    Réponses: 0
    Dernier message: 08/02/2013, 15h31
  2. [MapInfo 10.x] Fermeture de toutes les tables rasters
    Par Ddtphilou dans le forum Assistance Technique
    Réponses: 1
    Dernier message: 04/01/2011, 14h33
  3. [PostGreSQL 8.x] PostGIS 1.3 - Copie de tables dans un autre schéma
    Par lenox dans le forum Assistance et Programmation
    Réponses: 3
    Dernier message: 21/01/2010, 07h56
  4. [MapBasic 5.x] Fonction pour fermer toutes les tables ouvertes
    Par phoque.r dans le forum Programmation
    Réponses: 2
    Dernier message: 22/05/2007, 14h08

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •