Index: applications/editors/josm/plugins/cadastre-fr/.classpath
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/.classpath	(revision 33670)
+++ applications/editors/josm/plugins/cadastre-fr/.classpath	(revision 33671)
@@ -8,4 +8,5 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/JOSM-jts"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/JOSM-apache-commons"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
Index: applications/editors/josm/plugins/cadastre-fr/build.xml
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/build.xml	(revision 33670)
+++ applications/editors/josm/plugins/cadastre-fr/build.xml	(revision 33671)
@@ -15,5 +15,5 @@
     <property name="plugin.link" value="https://wiki.openstreetmap.org/wiki/FR:JOSM/Fr:Plugin/Cadastre"/>
     <property name="plugin.stage" value="60"/>
-    <property name="plugin.requires" value="jts;geotools"/>
+    <property name="plugin.requires" value="apache-commons;ejml;jts;geotools"/>
 
     <!-- ** include targets that all plugins have in common ** -->
@@ -22,4 +22,5 @@
     <property name="jts" location="${plugin.dist.dir}/jts.jar"/>
     <property name="geotools" location="${plugin.dist.dir}/geotools.jar"/>
+    <property name="apache-commons" location="${plugin.dist.dir}/apache-commons.jar"/>
 
     <!--
@@ -36,5 +37,6 @@
                 <pathelement location="${jts}"/>
                 <pathelement location="${geotools}"/>
-            </classpath>
+                <pathelement location="${apache-commons}"/>
+             </classpath>
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:unchecked"/>
Index: applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciImporter.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciImporter.java	(revision 33670)
+++ applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciImporter.java	(revision 33671)
@@ -13,5 +13,4 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
@@ -24,5 +23,5 @@
 
     static final ExtensionFileFilter EDIGEO_FILE_FILTER = new ExtensionFileFilter(
-            "thf", "thf", tr("Cadastre Edigeo files") + " (*.thf)");
+            "thf,tar.bz2", "thf", tr("Cadastre Edigeo files") + " (*.thf, *.tar.bz2)");
 
     protected File file;
@@ -38,7 +37,5 @@
     public void importData(File file, ProgressMonitor progressMonitor)
             throws IOException, IllegalDataException {
-        if (file != null) {
-            this.file = file;
-        }
+        this.file = file;
         // Do not call super.importData because Compression.getUncompressedFileInputStream skips the first entry
         try (InputStream in = new FileInputStream(file)) {
@@ -58,10 +55,3 @@
         }
     }
-
-    @Override
-    protected OsmDataLayer createLayer(DataSet dataSet, File associatedFile, String layerName) {
-        // FIXME: mapping pci => osm
-        //DataSetUpdater.updateDataSet(dataSet, handler, associatedFile);
-        return new OsmDataLayer(dataSet, layerName, associatedFile);
-    }
 }
Index: applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciReader.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciReader.java	(revision 33670)
+++ applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciReader.java	(revision 33671)
@@ -2,7 +2,10 @@
 package org.openstreetmap.josm.plugins.fr.cadastre.edigeo.pci;
 
+import java.io.BufferedInputStream;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Arrays;
@@ -12,4 +15,8 @@
 import java.util.Map.Entry;
 
+import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
+import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
+import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
+import org.apache.commons.compress.utils.IOUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSet.UploadPolicy;
@@ -20,4 +27,5 @@
 import org.openstreetmap.josm.plugins.fr.cadastre.edigeo.EdigeoFileTHF;
 import org.openstreetmap.josm.plugins.fr.cadastre.edigeo.EdigeoFileVEC;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -180,9 +188,37 @@
 
     DataSet parse(Path path, ProgressMonitor instance) throws IOException, ReflectiveOperationException {
-        DataSet data = new DataSet();
-        data.setUploadPolicy(UploadPolicy.DISCOURAGED);
-        EdigeoFileTHF thf = new EdigeoFileTHF(path).read().fill(data);
-        data.setName(thf.getSupport().getBlockIdentifier());
-        return data;
+        Path tmpDir = null;
+        Path thfPath = path;
+        try {
+            if (thfPath.toString().endsWith(".tar.bz2")) {
+                try (InputStream fin = Files.newInputStream(path);
+                     BufferedInputStream in = new BufferedInputStream(fin);
+                     BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
+                     TarArchiveInputStream tar = new TarArchiveInputStream(bzIn)
+                ) {
+                    TarArchiveEntry entry;
+                    tmpDir = Files.createTempDirectory(Utils.getJosmTempDir().toPath(), "cadastre");
+                    while ((entry = tar.getNextTarEntry()) != null) {
+                        File file = tmpDir.resolve(entry.getName()).toFile();
+                        try (FileOutputStream out = new FileOutputStream(file)) {
+                            if (IOUtils.copy(tar, out) < entry.getSize()) {
+                                throw new IOException(String.format("Unable to write ''{0}'' entirely", file));
+                            } else if (file.toString().endsWith(".THF")) {
+                                thfPath = file.toPath();
+                            }
+                        }
+                    }
+                }
+            }
+            DataSet data = new DataSet();
+            data.setUploadPolicy(UploadPolicy.DISCOURAGED);
+            EdigeoFileTHF thf = new EdigeoFileTHF(thfPath).read().fill(data);
+            data.setName(thf.getSupport().getBlockIdentifier());
+            return data;
+        } finally {
+            if (tmpDir != null) {
+                Utils.deleteDirectory(tmpDir.toFile());
+            }
+        }
     }
 
