Как использовать python, чтобы превратить файл. dbf в шейп-файл
Я рыскал по интернету, пытаясь найти питон (sp?!) способ обработки этих данных..
Каждый день мы будем получать нагрузку данных .формат dbf (надеюсь) - затем нам нужно сохранить эти данные в виде шейп-файла.
Есть ли у кого-нибудь ссылки или какие-либо предложения относительно моего процесса?
4 ответа:
Чтобы добавить creation_date файла к его имени, необходимо получить дату создания с помощью os.stat () , а затем переименуйте файл с помощью os.rename(). Вы можете отформатировать строку даты с помощью date.strftime () .
import datetime, os filename = 'original.ext' fileinfo = os.stat(filename) creation_date = datetime.date.fromtimestamp(fileinfo.st_ctime) os.rename(filename, filename + '-' + creation_date.strftime('%Y-%m-%d'))
С моей макушки:
import os import datetime myfile = "test.txt" creationdate = os.stat(myfile).st_ctime timestamp = datetime.datetime.fromtimestamp(creationdate) datestr = datetime.datetime.strftime(timestamp, "%Y%m%d") os.rename(myfile, os.path.splitext(myfile)[0] + datestr + os.path.splitext(myfile)[1])
Переименовывает
test.txt
вtest20110221.txt
.
Это было в model builder все время!
# (generated by ArcGIS/ModelBuilder) # Usage: DBF2SHAPEFILE <XY_Table> <Y_Field> <X_Field> <Output_Feature_Class> # --------------------------------------------------------------------------- # Import system modules import sys, string, os, arcgisscripting, datetime # Adds the creation date to all of the previous shapefiles in that folder filename = 'D:/test.txt' fileinfo = os.stat(filename) creation_date = datetime.date.fromtimestamp(fileinfo.st_ctime) os.rename(filename, filename + '-' + creation_date.strftime('%Y-%m-%d')) # Create the Geoprocessor object gp = arcgisscripting.create() # Load required toolboxes... gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx") # Script arguments... XY_Table = sys.argv[1] Y_Field = sys.argv[2] X_Field = sys.argv[3] Output_Feature_Class = sys.argv[4] # Local variables... Layer_Name_or_Table_View = "" # Process: Make XY Event Layer... gp.MakeXYEventLayer_management(XY_Table, X_Field, Y_Field, Layer_Name_or_Table_View, "") # Process: Copy Features... gp.CopyFeatures_management(Layer_Name_or_Table_View, Output_Feature_Class, "", "0", "0", "0")
Если вы хотите сделать это без использования ArcGIS, вы можете использовать привязки python OGR или утилиту ogr2ogr через подпроцесс. Вы можете использовать утилиту через пакетный файл windows, что будет намного быстрее, чем вызов процесса arc для каждого файла, если у вас много дел...
Как вы знаете, речь не идет об изменении расширения, требуется определенный формат.