#1 Wed 27 May 2015 10:36
- devnice
- Participant occasionnel
- Date d'inscription: 26 Jun 2012
- Messages: 18
QGIS : Sectorisation des communes
Bonjour à tous,
Je voudrais savoir s'il y a un outil qui permet de faire une sectorisation sur Qgis. Pour être plus clair j'ai des communes avec en attribut le nombre d'habitants; et je voudrais qu'une commune ou groupe de communes contigues qui a entre 85 et 115 habitants soit considéré(é) comme un secteur. Je voulais le faire manuellement mais vue le nombre de communes ça devient vite fastidieux.
Je vous remercie d'avance de vos suggestions.
Merci et bonne journée.
Dernière modification par devnice (Wed 27 May 2015 10:38)
Hors ligne
#2 Wed 27 May 2015 10:41
- cyrille
- Participant assidu
- Date d'inscription: 7 Feb 2006
- Messages: 403
Re: QGIS : Sectorisation des communes
Bonjour, je suis interessé par d'eventuelles reponses ..
Hors ligne
#3 Wed 27 May 2015 10:55
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 626
Re: QGIS : Sectorisation des communes
Bonjour,
Je ne connais rien sur QGIS, mais cela existe peut-être.
Sur R, il y a des choses sympa avec la librairie "spdep"
Je mets un bout de code que j'avais testé (il y a assez longtemps) et notamment la fonction skater
Code:
### loading data
bh <- readShapePoly(system.file("etc/shapes/bhicv.shp",
package="spdep")[1])
### data standardized
dpad <- data.frame(scale(bh@data[,5:8]))
### neighboorhod list
bh.nb <- poly2nb(bh)
### calculating costs
lcosts <- nbcosts(bh.nb, dpad)
### making listw
nb.w <- nb2listw(bh.nb, lcosts, style="B")
### find a minimum spanning tree
mst.bh <- mstree(nb.w,5)
### the mstree plot
par(mar=c(0,0,0,0))
plot(mst.bh, coordinates(bh), col=2,
cex.lab=.7, cex.circles=0.035, fg="blue")
plot(bh, border=gray(.5), add=TRUE)
### three groups with no restriction
res1 <- skater(mst.bh[,1:2], dpad, 2)
### groups size
table(res1$groups)
### the skater plot
par(mar=c(0,0,0,0))
plot(res1, coordinates(bh), cex.circles=0.035, cex.lab=.7)
### the skater plot, using other colors
plot(res1, coordinates(bh), cex.circles=0.035, cex.lab=.7,
groups.colors=rainbow(length(res1$ed)))
### the Spatial Polygons plot
res1 <- skater(mst.bh[,1:2], dpad, 9)
plot(bh, col=(1:9)[res1$groups])
### EXPERT OPTIONS
### more one partition
res1b <- skater(res1, dpad, 1)
### length groups frequency
table(res1$groups)
table(res1b$groups)
### thee groups with minimum population
res2 <- skater(mst.bh[,1:2], dpad, 2, 200000, bh@data$Pop)
### thee groups with minimun number of areas
res3 <- skater(mst.bh[,1:2], dpad, 2, 3, rep(1,nrow(bh@data)))
### thee groups with minimun and maximun number of areas
res4 <- skater(mst.bh[,1:2], dpad, 2, c(20,50), rep(1,nrow(bh@data)))
table(res2$groups)
table(res3$groups)
table(res4$groups)
### if I want to get groups with 20 to 40 elements
res5 <- skater(mst.bh[,1:2], dpad, 2,
c(20,40), rep(1,nrow(bh@data))) ## DON'T MAKE DIVISIONS
table(res5$groups)
### In this MST don't have groups with this restrictions
### In this case, first I do one division
### with the minimun criteria
res5a <- skater(mst.bh[,1:2], dpad, 1, 20, rep(1,nrow(bh@data)))
table(res5a$groups)
### and do more one division with the full criteria
res5b <- skater(res5a, dpad, 1, c(20, 40), rep(1,nrow(bh@data)))
table(res5b$groups)
### and do more one division with the full criteria
res5c <- skater(res5b, dpad, 1, c(20, 40), rep(1,nrow(bh@data)))
table(res5c$groups)
### It don't have another divison with this criteria
res5d <- skater(res5c, dpad, 1, c(20, 40), rep(1,nrow(bh@data)))
table(res5d$groups)Peut-être y a t il moyen d'adapter quelque chose avec le plugin de geotraitements?
Pascal
Pascal PLUVINET
Hors ligne
#4 Wed 27 May 2015 11:23
- daniellopez
- Participant actif
- Lieu: france
- Date d'inscription: 22 Jan 2015
- Messages: 80
Re: QGIS : Sectorisation des communes
Le seul problème est que tu veux fusionner des polygones sur une plage de valeurs. Il faut don créer un nouveau champ dans la table attributaire qui servira à fusionner les communes qui correspondent à la fourchette 85-115.
Pour cela:
créer un nouveau champ numérique, par exemple "secteurs"
Calculker la valeur du champ en le remplissant avec l'identifiant de ta table
selctionner les communes avec 85-115 habitants
remplir la colonne secteurs avec une valeur plus grande que le nombre d'enregistrements de la table
Comme ça, toutes les communes qui n'ont pas entre 85 et 115 habitants auront une valeur de secteurs différentes et toutes les communes avec 85-115 habitants auront la même valeur
Pour fusionner les communes par secteur il faut utiliser la commande Vecteur->Outils de géotraitement->Regrouper en mettant secteurs comme champ de catégorie
Daniel
Hors ligne
#5 Wed 27 May 2015 12:19
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 626
Re: QGIS : Sectorisation des communes
Je crois que j'avais lu un peu rapidement la question posée ! Je pensais que l'on souhaitait faire des secteur de comunes contigues en fonction du nombre d'habitants sans mise en classe préalable.
Pascal PLUVINET
Hors ligne
#6 Wed 27 May 2015 13:10
- devnice
- Participant occasionnel
- Date d'inscription: 26 Jun 2012
- Messages: 18
Re: QGIS : Sectorisation des communes
Je crois que j'avais lu un peu rapidement la question posée ! Je pensais que l'on souhaitait faire des secteur de comunes contigues en fonction du nombre d'habitants sans mise en classe préalable.
oui c'est exactement ça
Hors ligne
#7 Wed 27 May 2015 13:14
- devnice
- Participant occasionnel
- Date d'inscription: 26 Jun 2012
- Messages: 18
Re: QGIS : Sectorisation des communes
Le seul problème est que tu veux fusionner des polygones sur une plage de valeurs. Il faut don créer un nouveau champ dans la table attributaire qui servira à fusionner les communes qui correspondent à la fourchette 85-115.
Pour cela:
créer un nouveau champ numérique, par exemple "secteurs"
Calculker la valeur du champ en le remplissant avec l'identifiant de ta table
selctionner les communes avec 85-115 habitants
remplir la colonne secteurs avec une valeur plus grande que le nombre d'enregistrements de la table
Comme ça, toutes les communes qui n'ont pas entre 85 et 115 habitants auront une valeur de secteurs différentes et toutes les communes avec 85-115 habitants auront la même valeur
Pour fusionner les communes par secteur il faut utiliser la commande Vecteur->Outils de géotraitement->Regrouper en mettant secteurs comme champ de catégorie
Daniel
Merci Daniel de ta réponse; mais c'est pas exactement ce que je veux. Au fait les groupes de communes dont la somme sera dans la plage 85-115 doivent être contigües (voisines).
Hors ligne
#8 Wed 27 May 2015 13:43
- daniellopez
- Participant actif
- Lieu: france
- Date d'inscription: 22 Jan 2015
- Messages: 80
Re: QGIS : Sectorisation des communes
J'ai peur de ne pas trouver une solution. Cela semble à un problème avec n solutions, car les groupes dépendront de quelle commune on prend comme base : 5 communes adjacentes avec 25 habitants chacune peuvent avoir cinq solutions possibles en excluant une commune différente dans chacune d'elles.
Daniel
Hors ligne


