Hay una geodatabase de archivos en un sitio ftp que me gustaría descargar con un script de Python. En este momento estoy pensando que una forma de hacerlo es copiar la geodatabase ftp a una geodatabase en mi computadora. A continuación se muestra el guión que he comenzado. ¿Alguien sabe cómo puedo alterar este script para obtener ftp gdb? Gracias
A continuación se muestra mi código de trabajo final basado en la respuesta proporcionada por @om_hennners.
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
fuente
fuente
Respuestas:
En este caso, no necesita usar las bibliotecas arcpy para copiar la geodatabase. En cambio, está buscando copiar archivos a través de una conexión ftp, lo que puede hacer con el
retrbinary
comando ftplib .También tenga en cuenta que el sistema de archivos trata las geodatabases como objetos de carpeta con un conjunto de archivos dentro de ellas. es decir, no son un solo archivo binario que se puede transferir de una vez usando ftplib.
Entonces, lo que realmente quiere hacer es crear una carpeta local llamada
data.gdb
, y luego en el servidor ftp recorre todos los archivoshydro.gdb
y los descarga. Algo como lo siguiente debería funcionar (con un poco de código tomado de esta respuesta de desbordamiento de pila, ya que no conozco muy bien ftplib):fuente