日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

GDAL 矢量屬性數(shù)據(jù)修改方式(python)

瀏覽:98日期:2022-08-02 17:48:46

Case:需要給一個(gè)現(xiàn)有的shp數(shù)據(jù)創(chuàng)建一個(gè)字段,并將屬性表中原有的一個(gè)文本類(lèi)型的屬性轉(zhuǎn)換為整型后填入新創(chuàng)建的字段。

Problem:新字段創(chuàng)建成功,但是賦值操作無(wú)效,即無(wú)法成功給字段寫(xiě)入值。

solution:對(duì)字段進(jìn)行賦值后需要,重新寫(xiě)入Feature,否則賦值無(wú)效,即layer0.SetFeature(feature)。

特別注意:在對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)操作,一定要以讀寫(xiě)的方式打開(kāi),即Open(filePath,1),該方法的原型為Open(pszName,int bUpdate = false),并且具有返回值,參數(shù)說(shuō)明如下:

名稱(chēng) 說(shuō)明 pszName 需要打開(kāi)文件或數(shù)據(jù)源的路徑 bUpdate 是否需要更新數(shù)據(jù)集,默認(rèn)為只讀,如果需要對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)操作,需要給此參數(shù)賦值1 返回值 返回?cái)?shù)據(jù)集的指針,如果為NULL,則表明打開(kāi)數(shù)據(jù)集失敗

以下將給出創(chuàng)建字段和獲取字段值、子段賦值的實(shí)例。

1.為矢量數(shù)據(jù)創(chuàng)建字段

# 添加字段 defn = layer.GetLayerDefn() fieldIndex=defn.GetFieldIndex(’SSSS’) if fieldIndex<0: # 添加字段 fieldDefn = ogr.FieldDefn(’SSSS’, ogr.OFTInteger) fieldDefn.SetPrecision(9) layer0.CreateField(fieldDefn,1); fieldIndex2 = defn.GetFieldIndex(’SSSS’) if fieldIndex2>0: print('字段創(chuàng)建成功:',fieldIndex)

2.獲取字段值及字段賦值

feature = layer.GetNextFeature() indexA = defn.GetFieldIndex(’code’) indexB = defn.GetFieldIndex(’SSSS’) oField = defn.GetFieldDefn(indexB) fieldName = oField.GetNameRef() while feature is not None: valueA= feature.GetFieldAsInteger(indexA) if valueA is None: feature.SetFieldNull(indexB) continue feature.SetField2(fieldName, valueA) layer0.SetFeature(feature) feature = layer0.GetNextFeature() #feature.Destroy() ds.Destroy()

補(bǔ)充知識(shí):Python批量修改shapefile屬性表字段名(arcpy增刪字段)

嘗試了3種方法,時(shí)間緊迫屢敗屢戰(zhàn),最后終于成功。

方法1和2是失敗記錄,希望有類(lèi)似經(jīng)歷成功的同學(xué)分享下經(jīng)驗(yàn)。

方法3是成功記錄,修改 = 新增 + 計(jì)算 +刪除相關(guān)字段,因?yàn)闆](méi)有刪除改名前字段需求,故刪除部分沒(méi)有另做。

方法1 —— 【將shapefile的dbf文件按csv文件讀寫(xiě)】

——失敗,dbf中有空值及編碼問(wèn)題

不同文件間通過(guò)改后綴簡(jiǎn)單粗暴改寫(xiě),操作方法存在風(fēng)險(xiǎn)

過(guò)于依賴熟悉的領(lǐng)域,由于時(shí)間緊迫沒(méi)有試用dbf第三方庫(kù) GDAL 矢量屬性數(shù)據(jù)修改方式(python)

#-*- coding: utf-8 -*- import osimport shutilimport csv #批量修改shp中dbf文件中的字段名#LANE_WIDTH改為L(zhǎng)ANEWIDTHL#LANE_WID_1改為L(zhǎng)ANEWIDTHR#ORIGIN_LIN改為ORG_LINKID roadDir = r'D:20Q100DATAModifyTitleROAD_TEST'modifyRoadDir = r'D:20Q100DATAModifyTitleModifiedLink'csvDir = r'D:20Q100DATAModifyTitleROAD_CSV'fileList = os.listdir(roadDir) num = 0for 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)) dbfData = [] #讀取dbf數(shù)據(jù)為csv文件,讀存內(nèi)容部分 csvFile = open(csvDir + city + '/RD_LINK.csv',encoding=’gbk’,errors=’ignore’) csvReader = csv.reader(csvFile) for row in csvReader: titleLine = [] if csvReader.line_num == 1: titleLine.append(row) continue #跳過(guò)第1行——列名 dbfData.append(row) #生成正確的字段名行 newTitleLine = [] modifyDic = {'LANE_WIDTH':'LANEWIDTHL','LANE_WID_1':'LANEWIDTHR','ORIGIN_LIN':'ORG_LINKID'} for fieldName in titleLine: if fieldName in modifyDic: newTitleLine.append(modifyDic[fieldName]) else: newTitleLine.append(fieldName) #寫(xiě)入新dbf文件 newDBF = open(modifyRoadDir + city + '/RD_LINK.dbf',’w’) csvWriter = csv.writer(newDBF) csvWriter.writerow(newTitleLine) for row in dbfData: csvWriter.writerow(row) newDBF.close() print('{}新dbf文件已生成!'.format(city)) print('{}城市全部完成'.format(num))

方法2——直接使用修改字段名函數(shù)——失敗,arcpy模塊沒(méi)有AlterField_management方法

——失敗,但發(fā)現(xiàn)直接探尋官方方法還是比網(wǎng)搜野路子要節(jié)約時(shí)間

GDAL 矢量屬性數(shù)據(jù)修改方式(python)

使用Arcgis10.2 - Advanced浮動(dòng)版,符合許可信息但Arcpy調(diào)用函數(shù)失敗,存疑。附官網(wǎng)AlterField函數(shù)用法介紹:

https://pro.arcgis.com/zh-cn/pro-app/tool-reference/data-management/alter-field-properties.htm

#-*- coding: utf-8 -*- import osimport arcpy #批量修改shp中dbf文件中的字段名#LANE_WIDTH改為L(zhǎng)ANEWIDTHL#LANE_WID_1改為L(zhǎng)ANEWIDTHR#ORIGIN_LIN改為ORG_LINKID roadDir = r'D:20Q100DATAModifyTitleROAD_TEST'fileList = os.listdir(roadDir) num = 0for file in fileList: #截取城市名 city = file.split('_')[0] print('正在修改{}的shp字段......'.format(city)) #修改前后字段名對(duì)照字典 modifyDic = {'LANE_WIDTH':'LANEWIDTHL','LANE_WID_1':'LANEWIDTHR','ORIGIN_LIN':'ORG_LINKID'} #讀取shp數(shù)據(jù) dbfFile = roadDir + file + '/RD_LINK.shp' fieldList = arcpy.ListFields(dbfFile) for field in fieldList: #遍歷字段名 if field.name.upper() in modifyDic: #找到待修改字段名 arcpy.AlterField_management(dbfFile, field = field.name, new_field_name = modifyDic[field.name]) print('{}字段修改成功!'.format(city)) print('{}城市全部完成'.format(num))

方法3——添加改名后新字段(字段屬性與前保持一致)、計(jì)算改名后字段值 = 改名前字段值,成功!

#-*- coding: utf-8 -*- import osimport arcpy #批量修改shp屬性表中的字段名#LANE_WIDTH改為L(zhǎng)ANEWIDTHL#LANE_WID_1改為L(zhǎng)ANEWIDTHR#ORIGIN_LIN改為ORG_LINKID roadDir = r'D:20Q100DATAModifyTitleROAD_TEST'fileList = os.listdir(roadDir) num = 0for file in fileList: city = file.split('_')[0] #截取城市名 print('正在添加和計(jì)算{}的shp正確字段......'.format(city)) #修改前后字段名對(duì)照屬性字典 modifyDic = {'LANE_WIDTH':['LANEWIDTHL','1'],#錯(cuò)誤字段名:[正確字段名,長(zhǎng)度] 'LANE_WID_1':['LANEWIDTHR','1'], 'ORIGIN_LIN':['ORG_LINKID','10']} #讀取shp文件 shpFile = roadDir + file + '/RD_LINK.shp' for wrongfieldName in modifyDic: correctfieldName = modifyDic[wrongfieldName][0] field_length = modifyDic[wrongfieldName][1] # Process: 添加字段 arcpy.AddField_management(shpFile, correctfieldName, 'TEXT', '', '', field_length) # Process: 計(jì)算字段字段 arcpy.CalculateField_management(shpFile, correctfieldName, '['+wrongfieldName+']', 'VB', '') ## # Process: 添加字段——LANEWIDTHL## arcpy.AddField_management(shpFile, 'LANEWIDTHL', 'TEXT', '', '', '1')## # Process: 計(jì)算字段字段——LANEWIDTHL## arcpy.CalculateField_management(shpFile, 'LANEWIDTHL', '['++]', 'VB', '')#### # Process: 添加字段——LANEWIDTHR## arcpy.AddField_management(shpFile, 'LANEWIDTHR', 'TEXT', '', '', '1')## # Process: 計(jì)算字段字段——LANEWIDTHR## arcpy.CalculateField_management(shpFile, 'LANEWIDTHR', '[LANE_WID_1]', 'VB', '')#### # Process: 添加字段——ORG_LINKID## arcpy.AddField_management(shpFile, 'ORG_LINKID', 'TEXT', '', '', '10')## # Process: 計(jì)算字段字段——ORG_LINKID## arcpy.CalculateField_management(shpFile, 'ORG_LINKID', '[ORIGIN_LIN]', 'VB', '')#### # Process: 刪除字段## #arcpy.DeleteField_management(in_table, 'LANE_WIDTH') print('{}修改完成!請(qǐng)確認(rèn)!'.format(city)) num += 1 print('{}城市全部完成!'.format(num))

以上這篇GDAL 矢量屬性數(shù)據(jù)修改方式(python)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品永久网址| 国产66精品| 亚洲成人精品| 日本激情一区| 国产va免费精品观看精品视频| 国产精品一区二区99| 日韩av二区在线播放| 日韩有码av| 天堂va欧美ⅴa亚洲va一国产| 99精品在线观看| 欧产日产国产精品视频| 国产福利片在线观看| 国产一区二区精品久| 福利精品一区| 一区二区精品伦理...| 色一区二区三区四区| 亚洲精品福利电影| 久久婷婷激情| 国产高清一区二区| 丝袜亚洲另类欧美| 亚洲专区视频| 欧美一级一区| 国产麻豆一区二区三区 | 都市激情国产精品| 在线一区视频观看| 国产在线日韩| 蜜桃一区二区三区在线观看| 亚洲欧美网站在线观看| 日本a级不卡| 久久久久亚洲精品中文字幕| 成人国产精品| 国内精品福利| 免费一区二区视频| 国产日韩1区| 欧美国产免费| 五月激情久久| 天堂av在线一区| 蜜臀av亚洲一区中文字幕| 日韩精品一区二区三区免费视频 | www.51av欧美视频 | 国产精品字幕| 丝袜美腿成人在线| 国产精品欧美在线观看| 欧美国产一级| 夜夜嗨网站十八久久| 日本在线不卡视频| 国产精品久久久亚洲一区| 国产欧美一区二区三区精品酒店| 亚洲高清成人| 日韩精品欧美成人高清一区二区| 欧美91在线|欧美| 欧美+日本+国产+在线a∨观看| 亚洲免费福利一区| 久久97视频| 一本色道精品久久一区二区三区| 日韩不卡在线观看日韩不卡视频| 成人精品国产亚洲| 亚洲一区日韩在线| 美女视频一区在线观看| 国产综合精品一区| 国产精品主播在线观看| 91亚洲人成网污www| 亚洲美洲欧洲综合国产一区 | 日本aⅴ亚洲精品中文乱码| 色综合五月天| 亚洲图片久久| 日韩免费福利视频| 日本精品久久| 久久久久亚洲| 国产欧美日韩亚洲一区二区三区| 欧美肉体xxxx裸体137大胆| 日本aⅴ亚洲精品中文乱码| 久久久久国产精品一区二区| 日本免费一区二区视频| 国产一区二区三区亚洲| 日韩在线卡一卡二| 中文字幕在线视频网站| 日韩精品三级| 激情婷婷综合| 久久久国产精品网站| 久久国产福利| 久久久水蜜桃av免费网站| 国产日韩中文在线中文字幕| 午夜久久免费观看| 麻豆一区二区三| 亚洲色图国产| 欧美一区二区性| 卡一卡二国产精品| 四虎精品一区二区免费| 首页国产精品| 国产精品亚洲片在线播放| 免费日韩视频| 成人午夜精品| 久草精品视频| 日本午夜精品久久久| 免费看的黄色欧美网站 | 日本不卡免费高清视频在线| 欧美伊人久久| 亚洲综合不卡| 久久蜜桃av| 久久男人av资源站| 国产乱码精品| 深夜福利亚洲| 欧美日韩国产免费观看视频| 国产一区国产二区国产三区| 91福利精品在线观看| 国产女优一区| 99久久九九| 日韩一区电影| 大香伊人久久精品一区二区| 日韩av一区二区三区| 视频一区二区中文字幕| 黄色亚洲在线| 欧美一区二区三区高清视频| 色婷婷色综合| 91免费精品| 精品一级视频| 久久久精品国产**网站| 97成人在线| 最新亚洲国产| 亚洲网址在线观看| 中文字幕一区二区三区四区久久 | 欧美日韩国产探花| 婷婷亚洲五月色综合| 亚洲天堂久久| 欧美特黄a级高清免费大片a级| 亚洲调教视频在线观看| 亚洲女同中文字幕| 欧美 日韩 国产精品免费观看| 欧美成人高清| 亚洲一区网站| 在线一区免费观看| 另类国产ts人妖高潮视频| 久久亚洲精品伦理| 亚洲欧美在线综合| 久久精品99国产精品日本| 国产精品一区二区美女视频免费看| 青草综合视频| 国产精品九九| 里番精品3d一二三区| 国产日韩一区二区三区在线| 日韩高清国产一区在线| 日韩高清欧美激情| 亚洲精品成人一区| 欧美片第1页综合| 日韩午夜视频在线| 综合色就爱涩涩涩综合婷婷| 视频在线观看国产精品| 午夜精品免费| 国产亚洲在线| 天堂av在线一区| 亚洲一区二区日韩| 亚洲伊人精品酒店| 中文字幕av一区二区三区四区| 国产午夜精品一区二区三区欧美 | 亚洲日本免费电影| 亚洲天堂免费| 激情久久婷婷| 综合日韩在线| 日韩av黄色在线| 欧美一级全黄| 国产一卡不卡| 日韩福利视频一区| 色综合狠狠操| 播放一区二区| 九一精品国产| 老司机精品久久| 国产亚洲欧美日韩在线观看一区二区| 日韩av在线播放中文字幕| 国产亚洲一区二区三区啪| 国产精品亚洲综合在线观看| 精品久久97| 国产一区二区三区探花| 日韩深夜视频| 久久国产小视频| 五月天久久网站| 中文字幕一区二区精品区| 欧美国产中文高清| sm久久捆绑调教精品一区| 久久久久久久久99精品大| 99热精品在线| 亚洲精选91| 日韩在线中文| 国产精品外国| 欧美亚洲二区| 国产精品福利在线观看播放| 99成人在线视频| 日本中文字幕不卡| 欧美国产精品| 91精品国产91久久久久久黑人| 国产精品人人爽人人做我的可爱| 一区二区三区四区在线观看国产日韩 | 国产精品久久久久久久久久妞妞| 免费在线观看一区| 日韩免费在线| 欧美1区2区3区| 久久中文精品| 性欧美69xoxoxoxo| 日韩激情中文字幕| 免费在线播放第一区高清av|