#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: 401
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: 611
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: 611
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