Как использовать Python, чтобы превратить .dbf в шейп-файл - PullRequest
2 голосов
/ 18 февраля 2011

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

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

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

Ответы [ 4 ]

2 голосов
/ 21 февраля 2011

Чтобы добавить дату создания файла к его имени, вам нужно получить дату создания с помощью 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'))
1 голос
/ 21 февраля 2011

От макушки головы:

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.

0 голосов
/ 10 марта 2011

Если вы хотите сделать это без использования ArcGIS, вы можете использовать привязки Python OGR или утилиту ogr2ogr через подпроцесс.Вы можете использовать утилиту через пакетный файл Windows, что будет намного быстрее, чем вызов процесса дуги для каждого файла, если у вас есть много дел ...

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

0 голосов
/ 21 февраля 2011

Все это время было в моделировании!

#   (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")
...