Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Wed 02 June 2021 16:53

Jkerebel04
Participant occasionnel
Lieu: Oraison
Date d'inscription: 21 Apr 2020
Messages: 26

pgrouting - Somme valeurs de points a 50m max sur un reseau

Bonjour
J'avance petit à petit dans le monde de la cartographie SIG. Et j'aurais besoin d'un petit coup pouce pour sortir de mon ornière.
Je travail avec QGIS-GRASS et  POSTGIS

J'ai réseau routier vestoriel "tab_route"
J'ai une table de point « p_stockage » avec un champ pondération « Nb_conteneur »
J'ai une table de polygone  "parcelle"

Pour info, les polygones et les points sont au bord, mais pas forcément sur le réseau routier.

Je souhaite attribuer à chacun des polygones un champ indiquant la somme des "nb_conteneur" des points situés à moins de 50 m du polygone. Les 50m sont pris en compte seulement via le réseau routier et non à vol d'oiseau.

J'envisage de procéder ainsi :
1) création d'un tableau croisé de "parcelle" et de  "p_stockage"
2) je détermine la distance la plus courte entre le polygone "parcelle" et le "p_stockage"
3) je ne retiens que les enregistrements ou la distance est inférieure à 50 m
4 Je fais la somme, par parcelle, du champs "Nb_conteneur"

Pourriez-vous m'indiquer si la méthode vous semble faisable et quels serait les jalons supplémentaires ?

En cherchant comme procéder, j'ai suis tombé sur pgrouting pour le calcul du chemin le plus court sur QGIS. Mais c'est une procédure one-shot.
Je voudrais itérer sur l'ensemble de ma table.
Aussi je me suis orienté vers PGadmin
Sur "Postgresql" j'ai pu installer pgrouting. Mais après la procédure devient très obscur pour moi. Je ne comprends pas le concept.

Je ne comprends pas la première étape avec la fonction "pgr_createTopology"
j'obtiens un FAIL, sans plus d'explication.

Pourriez-vous m'orienter vers un tuto un peu exhaustif avec un exemple, pour que je puisse avancer ?

Cordialement
Jérôme.

Version Pgadmin 4, postgresql12 et pgrouting 3.1.1


« Patience et longueur de temps font plus que force et ni que rage » -  Jean de La Fontaine, Le Lion et le Rat.

Hors ligne

 

#2 Thu 03 June 2021 11:43

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: pgrouting - Somme valeurs de points a 50m max sur un reseau

Bonjour,

Il y a pas mal de tutoriaux sur le net indiquant comment utiliser pgRouting, souvent avec des données d'exemple.
Je vous conseille de faire un de ces tuto pour bien vous familiariser avec pgRouting et la construction de votre réseau.

Pour taper vos requetes, je vous conseille un outil plus sympa que pgAdmin, comme dbeaver ou datagrip par ex. Vous verrez des messages d'erreurs explicites venant de PG.

Dans votre cas, il faudra ajouter les p_stockage au reseau routier, pour pouvoir faire un routing entre vos parcelles et ces points (points d'arrivée).
Pareil pour le point de départ, lequel allez-vous choisir: bord de la parcelle, centroid de la parcelle, point le plus proche d'une route ?

Nicolas

Hors ligne

 

#3 Fri 04 June 2021 10:59

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: pgrouting - Somme valeurs de points a 50m max sur un reseau

Bonjour,

Dans PgAdmin 4, il faut aller dans l'onglet "messages" pour voir les messages d'erreurs retournés par pgr_createTopology.
Les messages y sont assez clairs, par ex:

Code:

[2021-06-03 16:17:14] [00000] PROCESSING:
[2021-06-03 16:17:14] [00000] pgr_analyzeGraph('ways',1e-06,'the_geom','id','source','target','true')
[2021-06-03 16:17:14] [00000] Performing checks, please wait ...
[2021-06-03 16:17:14] [00000] ----> PGR ERROR in _pgr_getColumnName: Column id not found
[2021-06-03 16:17:14] [00000] ERROR: something went wrong checking the column names

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB