尝试了3种方法,时间紧迫屡败屡战,最后终于成功。
方法1和2是失败记录,希望有类似经历成功的同学分享下经验。
方法3是成功记录,修改 = 新增 + 计算 +删除相关字段,因为没有删除改名前字段需求,故删除部分没有另做。
- 方法1 —— 【将shapefile的dbf文件按csv文件读写】
——失败,dbf中有空值及编码问题
不同文件间通过改后缀简单粗暴改写,操作方法存在风险
过于依赖熟悉的领域,由于时间紧迫没有试用dbf第三方库
#-*- coding: utf-8 -*-
import os
import shutil
import csv
#批量修改shp中dbf文件中的字段名
#LANE_WIDTH改为LANEWIDTHL
#LANE_WID_1改为LANEWIDTHR
#ORIGIN_LIN改为ORG_LINKID
roadDir = r"D:\20Q1\00DATA\ModifyTitle\ROAD_TEST\\"
modifyRoadDir = r"D:\20Q1\00DATA\ModifyTitle\ModifiedLink\\"
csvDir = r"D:\20Q1\00DATA\ModifyTitle\ROAD_CSV\\"
fileList = os.listdir(roadDir)
num = 0
for file in fileList:
#新建修改后的城市文件夹
city = file.split("_")[0]
os.mkdir(csvDir + city)
os.mkdir(modifyRoadDir + city)
shutil.copy(roadDir + file + "/RD_LINK.dbf", csvDir + city + "/RD_LINK.csv")
print("正在生成{}新dbf文件......".format(city))