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é ?

#1 Mon 09 October 2017 09:45

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Décompression d'une archive .tar.bz2

Bonjour à tous,

Avec l'ouverture du PCI Vecteur sur le Service Public de la Donnée, je me suis mis à travailler sur un script pour télécharger et exporter le cadastre de tout un département vers une base PostgreSQL/PostGIS, mais je bute sur la décompression des données.
La partie ZIP ne pose aucun problème, mais là je suis coincé sur le tar.bz2 des données EDIGEO.

La décompression du bz2 ce passe sans souci, mais le tar refuse lui de ce décomposer.

J'ai tenté :

Code:

bunzip2 foo.tar.bz2 | tar xopf -

Qui me laisse avec seulement le .tar

Ce qui aussi le cas de :

Code:

bunzip2 foo.tar.bz2 | tar -xvf foo.tar

Qui fait de même.
C'est aussi pareil en deux commande séparées.

Aurais-je manqué quelques chose dans les options de la commande tar ?

Je réussi sans aucun souci à les décompresser avec l'utilitaire d'archive de MacOS, mais j'ai pas spécialement envie de le faire à la main sur tout un département ;-)

Je travail sur système MacOS 10.13

Merci d'avance,

Monsieur J

Hors ligne

 

#2 Mon 09 October 2017 10:00

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3195
Site web

Re: Décompression d'une archive .tar.bz2

Bonjour,

Je connais pas les système Mac, mais il me semble que 7-zip a une version compatible MACOS, c'est ce que j'utilise et ça pose pas de soucis avec les fichiers PCI-Vecteur


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#3 Mon 09 October 2017 10:36

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1149

Re: Décompression d'une archive .tar.bz2

Salut,

je crois qu'il faut rediriger le résultat de bunzip2 vers la sortie standard pour que tar puisse l'utiliser

Code:

bunzip2  -c foo.tar.bz2 | tar -xf -

Si votre version de tar le permet vous pouvez aussi écrire :

Code:

tar --use-compress-prog=bunzip2 xf foo.tar.bz2

Sur une distib linux, on a aussi souvent le raccourci suivant :

Code:

tar -xjf foo.tar.bz2

Dernière modification par tumasgiu (Mon 09 October 2017 10:43)

Hors ligne

 

#4 Mon 09 October 2017 11:07

VielOu
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 20 Nov 2012
Messages: 12
Site web

Re: Décompression d'une archive .tar.bz2

Bonjour,

Je sais de mémoire que cela est possible en Python en important le module "tarfile" qui permet d'ouvrir/lire - tarfile.open(monFichier) - puis extraire les données d'une archive tar.bz2 - fonction extractall.

En bouclant sur les dossiers par commune si tu as une arborescence du type rep/commune1/tar.bz2, rep/commune2/tar.bz2...je pense que cela doit fonctionner.

Vivien

Hors ligne

 

#5 Mon 09 October 2017 17:00

MonsieurJ
Participant occasionnel
Lieu: Montpellier
Date d'inscription: 8 Dec 2016
Messages: 28

Re: Décompression d'une archive .tar.bz2

Re-Bonjour,

Merci pour toute ces réponses. Je vais les reprendre dans l'ordre :

ChristopheV a écrit:

Bonjour,

Je connais pas les système Mac, mais il me semble que 7-zip a une version compatible MACOS, c'est ce que j'utilise et ça pose pas de soucis avec les fichiers PCI-Vecteur


J'ai testé :

Code:

7z e foo.tar.bz2 -ofoo

Qui me créer seulement un dossier contenant le tar, donc retour au même point que la commande avec gunzip2 (sauf le petit plus du dossier) hmm
-----

tumasgiu a écrit:

Salut,

je crois qu'il faut rediriger le résultat de bunzip2 vers la sortie standard pour que tar puisse l'utiliser

Code:

bunzip2  -c foo.tar.bz2 | tar -xf -


Cela ne donne malheureusement aucun résultat, au contraire le bz2 ne ce décompresse même plus hmm

tumasgiu a écrit:

Si votre version de tar le permet vous pouvez aussi écrire :

Code:

tar --use-compress-prog=bunzip2 xf foo.tar.bz2


La commande a malheureusement tourné dans le vide pendant bien 2h.

tumasgiu a écrit:

Sur une distib linux, on a aussi souvent le raccourci suivant :

Code:

tar -xjf foo.tar.bz2


Et il me renvoie :

Code:

tar: Error opening archive: Failed to open 'j'

Mais merci pour la réponse fournie.
-----

Sylvain M. a écrit:

Bonjour,

Avec l'ouverture du PCI Vecteur sur le Service Public de la Donnée, je me suis mis à travailler sur un script pour télécharger et exporter le cadastre de tout un département vers une base PostgreSQL/PostGIS


N'est-il pas dommage de vouloir "réinventer la roue" ?
Un plugin "Cadastre" a été développé spécialement à cet effet, avec plein d'autres fonctionnalités : http://www.portailsig.org/content/un-pl … -pour-qgis
Celui-ci est d'une efficacité incroyable (j'ai créé mes bases PostGreSQL / PostGis départementales en 3 clics) !

Et si celui-ci ne répondait pas à vos besoins, peut-être pourriez-vous contribuer à son développement ? https://github.com/3liz/QgisCadastrePlugin

A+

Sylvain M.


Oui, c'est un peu bête de ré-inventer la roue, et je vais explorer cette voie là, merci pour le tuyau. Mais c'est aussi pour relever le défi, affiner mes compétences, que j'essaye de partir de rien. Je viens tout juste de valider mon Master 2 - Géomatique et du coup mon but avec ce projet là et surtout de peaufiner mes compétences en informatique plus générale et en géomatique aussi.
----

ChristopheV a écrit:

Bonjour,

N'est-il pas dommage de vouloir "réinventer la roue"


Ça dépend, il y en a qui préfère abandonner les roues en bois pour passer aux jantes alliage et pneumatiques.


Alors, oui j'essaye de faire par mes propre moyen pour étendre mes compétences, mais je n'aurai absolument pas la prétention d'être capable de faire mieux qu'une roue de pierre un peu ovale ;-)
----

VielOu a écrit:

Bonjour,

Je sais de mémoire que cela est possible en Python en important le module "tarfile" qui permet d'ouvrir/lire - tarfile.open(monFichier) - puis extraire les données d'une archive tar.bz2 - fonction extractall.

En bouclant sur les dossiers par commune si tu as une arborescence du type rep/commune1/tar.bz2, rep/commune2/tar.bz2...je pense que cela doit fonctionner.

Vivien


Merci pour la piste. Travaillant avec ogr2ogr pour l'export vers la base Postgre j'ai plutôt visé l'écriture en shell. Comme dis plus tôt je ne suis pas informaticien de formation, du coup je connais pas tout sur tout. Mais je maîtrise un peu le Python aussi (merci les scripts sur GRASS), donc je suis sur qu'il y'a moyen de combiner les deux langages.
----

Sylvain M. a écrit:

passer aux jantes alliage et pneumatiques.


Pourquoi pas ! wink Mais dans ce cas, travailler sur un projet libre/collaboratif permettra à tout le monde de "monter en gamme" ! (plutôt que tout le monde se creuse la tête dans son coin sur des besoins finalement génériques)
Et il me semble que le plugin Cadastre, en l’occurrence, est plutôt déjà très "haut de gamme" ! (en tout cas pas "roue en bois")

Mais désolé si mon intervention est un peu "hors sujet" wink


Je partage avec vous cette envi de collaborer (phrase douteuse) et de réfléchir ensemble. Je pense clairement que le plugin que vous proposez est plus intéressant que ce que j'essaye de faire dans mon coin. Promis je m'y pencherai dessus, même si je ne pense pas pouvoir apporter de bonne pierres à l'édifice tout de suite.
----

Merci encore pour toutes ces réponses si rapides. Je reviens vers vous dès que j'aurai un peu avancé.

Hors ligne

 

#6 Mon 09 October 2017 17:32

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1149

Re: Décompression d'une archive .tar.bz2

MonsieurJ a écrit:

Re-Bonjour,

Merci pour toute ces réponses. Je vais les reprendre dans l'ordre :

tumasgiu a écrit:

Salut,

je crois qu'il faut rediriger le résultat de bunzip2 vers la sortie standard pour que tar puisse l'utiliser

Code:

bunzip2  -c foo.tar.bz2 | tar -xf -


Cela ne donne malheureusement aucun résultat, au contraire le bz2 ne ce décompresse même plus hmm


A noter qu'avec cette commande, l'archive tar est normalement extraite dans le répertoire courant.
Pour spécifier un répertoire de sortie :

Code:

bunzip2  -c foo.tar.bz2 | tar -C /mon/repertoire/ -xf -

Dernière modification par tumasgiu (Mon 09 October 2017 17:55)

Hors ligne

 

#7 Mon 09 October 2017 18:52

jdesboeufs
Participant assidu
Lieu: Paris
Date d'inscription: 11 Jun 2012
Messages: 157

Re: Décompression d'une archive .tar.bz2

Au passage désolé pour les tar.bz2 mais c'est comme ça que les données sont diffusées par la DGFiP.
Changer le format de compression aurait pu rendre les données inopérantes dans certains outils de mairies.

Sur Linux ou sur Mac on utilise en effet préférentiellement

Code:

tar -xjf foo.tar.bz2

Jérôme Desboeufs / Living Data
ex-BAN ex-Etalab

Hors ligne

 

#8 Thu 12 October 2017 08:33

nitram
Participant assidu
Lieu: Brest
Date d'inscription: 19 May 2009
Messages: 990
Site web

Re: Décompression d'une archive .tar.bz2

Bonjour,

Côté Python vous pouvez utiliser quelque chose du genre :

Code:

import os, os.path, sys, glob, tarfile

Input_Directory = r'CHEMIN\VERS\MON_REPERTOIRE'

inputFiles2 = glob.glob(str(Input_Directory) + '/*.bz2')
for inputFile in inputFiles2:
    tar = tarfile.open(inputFile)
    tar.extractall(Input_Directory)
    tar.close()

Testé et approuvé sous Windows, après je ne sais pas si sous Mac ce code nécessiterait des adaptations...

Martin

Dernière modification par nitram (Thu 12 October 2017 08:56)

Hors ligne

 

#9 Tue 17 October 2017 17:57

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Décompression d'une archive .tar.bz2

Pour ceux qui veulent causer de l'avenir du plugin cadastre, c'est par là : https://georezo.net/forum/viewtopic.php?id=108188

Hors ligne

 

Pied de page des forums

Powered by FluxBB