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

GEODATA DAYS 2024

#1 Thu 17 June 2010 09:59

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Comment dezipper, traiter, compiler, puis effacer

Aloha
Je souhaiterais procéder au traitement de X fichiers dxf aujourd'hui zippés.
Je dois en extraire tous les objets d'un calques, comparer ces objets avec ceux présents en base, et enrichir si besoin la base.
Je pense procéder ainsi :
  dans le premier workbench :
   - dézipper le premier fichier
   - envoyer le dxf dans le second workbench
   - attendre le résultat
   - supprimer le dxf
  dans le second workbench :
   - recevoir le nom du fichier à traiter
   - comparer les données
   - écrire le fichier

Seulement voila, il me manque la partie unzip. Je ne sais absolument pas comment procéder (rien ne semble prévu).
je ne sais pas non plus comment faire pour ne produire qu'un seul fichier résultat dans lequel se trouveraient tous les objets de tous les dxf.

Est-ce un bon plan de travail selon vous ? Voyez-vous une meilleure solution ? Et auriez-vous des idées pour mes deux points bloquants (sachant que le format de sortie sera soit directement ma table oracle, soit un fichier apic).

D'avance, merci,


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#2 Thu 17 June 2010 10:16

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: Comment dezipper, traiter, compiler, puis effacer

Pour dézipper tu peux utiliser SystemCaller et appeler un utilitaire de compression en mode console 7za.exe par exemple.
C'est primaire mais efficace.
Tu peux sans doute faire cela en Python avec PythonCaller.

Il n'est pas possible de produire un fichier DXF en plusieurs traitements.
Tu peux le faire en un seul après avoir décompacté tous tes dxf.

Mais pourquoi ne pas faire ton traitement directement à partir de tous les fichiers décompactés en utilisant toute l'arborescence dxf comme jeu de données source ?


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

Hors ligne

 

#3 Thu 17 June 2010 10:36

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Comment dezipper, traiter, compiler, puis effacer

En fait je souhaite éviter de surcharger mon serveur avec tous les fichiers dézippés. Je vais prendre le risque.
Pour le Python ou le tcl, j'ai regardé, mais ça me semble bien ardu.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#4 Thu 17 June 2010 11:25

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Comment dezipper, traiter, compiler, puis effacer

Problème insoluble :
Je passe cette commande

Code:

E:\FME\7-ZipPortable\App\7-Zip\7z e "E:\FME\fichiers_donnees\test_cdr\20080122_stade georges hebert_4.zip" -oE:\FME\fichiers_donnees\test_cdr\temp\ *.dxf -r -y

au system caller. Et rien. Lorsque je la passe dans une console command, j'ai un résultat.
j'y perds mon latin.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#5 Thu 17 June 2010 11:47

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: Comment dezipper, traiter, compiler, puis effacer

essaye de remplacer les \ par des /


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

Hors ligne

 

#6 Thu 17 June 2010 13:19

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Comment dezipper, traiter, compiler, puis effacer

J'ai essayé avec des chemins de type UNIX. Mais pas plus de résultats.

J'ai trouvé ceci. Mais même en recompilant :

Code:

proc Dzip {} {
set d [ FME_GetAttribute path_directory_windows]
set f [ FME_GetAttribute path_windows]
set e [ FME_GetAttribute path_directory_windows]
append e "temp\\"

file mkdir $e 

set com_ "E:\\FME\\7-ZipPortable\\App\\7-Zip\\7z e "
append com_ \" $f \" " -o" $e " *.dxf -r -y"

puts $com_

}

ma commande n'est toujours pas exécutée par le systemCaller. De plus aucun message d'erreur dans le log.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#7 Thu 17 June 2010 13:51

dauzata
Juste Inscrit !
Lieu: Bruxelles
Date d'inscription: 14 Oct 2005
Messages: 7

Re: Comment dezipper, traiter, compiler, puis effacer

essaye de remplacer \ par \\

Code:

E: \\FME\\7-ZipPortable\\App\\7-Zip\\7z e "E:\\FME\\fichiers_donnees\\test_cdr\\20080122_stade georges hebert_4.zip" -oE:\\FME\\fichiers_donnees\\test_cdr\\temp\\ *.dxf -r -y

Hors ligne

 

#8 Thu 17 June 2010 14:34

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: Comment dezipper, traiter, compiler, puis effacer

En même temps si je ne mets pas

Code:

FME_SetAttribute command $com_

dans mon Tcl, il y avait peu de chance (1/infini) que cela fonctionne.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#9 Thu 17 June 2010 14:41

jaykayone
Participant actif
Date d'inscription: 15 Feb 2007
Messages: 95

Re: Comment dezipper, traiter, compiler, puis effacer

bonjour,

avec un pythoncaller c'est assez simple:

import sys, zipfile, os, os.path

mettez ce code dans un pythoncaller et appelez la méthode unzip_file_into_dir.

passez lui des features portant deux attributs _dir et _file afin
qu'il sache quel fichier zip dézipper et où le dézipper.

def unzip_file_into_dir(feature):
    dir=feature.getAttribute(_dir)
    file=feature.getAttribute(_file)
    os.mkdir(dir)
    zfobj = zipfile.ZipFile(file)
    for name in zfobj.namelist():
        if name.endswith('/'):
            os.mkdir(os.path.join(dir, name))
        else:
            outfile = open(os.path.join(dir, name), 'wb')
            outfile.write(zfobj.read(name))
            outfile.close()

-------------------

a+
j


--
Jeff Konnen

Hors ligne

 

Pied de page des forums

Powered by FluxBB