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 Mon 19 December 2016 14:22

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

QGIS: enregistrement csv à la fermeture d'un projet

bonjour
j'aimerais savoir s'il est possible, et comment faire, pour qu'à la fermeture d'un projet il y ait un enregistrement automatique d'une couche csv datée afin d'avoir une sorte de workflow...
LJ

Hors ligne

 

#2 Tue 20 December 2016 12:12

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: enregistrement csv à la fermeture d'un projet

Bonjour,

il faut passer par les macros dans les propriétés du projet et ajouter quelques lignes de code à la méthode closeProject().

Je ne sais pas ce que vous voulez faire mais voici un exemple :


Code:

import os
from qgis.core import QgsMapLayerRegistry, QgsVectorFileWriter
from datetime import datetime

layer_name = u'le_nom_de_votre_couche_ou_table'
folder = u'C:/chemin/d/enregistrement'
encoding = 'utf-8'
suffix = datetime.now().strftime('%Y-%m-%d-%H-%M')

def closeProject():
    registry = QgsMapLayerRegistry.instance()
    layer = registry.mapLayersByName(layer_name)[0]
    filename = layer_name
    filename = os.path.join(folder, filename + '-' + suffix + '.csv')
    QgsVectorFileWriter.writeAsVectorFormat(layer, filename, encoding, None, driverName='CSV')

Je vous laisse l'adapter à votre convenance.
Pensez aussi à autoriser l'execution de macro dans les options de QGIS (Options > Général > Activer les macros)

Cordialement,

Dernière modification par lejedi76 (Tue 20 December 2016 12:15)

Hors ligne

 

#3 Tue 20 December 2016 16:41

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

j'ai chnagé le chelmin et le nom de la couche mais  aprior rien ne se passe à la femreture

import os
from qgis.core import QgsMapLayerRegistry, QgsVectorFileWriter
from datetime import datetime

layer_name = u'acteurs'
folder = u'Z:\SERVES\LIM\ryl'
encoding = 'utf-8'
suffix = datetime.now().strftime('%Y-%m-%d-%H-%M')

def closeProject():
    registry = QgsMapLayerRegistry.instance()
    layer = registry.mapLayersByName(layer_name)[0]
    filename = layer_name
    filename = os.path.join(folder, filename + '-' + suffix + '.csv')
    QgsVectorFileWriter.writeAsVectorFormat(layer, filename, encoding, None, driverName='CSV')

Dernière modification par laurent00 (Sat 11 February 2017 22:45)

Hors ligne

 

#4 Tue 20 December 2016 16:49

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

en fait ça marche très bien merci
LJ

Hors ligne

 

#5 Tue 20 December 2016 16:55

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

est-il possible de mettre cela par défaut sur qis car j'ai beaucoup de projet qui sont basés sur une couche de base acteur ...
LJ

Hors ligne

 

#6 Tue 20 December 2016 22:57

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: enregistrement csv à la fermeture d'un projet

Bonsoir,
si vous voulez faire cela sur chacun de vos projets il va falloir faire un plugin maison.
Il n'y a pas grand chose à faire en plus, à part connecter le signal quand le projet est fermé et sauvegardé
et gérer les erreurs quand votre couche acteur n'est pas présente.
Rien de bien sorcier mais faut mettre les mains un peu dans le cambouis.
Ca ne m'ennuie pas de vous aider si cette proposition vous convient.
Bonne soirée,

Hors ligne

 

#7 Wed 21 December 2016 09:43

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

merci bien
je pensais effectivement à faire un plugin, mais pas simple de le planifier dans mon travail actuel
donc je note pour 2017 ...

LJ

Hors ligne

 

#8 Sun 12 February 2017 09:34

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

bonjour
voici le code pour 2 couches, par contre cela ne ramène pas les coordonnées des points des polygones
est-ce possible ? est-il possible de mettre un URL plutôt qu'un Folder ?
LJ

Code:

import os
from qgis.core import QgsMapLayerRegistry, QgsVectorFileWriter
from datetime import datetime

layer_name1 = u'tourettes'
layer_name2 = u'alignements'
folder = u'/home/alignements/workflow'
encoding = 'utf-8'
suffix = datetime.now().strftime('%Y-%m-%d-%H-%M')

def closeProject():
    registry = QgsMapLayerRegistry.instance()
    layer1 = registry.mapLayersByName(layer_name1)[0]
    filename1 = layer_name1
    filename1 = os.path.join(folder, filename1 + '-' + suffix + '.csv')
    QgsVectorFileWriter.writeAsVectorFormat(layer1, filename1, encoding, None, driverName='CSV')
    registry = QgsMapLayerRegistry.instance()
    layer2 = registry.mapLayersByName(layer_name2)[0]
    filename2 = layer_name2
    filename2 = os.path.join(folder, filename2 + '-' + suffix + '.csv')
    QgsVectorFileWriter.writeAsVectorFormat(layer2, filename2, encoding, None, driverName='CSV')

Hors ligne

 

#9 Sun 12 February 2017 15:14

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

je regarde aussi pour faire un plugin, en utilisant le Plugin Builder
quelques conseils sont/seront les bienvenues

LJ

Hors ligne

 

#10 Mon 06 March 2017 12:33

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 361

Re: QGIS: enregistrement csv à la fermeture d'un projet

petite précision
"comment faire que le CSV prennent en compte les coordonnées d'un polygone ?
quand je fais "enregistrer sous" ma couche je sélectionne WKT, mais dans le code python comment fait-on ?
merci

Hors ligne

 

#11 Fri 21 April 2017 00:35

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: enregistrement csv à la fermeture d'un projet

Bonsoir,

laurent00 a écrit:

par contre cela ne ramène pas les coordonnées des points des polygones
est-ce possible ?


Je viens de répondre à cette question sur ce fil : https://georezo.net/forum/viewtopic.php … 51#p294451 :


laurent00 a écrit:

est-il possible de mettre un URL plutôt qu'un Folder ?


Je ne comprends pas votre question, vous voulez envoyer la ressource sur un serveur ? Sur internet ? En local ?
Quel protocole ?

Cordialement,

Hors ligne

 

Pied de page des forums

Powered by FluxBB