Arcpy實(shí)現(xiàn)批量字段拆分
本文針對(duì)這樣一種情況,當(dāng)你需要對(duì)一個(gè)圖層的多個(gè)字段進(jìn)行重復(fù)使用 按屬性提取 這一工具時(shí),可以參考本文實(shí)現(xiàn)批量自動(dòng)化。
工具:ArcGIS Pro 2.8 以及附帶的python解釋器(python版本:3.7.10)、VScode
本文使用的數(shù)據(jù)展示如下:

空間數(shù)據(jù)為全國(guó)369個(gè)城市以及代表的行政區(qū)邊界數(shù)據(jù)。對(duì)地圖進(jìn)行了分類設(shè)色。

屬性數(shù)據(jù)中根據(jù)各個(gè)條件設(shè)置了不同的字段。
目的:根據(jù)這些字段,把每個(gè)字段中具有相同屬性的內(nèi)容進(jìn)行提取。代碼如下:

第一步:導(dǎo)入包并路徑設(shè)定
import pandas as pd
import arcpy
env = r'G:\遷徙\遷徙分析\遷徙分析.gdb'
arcpy.env.workspace = env ? # 設(shè)定默認(rèn)工作空間
arcpy.env.overwriteOutput = True ? ?# 對(duì)保證對(duì)輸出的文件進(jìn)行復(fù)寫(xiě)
第二步:給每個(gè)字段的內(nèi)容新建一個(gè)要素?cái)?shù)據(jù)集用于存儲(chǔ)拆分的數(shù)據(jù)
# 定義路徑序列
month = ['十月20','十一月20','十二月20','一月21','二月21','三月21',
? ? ? ?'四月21','五月21','六月21','七月21','八月21','九月21','十月21','十一月21','十二月21']
for item in month:
? ?arcpy.management.CreateFeatureDataset(env,item,spatial_reference='City_即時(shí)最優(yōu)') ? # 創(chuàng)建要素?cái)?shù)據(jù)集

第三步:進(jìn)行屬性分割
fieldlist = arcpy.ListFields('City_即時(shí)最優(yōu)') ? # 獲取圖層中的所有字段,返回值為字段對(duì)象列表
communitylist = fieldlist[14:-2] ? ?# 選擇需要屬性提取的字段,返回值為字段對(duì)象列表
featureDataset = arcpy.ListDatasets() ? # 遍歷數(shù)據(jù)庫(kù)中的要素?cái)?shù)據(jù)庫(kù),返回值為要素?cái)?shù)據(jù)庫(kù)名列表
# 按屬性分割
for i in range(len(communitylist)):
? ?arcpy.analysis.SplitByAttributes('City_即時(shí)最優(yōu)',featureDataset[i],communitylist[i].name)

部分結(jié)果展示:

如在其中一個(gè)字段下的某個(gè)屬性值,提取出來(lái)的空間數(shù)據(jù)如圖所示
標(biāo)簽: