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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Fri 12 July 2019 15:50

J.Brgn
Juste Inscrit !
Date d'inscription: 5 Jul 2019
Messages: 3

QGIS / PPA: Methode pour prioriser les territoires selon l enjeu

Bonjour à toutes et à tous,

Je me permets de poster un message car j’ai grandement besoin de votre aide sur QGIS.

Je travaille dans une structure qui est PPA sur les documents d’urbanisme, donc nous émettons régulièrement des avis dans ce cadre. Nous souhaiterions mieux nous organiser en priorisant les sollicitations sur les documents d’urbanisme par rapport à certains critères que l’on n’a pas encore défini précisément, mais j’ai ma petite idée :

- Le type de territoire : plutôt urbain ? plutôt rural ?
- Le nombre d’habitants
- L’évolution du nombre d’habitants
- La densité de population
- Le nombre d’entreprises artisanales
- L’évolution du nombre d’entreprises artisanales
- Le nombre de commerces
- L’évolution du nombre de commerces
- Projet d’infrastructure
- Projet urbains
- Projet de développement local
....

Nous voulons réaliser une carte qui montre le niveau de priorité pour chaque commune (avec une nuance du vert au rouge par exemple). Cette carte indiquerait si l’enjeu est faible, moyen ou fort. A chacun des critères de cette liste ci-dessus, nous allons associer des seuils pour pouvoir ensuite traiter cela sous QGiS. Par exemple :

Nombre d’habitants :
10000 = 3


Evolution du nombre d’habitants
:
-5 à 5 = 1
-20 à -5 et 5 à 20 = 2
>-20 et >20 = 3

L’idée est de dire : pour un territoire X, si les critères montrent une majorité de 3, ce territoire comporte de forts enjeux, donc ce territoire est prioritaire.
Au contraire, si le territoire X, les critères montrent une majorité de 1, alors ce territoire comporte des enjeux plus faibles et n’est donc pas prioritaire.

J'espère que vous voyez ce que je veux dire, j'ai l'impression de ne pas être très clair haha.

Vous avez des solutions pour moi ? Je précise que je ne suis pas du tout géomaticien mais par contre j'aime passer du temps à expérimenter sur QGiS smile

Je vous remercie d'avance, Bon week-end

Hors ligne

 

#2 Mon 15 July 2019 11:27

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS / PPA: Methode pour prioriser les territoires selon l enjeu

Bonjour,

Dans l'idée, il faut rapatrier au sein d'une couche toutes les colonnes correspondant aux variables avec le niveau

Pour cela, si plusieurs couches, utiliser union

Soit une couche ayant cette forme :

Code:

id | V1 | V2 | V3
1  | 1   | 3 |  3
2  | 3   | 1 |  1

Par la suite, pour calculer les statistiques de comptage, alors on peut utiliser l'expression suivante qui donne quel niveau a la majorité parmi les trois variables du tableau :

Code:

with_variable('counts',
array(
array_count(array("V1", "V2","V3"), 1),
array_count(array("V1", "V2","V3"), 2),
array_count(array("V1", "V2","V3"), 3)
),
array_find(@counts, array_max(@counts)) + 1
)

Soit, en résultat :

Code:

id | V1 | V2 | V3 | majorite
1  | 1   | 3 |  3 | 3
2  | 3   | 1 |  1 | 1

Histoire de décomposer :

Code:

array("V1", "V2","V3")

crée un tableau contenant les niveaux pour chacune des trois colonnes

Code:

array_count(array("V1", "V2","V3"), 1)

compte le nombre de cellules contenant la valeur de niveau 1 pour chacune des lignes

Ainsi, soit un tableau contenant ces valeurs :

Code:

[1,0,2]

Code:

array_find(@counts, array_max(@counts))->2

retourne l'index dans le tableau de comptage qui contient la valeur de comptage maximale, soit ici l'index 2 pour la valeur maximale de 2 (l'index va de 0 à 2)

Pour avoir un index plus réaliste :

Code:

array_find(@counts, array_max(@counts)) + 1

geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 16 July 2019 16:15

J.Brgn
Juste Inscrit !
Date d'inscription: 5 Jul 2019
Messages: 3

Re: QGIS / PPA: Methode pour prioriser les territoires selon l enjeu

Merci beaucoup pour ta réponse MathieuR !

J'essaye cela dès que possible. A première lecture, je sens que je vais galérer, je n'ai jamais eu à faire quelque chose de ce type. Mais c'est l'occasion d'essayer smile

Je vous tiens au courant

Hors ligne

 

#4 Wed 17 July 2019 15:24

J.Brgn
Juste Inscrit !
Date d'inscription: 5 Jul 2019
Messages: 3

Re: QGIS / PPA: Methode pour prioriser les territoires selon l enjeu

MathieuR a écrit:

Bonjour,

Dans l'idée, il faut rapatrier au sein d'une couche toutes les colonnes correspondant aux variables avec le niveau

Pour cela, si plusieurs couches, utiliser union

Soit une couche ayant cette forme :

Code:

id | V1 | V2 | V3
1  | 1   | 3 |  3
2  | 3   | 1 |  1

Par la suite, pour calculer les statistiques de comptage, alors on peut utiliser l'expression suivante qui donne quel niveau a la majorité parmi les trois variables du tableau :

Code:

with_variable('counts',
array(
array_count(array("V1", "V2","V3"), 1),
array_count(array("V1", "V2","V3"), 2),
array_count(array("V1", "V2","V3"), 3)
),
array_find(@counts, array_max(@counts)) + 1
)

Soit, en résultat :

Code:

id | V1 | V2 | V3 | majorite
1  | 1   | 3 |  3 | 3
2  | 3   | 1 |  1 | 1

Histoire de décomposer :

Code:

array("V1", "V2","V3")

crée un tableau contenant les niveaux pour chacune des trois colonnes

Code:

array_count(array("V1", "V2","V3"), 1)

compte le nombre de cellules contenant la valeur de niveau 1 pour chacune des lignes

Ainsi, soit un tableau contenant ces valeurs :

Code:

[1,0,2]

Code:

array_find(@counts, array_max(@counts))->2

retourne l'index dans le tableau de comptage qui contient la valeur de comptage maximale, soit ici l'index 2 pour la valeur maximale de 2 (l'index va de 0 à 2)

Pour avoir un index plus réaliste :

Code:

array_find(@counts, array_max(@counts)) + 1


Bonjour,

J'ai bien compris la logique du raisonnement que vous m'avez expliqué MathieuR, mais quelques points me bloquent :

- dans votre formule, je remplace bien les V1, V2, V3 par le nom de mes champs ?

- à quoi correspondentexactement les 1, 2 et 3 à la fin de ce code ?
array_count(array("V1", "V2","V3"), 1),
array_count(array("V1", "V2","V3"), 2),
array_count(array("V1", "V2","V3"), 3)

- y a t-il autre chose à rajouter dans cette formule (signe =, des espaces à supprimer) ?

Quand je copie-colle votre formule dans la calculatrice de champ, en changeant les V1, V2, V3 par le nom de mes champs, cela me met que la formule est incorrecte.

Je sais bien que mes questions peuvent paraître simplistes, mais c'est une des première fois que suis amené à utiliser ce type de formule.

Un grand merci d'avance.

Bonne journée,

Hors ligne

 

Pied de page des forums

Powered by FluxBB