#1 Mon 23 April 2012 14:00
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
QGIS : modifier un outil
Bonjour à tous,
J'utilise l'outil "Vecteur" -> "Outil de gestion de données" -> "Séparer une couche vectorielle" sous qgis.
L'outil me convient parfaitement tel quel à une nuance près: le résultat de la séparation est au format shape. J'aimerais faire la même chose mais en générant des fichiers kml (lexport kml fonctionne bien sous quantum manuellement).
Est-il possible de modifier le code source de l'outil assez facilement (mes compétences en programmation se limitant à python)?
Sinon connaissez-vous un moyen de batcher l'export kml d'une sélection sur une couche (opération que l'on peut normalement faire au coup par coup par un clic droit sur la couche)?
Merci d'avance :-)
Dernière modification par Anaïs Just (Mon 23 April 2012 14:00)
Hors ligne
#2 Mon 23 April 2012 16:28
Re: QGIS : modifier un outil
Bonjour,
ogr2ogr (même en python) ?
Sinon le code source du plugin doit être disponible et sous GPL. Tu peux aussi contacter l'auteur pour que tes modifs soient incorporées dans le code. Mais j'ai peur que ce plugin ne soit en C++
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Mon 23 April 2012 17:05
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: QGIS : modifier un outil
Merci beaucoup, je vais me renseigner sur les pistes que tu as évoqué.
Parcontre comment trouve-t-on le code source d'un plugin quand on a que le nom en français de l'outil parmis toutes les lib et les bin de qgis? J'ai regardé directement dans lib et bin mais je ne sais pas trop où chercher...
Hors ligne
#4 Mon 23 April 2012 18:20
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS : modifier un outil
Bonjour,
Les plugins utilisateurs sont installés par défaut dans $HOME/.qgis/python/plugins
Sous windows, il faut remplacer $HOME par C:\Documents and Settings\"nom utilisateur"\
La fonction Split est installée avec FWTools, qui est dans le répertoire d'installation de QGis., par exemple (c'est un peu long...):
C:\Program Files\Quantum GIS Wroclaw\apps\qgis\python\plugins\fTools\tools
Le fichier python correspondant s'appelle doVectorSplit.py
C'est à la ligne 175 qu'est rajoutée l'extension .SHP.
Code:
check = QFile(baseName + "_" + unicode(i.toString().trimmed()) + ".shp")
Et c'est à la ligne 182 qu'est défini le type de fichier (par défaut : "ESRI Shape":
Code:
writer = QgsVectorFileWriter(fName, self.encoding, fieldList, geom, sRs)
Pour modifier le format de sortie, il faudrait rajouter le type de conversion après le sRs (cf http://www.qgis.org/api/classQgsVectorF … 9a05f3362c et mettre la bonne chaine de conversion OGR. Je ne l'ai pas en tête...
Cordialement.
Hien.
Hors ligne
#5 Tue 24 April 2012 10:07
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: QGIS : modifier un outil
Bonjour,
Je te remercie pour ces indications, c'est exactement les infos que je recherchais!
Par contre j'ai tenté de modifier le fichier et de relancer le module séparer une couche vectorielle" mais l'outil fonctionne de la même façon et sort des shapefiles. Comme si je n'avais fait aucune modifications...Alors soit déconnecter et reconnecter Qgis ne suffit pas à charger les modifications, soit je n'ai pas du tout comprendre:
1) j'ai renommé doVectorSplit.py en doVectorSplit_old.py et j'ai fait une copie doVectorSplit.py que j'ai modifiée.
2) A la ligne 175 j'ai changé l'extension
Code:
check = QFile(baseName + "_" + unicode(i.toString().trimmed()) + ".kml")
3) A la ligne 182 j'ai changé le driverName
Code:
writer = QgsVectorFileWriter(fName, self.encoding, fieldList, geom, sRs, "KML")
j'ai aussi essayé
Code:
writer = QgsVectorFileWriter(fName, self.encoding, fieldList, geom, sRs, KML)
Aurais-tu une idée?
Merciii
Anaïs
Hors ligne
#6 Tue 24 April 2012 12:53
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS : modifier un outil
Bonjour,
Voici les modifications à apporter, selon la version de fTools :
Code:
check = QFile(baseName + "_" + unicode(i) + ".kml") #if check.exists(): # if not QgsVectorFileWriter.deleteShapeFile(baseName + "_" + unicode(i.toString().trimmed()) + ".shpl"): # return writer = QgsVectorFileWriter(baseName + "_" + unicode(i.toString().trimmed()) + ".kml", self.encoding, fieldList, vlayer.dataProvider().geometryType(), sRs,"KML")
ou
Code:
check = QFile(baseName + "_" + unicode(i.toString().trimmed()) + ".kml") fName = check.fileName() #if check.exists(): # if not QgsVectorFileWriter.deleteShapeFile(fName): # self.errors.append( fName ) # continue writer = QgsVectorFileWriter(fName, self.encoding, fieldList, geom, sRs,"KML")
J'ai fait plusieurs test et réinstallation du plugin, donc le fichier doVectorSplit.py peut légèrement varié.
Ce fichier est compilé une seul fois au démarrage de QGis, donc après modification, il faut le redémarrer (Plugin reloader ne le recharge pas)
Pour l'explication de texte :
- le paramètre pour le choix du format de sortie est donc simplement le paramètre "KML" dans la création de writer.
- il faut désactiver la suppression des fichiers annexes au Shape : si le fichier kml existe, il va essaie de supprimer les dbf,shx et prj, ce qui échoue, la boucle passe à l'enregistrement suivant.
Cordialement.
Hien.
Hors ligne
#7 Tue 24 April 2012 14:18
- Anaïs Just
- Participant actif
- Lieu: Montreuil
- Date d'inscription: 10 Dec 2007
- Messages: 131
Re: QGIS : modifier un outil
Super!!! C'est exactement ce que je recherchais!! ça fonctionne impec!
Vive le GeoRezo et merci à toi Hien!
Bonne journée.
Hors ligne