Auf einer FTP-Site befindet sich eine Datei-Geodatabase, die ich mit einem Python-Skript herunterladen möchte. Im Moment denke ich, dass eine Möglichkeit, dies zu tun, darin besteht, die FTP-Geodatabase in eine Geodatabase auf meinem Computer zu kopieren. Unten ist das Skript, das ich gestartet habe. Weiß jemand, wie ich dieses Skript ändern kann, damit ich FTP-GDB erhalte? Vielen Dank
Unten ist mein endgültiger Arbeitscode, der auf der Antwort @om_hennners basiert.
import arcpy, os, sys
from arcpy import env
arcpy.env.overwriteOutput = True
from ftplib import FTP
directory = "/group/geodb" #location of gdb on ftp
folder = "D:\\temp\\"
out_gdb = "data.gdb"
out_path = folder + os.sep + out_gdb
copy_gdb = "hydro.gdb" # This is the gdb I would like to copy from the ftp site
ftp = FTP("10.4.2.22")
ftp.login("user", "pass")
ftp.cwd(os.path.join(directory, copy_gdb))
print "Changed to " + os.path.join(directory, copy_gdb)
filenames = ftp.nlst()
print filenames
print "starting to write"
for f in filenames:
with open(os.path.join(out_path, f), 'wb') as local_file:
ftp.retrbinary('RETR '+ f, local_file.write)
ftp.close()
print "closed ftp connection"
python
file-geodatabase
Patty Jula
quelle
quelle
Antworten:
In diesem Fall müssen Sie die arcpy-Bibliotheken nicht zum Kopieren der Geodatabase verwenden. Stattdessen möchten Sie Dateien über eine FTP-Verbindung kopieren, was Sie mit dem
retrbinary
Befehl ftplib tun können .Beachten Sie außerdem, dass das Dateisystem Geodatabases als Ordnerobjekte mit einer Reihe von Dateien behandelt. Das heißt, es handelt sich nicht um eine einzelne Binärdatei, die mit ftplib auf einen Schlag übertragen werden kann.
Sie möchten also wirklich einen lokalen Ordner mit dem Namen erstellen
data.gdb
und dann auf dem FTP-Server alle Dateien durchlaufenhydro.gdb
und sie herunterladen. So etwas wie das Folgende sollte funktionieren (mit ein bisschen Code, der aus dieser Stapelüberlauf-Antwort entlehnt wurde , da ich ftplib nicht sehr gut kenne):quelle