Il y a une géodatabase fichier sur un site ftp que je voudrais télécharger avec un script Python. En ce moment, je pense qu'une façon de le faire est de copier la géodatabase ftp dans une géodatabase sur mon ordinateur. Voici le script que j'ai commencé. Est-ce que quelqu'un sait comment je peux modifier ce script pour obtenir ftp gdb? Je vous remercie
Ci-dessous est mon code de travail final basé sur la réponse @om_hennners fournie.
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
la source
la source
Réponses:
Dans ce cas, vous n'avez pas besoin d'utiliser les bibliothèques arcpy pour copier la géodatabase. Au lieu de cela, vous envisagez de copier des fichiers via une connexion ftp, ce que vous pouvez faire avec la
retrbinary
commande ftplib .Notez également que le système de fichiers traite les géodatabases comme des objets de dossier avec un ensemble de fichiers à l'intérieur. c'est-à-dire qu'ils ne sont pas un seul fichier binaire qui peut être transféré en une seule fois en utilisant ftplib.
Donc, vraiment, ce que vous voulez faire est de créer un dossier local appelé
data.gdb
, puis sur le serveur ftp, boucle tous les fichiershydro.gdb
et téléchargez-les. Quelque chose comme ce qui suit devrait fonctionner (avec un peu de code emprunté à cette réponse de débordement de pile car je ne connais pas très bien ftplib):la source