#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
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 :
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)
-----
Salut,
je crois qu'il faut rediriger le résultat de bunzip2 vers la sortie standard pour que tar puisse l'utiliserCode:
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
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.
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.
-----
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.
----
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 ;-)
----
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.
----
passer aux jantes alliage et pneumatiques.
Pourquoi pas ! 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"
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
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'utiliserCode:
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
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
Hors ligne
#8 Thu 12 October 2017 08:33
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
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