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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoRezo vous rend service, faites un don.

Merci à tous pour votre fidélité.

L'équipe GeoRezo

#1 lun. 19 décembre 2016 14:22

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 mar. 20 décembre 2016 12:12

lejedi76
Membre
Date d'inscription: 8 août 2013
Messages: 239

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 (mar. 20 décembre 2016 12:15)

Hors ligne

 

#3 mar. 20 décembre 2016 16:41

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 (sam. 11 février 2017 22:45)

Hors ligne

 

#4 mar. 20 décembre 2016 16:49

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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

en fait ça marche très bien merci
LJ

Hors ligne

 

#5 mar. 20 décembre 2016 16:55

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 mar. 20 décembre 2016 22:57

lejedi76
Membre
Date d'inscription: 8 août 2013
Messages: 239

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 mer. 21 décembre 2016 09:43

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 dim. 12 février 2017 09:34

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 dim. 12 février 2017 15:14

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 lun. 06 mars 2017 12:33

laurent00
Membre
Date d'inscription: 6 août 2007
Messages: 171

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 ven. 21 avril 2017 00:35

lejedi76
Membre
Date d'inscription: 8 août 2013
Messages: 239

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

Partagez  |