На ftp-сайте находится файловая база геоданных, которую я хотел бы скачать с помощью скрипта Python. Сейчас я думаю, что один из способов сделать это - скопировать базу геоданных ftp в базу геоданных на моем компьютере. Ниже приведен скрипт, который я начал. Кто-нибудь знает, как я могу изменить этот скрипт, чтобы я получил ftp GDB? Спасибо
Ниже мой окончательный рабочий код, основанный на ответе @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
Пэтти Юла
источник
источник
Ответы:
В этом случае вам не нужно использовать библиотеки arcpy для копирования базы геоданных. Вместо этого , вы смотрите на копирование файлов через соединение FTP, которые вы можете сделать с ftplib
retrbinary
команды.Также обратите внимание, что файловая система рассматривает базы геоданных как объекты папок с набором файлов внутри них. то есть это не один двоичный файл, который может быть передан за один клик с помощью ftplib.
Поэтому на самом деле вы хотите создать локальную папку с именем
data.gdb
, а затем на ftp-сервере перебрать все файлыhydro.gdb
и загрузить их. Должно работать что-то вроде следующего (с небольшим количеством кода, заимствованного из этого ответа переполнения стека, поскольку я не очень хорошо знаю ftplib):источник