Existe um geodatabase de arquivo em um site ftp que eu gostaria de baixar com um script Python. No momento, estou pensando que uma maneira de fazer isso é copiar o geodatabase ftp para um geodatabase no meu computador. Abaixo está o script que eu comecei. Alguém sabe como posso alterar esse script para obter ftp gdb? Obrigado
Abaixo está o meu código final de trabalho, com base na resposta @om_hennners fornecida.
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
fonte
fonte
Respostas:
Nesse caso, você não precisa usar as bibliotecas do arcpy para copiar o geodatabase. Em vez disso, você está olhando para copiar arquivos através de uma conexão ftp, o que pode ser feito com o
retrbinary
comando ftplib .Observe também que o sistema de arquivos trata os bancos de dados geográficos como objetos de pasta com um conjunto de arquivos dentro deles. ou seja, eles não são um único arquivo binário que pode ser transferido em uma ocorrência usando o ftplib.
Então, realmente o que você quer fazer é criar uma pasta local chamada
data.gdb
e, em seguida, no servidor ftp, percorrer todos os arquivoshydro.gdb
e fazer o download deles. Algo como o seguinte deve funcionar (com um pouco de código emprestado dessa resposta de estouro de pilha, pois não conheço muito bem o ftplib):fonte