Ada file geodatabase yang duduk di situs ftp yang ingin saya unduh dengan skrip Python. Saat ini saya sedang berpikir salah satu cara untuk melakukan ini adalah menyalin geodatabase ftp ke geodatabase di komputer saya. Di bawah ini adalah skrip yang saya mulai. Adakah yang tahu bagaimana saya bisa mengubah skrip ini sehingga saya mendapatkan ftp gdb? Terima kasih
Di bawah ini adalah kode final saya yang berfungsi berdasarkan jawaban @om_hennners yang disediakan.
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
sumber
sumber
Jawaban:
Dalam hal ini Anda tidak perlu menggunakan perpustakaan arcpy untuk menyalin geodatabase. Alih-alih Anda mencari menyalin file melalui koneksi ftp, yang dapat Anda lakukan dengan
retrbinary
perintah ftplib .Perhatikan juga bahwa sistem file memperlakukan geodatabases sebagai objek folder dengan sekumpulan file di dalamnya. yaitu mereka bukan file biner tunggal yang dapat ditransfer dalam satu hit menggunakan ftplib.
Jadi sebenarnya yang ingin Anda lakukan adalah membuat folder lokal bernama
data.gdb
, dan kemudian pada server ftp loop melalui semua filehydro.gdb
dan unduh. Sesuatu seperti yang berikut ini harus bekerja (dengan sedikit kode yang dipinjam dari stack overflow ini karena saya tidak tahu ftplib dengan baik):sumber