banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#31 Tue 11 June 2019 16:28

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: A propos de NodeNetwork

Je pense que vous ne pourrez pas y couper,
puisqu'il s'agit d'un bug.

C'est plutot simple à faire :
il suffit de copier le code de la fonction dans votre éditeur de requête et de l'executer.
C'est le bloc de code apres la phrase :

Note: since I don't really understand what's the purpose of outall I dropped this parameter entirely.


A noter que vous ne modifierez pas la fonction déja existante,
mais vous en créerez une autre qui s'appellera pgr_nodenetwork_custom.
Vous pouvez aussi spécifier le schema dans lequel vous voulez créer la fonction
(dans le code proposé c'est le schema geo)

Hors ligne

 

#32 Tue 11 June 2019 16:45

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

Très bien je vais essayer :s

Hors ligne

 

#33 Tue 11 June 2019 16:49

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

ça fonctionne apparemment, whoa j'avais peur de lancer cette requête qui modifie pgr_nodeNetwork mais au final ça passe tout seul smile

Hors ligne

 

#34 Thu 13 June 2019 09:40

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

Bonjour à tous, je pose ma question ici pour être en accord avec le titre, pgr_nodeNetwork fonctionne, mais désormais que je mette true ou false en argument pour outall cela me donne le même nombre de lignes quand je fais des essais. Comment faire pour que la table "noded" ne soit pas vidée et reremplie mais que tout soit ajouter à la suite dedans ? Car pour l'instant que je mette l'un ou l'autre je perd des segments.

Hors ligne

 

#35 Thu 13 June 2019 10:27

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: A propos de NodeNetwork

C'est ce que la personne qui a modifié la fonction explique :
il ne savait pas ce que représentait le paramètre outall,
donc il ne l'utilise pas.

Il faudrait lire le code de la fonction et la modifier
pour pouvoir l'utiliser.

Hors ligne

 

#36 Thu 13 June 2019 10:43

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

Oui j'avais vu qu'il avait mis ça mais je me suis dit qu'il n'y avait pas touché du coup. Bon bah je vais regarder mais c'est pas gagné.

Hors ligne

 

#37 Thu 13 June 2019 11:35

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: A propos de NodeNetwork

J'ai essayé de voir ce que je pouvais faire,
en fait outall n'était pas utilisé et la fonction
supprimait la table à chaque appel.

Ici une version corrigée, non testée,
du code source de la branche master.

https://gitlab.com/snippets/1866132

Hors ligne

 

#38 Thu 13 June 2019 11:35

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

Bon j'ai truandé encore un peu plus mdr.

Voilà mon nouveau code :

Code:

DO $PROC$
DECLARE
    nb integer:= 50; --TODO: choisir la valeur adaptée
    max integer:= 0;
    actu integer:= 1;
BEGIN
    SELECT max(id) FROM planet_osm_line INTO max;
    WHILE actu  + nb < max LOOP
        EXECUTE
            $$
            SELECT pgr_nodeNetwork_custom('planet_osm_line',
                                     0.1, 
                                     'osm_id',
                                     'way', 
                                     'noded',
                                     rows_where:=$1, outall:= false);
                                     INSERT INTO noded
                                      (SELECT * FROM planet_osm_line_noded
                                       WHERE id NOT IN
                                       (SELECT id FROM noded));
            $$
            USING format('id BETWEEN %s AND %s', actu, actu + nb);
        actu:=actu+nb;
    END LOOP;
END;
$PROC$
LANGUAGE plpgsql;

C'est pas encore au point car si je le lance seul, le bloc :

Code:

INSERT INTO noded
                                      (SELECT * FROM planet_osm_line_noded
                                       WHERE id NOT IN
                                       (SELECT id FROM noded));

Fonctionne, mais ajouté à la fonction comme en haut ça ne semble pas fonctionner je continue de chercher.

Hors ligne

 

#39 Thu 13 June 2019 11:38

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

tumasgiu a écrit:

J'ai essayé de voir ce que je pouvais faire,
en fait outall n'était pas utilisé et la fonction
supprimait la table à chaque appel.

Ici une version corrigée, non testée,
du code source de la branche master.

https://gitlab.com/snippets/1866132


Oui j'avais vu ça aussi mais je préfère ajouter "manuellement" avec la boucle, enfin sauf si tu me dis que cette solution est meilleure dans ce cas je ferais ça . Qu'en penses tu ?

Hors ligne

 

#40 Thu 13 June 2019 12:52

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

Bon pour info la fonction pgr_nodeNetwork modifiée ne semble toutjours pas prendre en compte le outall.

Hors ligne

 

#41 Thu 13 June 2019 13:54

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: A propos de NodeNetwork

Est ce que vous etes sûr que vous utilisez bien la bonne version ?

La commande SQL que j'ai posté crée la fonction dans le schema public.

Dernière modification par tumasgiu (Thu 13 June 2019 13:56)

Hors ligne

 

#42 Thu 13 June 2019 14:00

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: A propos de NodeNetwork

Sinon Votre version devrait fonctionner,
il faut juste déplacer votre commande INSERT

Code:

DO $PROC$
DECLARE
    nb integer:= 50; --TODO: choisir la valeur adaptée
    max integer:= 0;
    actu integer:= 1;
BEGIN
    SELECT max(id) FROM planet_osm_line INTO max;
    WHILE actu  + nb < max LOOP
        EXECUTE
            $$
            SELECT pgr_nodeNetwork_custom('planet_osm_line',
                                     0.1, 
                                     'osm_id',
                                     'way', 
                                     'noded',
                                     rows_where:=$1, outall:= false);
            $$
            USING format('id BETWEEN %s AND %s', actu, actu + nb);
            INSERT INTO noded
                      (SELECT * FROM planet_osm_line_noded
                       WHERE id NOT IN (SELECT id FROM noded));
        actu:=actu+nb;
    END LOOP;
END;
$PROC$
LANGUAGE plpgsql;

Hors ligne

 

#43 Thu 13 June 2019 14:29

D3us
Participant actif
Date d'inscription: 6 Mar 2019
Messages: 57

Re: A propos de NodeNetwork

Oui j'ai modifié comme cela mais cela pose problème avec les id vu que pgr_nodeNetwork en générait entre chaque loop ils étaient pris pour des doublons. Du coup j'ai utilisé la nouvelle version du pgr_nodeNetwork et je vais voir.

Hors ligne

 

Pied de page des forums

Powered by FluxBB