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 Tue 16 December 2014 11:03

jleplus9
Participant occasionnel
Date d'inscription: 5 Feb 2013
Messages: 11

QGIS 2.6 + PyQgis : fusion d'élément

Bonjour à tous!

Je suis débutant en Pyqgis et j'aimerai faire un petit script qui pourra m'aider (enfin je l'espère)

J’ai beaucoup de Shape avec beaucoup de polygones (entre 50 000 et 100 000 polygones, pour certaines couches, ça peut monter jusqu’à 300 000 ...) et il faut que je fusionne tout ça en 1 polygone.

J'ai remarqué que sur mon ordinateur, il me faut 25 min pour fusionner 2 000 polygones avec le bouton fusion de Qgis alors qu'il m'en faut 5 pour fusionner 2 fois 1000 polygones et les re-fusionner ensuite.

Je pense donc faire un programme en python pour fusionner toute ma couche 1000 polygones par 1000 polygones jusqu’à ce qu'il ne m'en reste plus qu'un seul. En théorie, cette manip donc être beaucoup plus rapide que de fusionner mes 50 000 polygones d'un coup avec le bouton Qgis

J'ai donc commencé par faire un petit code test pour juste fusionner tous les éléments d'une couche (environ 100 polygones pour commencer):

Code:

layer=qgis.utils.iface.activeLayer()
geomcoupe = QgsGeometry.fromWkt('GEOMETRYCOLLECTION EMPTY')
for elem in layer.getFeatures():
  geomcoupe = geomcoupe.combine(elem.geometry())

Il marche très bien, j'ai vérifié en calculant l'aire et j'ai le bon résultat. Seulement voilà, je ne sais pas comment visualiser sous Qgis ni comment  l'exporter en Shape ou encore le garder dans le script pour le réutiliser plus tard et faire une nouvelle fusion

Si vous avez des idées je suis preneur!

Merci d'avance!

Hors ligne

 

Pied de page des forums

Powered by FluxBB