2017-11-20 1 views
1

Ich versuche zu extrahieren (entpacken) Ordner (nämlich "pakistan.zip", die 5 Dateien enthält Pak_admin0.shp, Pak_admin0.shx, Pak_admin0. dbf, Pak_admin0.prj, Pak_admin0.qpj) und Kopieren der Dateien von SHP, .shx, dBF-Dateien aus dem Ordner auf den Zielordner Rstudio 0.99.451 Version mit folgenden Codes:R Studio-0.99.451: wie entpacken Sie den Ordner und fügen Sie Dateien in den Zielordner

for(j in list(".shp", ".shx", ".dbf")) 
    { 
    fname <- unzip(file=paste("pakistan", j, sep=""), zipfile= "pakistan.zip") 
    file.copy(fname, paste("./pakistan", j, sep="/"), overwrite=TRUE) 
} 

unlink("pakistan.zip") 

aber es gibt mir folgenden Fehler

Warning messages: 
1: In unzip(file = paste("zupanije", j, sep = ""), zipfile = "pakistan.zip") : requested file not found in the zip file 
2: In unzip(file = paste("zupanije", j, sep = ""), zipfile = "pakistan.zip") : requested file not found in the zip file 
3: In unzip(file = paste("zupanije", j, sep = ""), zipfile = "pakistan.zip") : requested file not found in the zip file 

Bitte geben Sie jede mögliche Lösung, um mit diesem Fehler umzugehen. Diese sind tatsächliche Codes, die ich gefunden habe, aber zip.file.extract Funktion ist nicht mehr Teil von R:

for(j in list(".shp", ".shx", ".dbf")){ 
fname <- zip.file.extract(file=paste("zupanije", j, sep=""), 
zipname="zupanije.zip") 
file.copy(fname, paste("./zupanije", j, sep=""), overwrite=TRUE) 
} 
unlink("zupanije.zip") 

Ich mag die Struktur des Herunterladens die Shape-Datei von der Website automatisieren und entpacken und an einen anderen Ort Der Ordner wird dann unter Verwendung von maptools Bibliothek mit readShapePoly() Funktion angezeigt.

Antwort

0

Ihr Code funktioniert für mich für eine Zip-Datei, die diese Dateien enthält. Der Fehler deutet darauf hin, dass diese Dateien nicht in der ZIP-Datei enthalten sind. Da Sie sagen, dass Sie versuchen, ein "Verzeichnis" zu extrahieren, befinden sie sich vielleicht in einem Unterverzeichnis in der ZIP-Datei? Zum Beispiel, wenn ich die Dateien in einem Verzeichnis „TEMP“ setzen und dann eine Zip-Datei aus diesem Verzeichnis erstellen, muss ich das Verzeichnis in dem Dateipfad hinzufügen, wie folgt aus:

f <- "test.zip" 
for(j in list(".shp", ".shx", ".dbf")) 
{ 
    # note "pakistan" directory added to path 
    # unzip pakistan/zupanije.shp (or .shx or .dbf) out of test.zip 
    fname <- unzip(file=paste("pakistan/zupanije", j, sep=""), zipfile= f) 
    #copy extracted file to destination directory 
    file.copy(fname, paste("./destination", j, sep="/"), overwrite=TRUE) 
} 

Wenn Sie in einem Linux sind wie Umwelt, können Sie den folgenden Befehl versuchen, die Zip-Datei zu überprüfen und sicherzustellen, dass es enthält, was Sie denken, es enthält und auf dem Weg, den Sie erwarten:

unzip -vl pakistan.zip

By the way, Ihr Code gibt die Datei " ./pakistan/.dbf "," ./pakistan/.shx "und" ./pakistan/.shp ". Ist es das was du willst? Oder haben Sie vielleicht „pakistan.shx“ wollen, usw. wobei diese Änderung erforderlich ist:

-file.copy(fname, paste("./pakistan", j, sep="/"), overwrite=TRUE) 
+file.copy(fname, paste("./pakistan", j, sep=""), overwrite=TRUE) 
+0

Sie haben Recht, die „pakistan“ Ordner enthält ein Unterverzeichnis mit dem gleichen Namen „pakistan“ in der Zip-Datei, aber immer noch i Ich kann den Code nicht erfolgreich ausführen. Was ist der Parameter ** zipfile = f ** in Ihrem Code? fügen Sie bitte detaillierte Kommentare zu jeder Zeile Ihres Codes hinzu. Ich bin kein Experte Benutzer in R. Danke –

+0

Entschuldigung. f ist der Name der Zip-Datei. Ich werde bearbeiten, um zu klären. – Eric

+0

Code jetzt erfolgreich ausgeführt. Ich habe die ganze Zeit einen häufigen Fehler gemacht, nämlich den exakten Namen der Datei in den ZIP-Ordner zu legen (also in meinem Fall PAK_adm0.shp), also muss ich den genauen Namen schreiben wie fname

Verwandte Themen