Как использовать python, чтобы превратить файл. dbf в шейп-файл


Я рыскал по интернету, пытаясь найти питон (sp?!) способ обработки этих данных..

Каждый день мы будем получать нагрузку данных .формат dbf (надеюсь) - затем нам нужно сохранить эти данные в виде шейп-файла.

Есть ли у кого-нибудь ссылки или какие-либо предложения относительно моего процесса?

4 2

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 для каждого файла, если у вас много дел...

Как вы знаете, речь не идет об изменении расширения, требуется определенный формат.