耿宏 重慶交通大學 重慶 400074
第三次全國國土調(diào)查是摸清我國自然資源基礎(chǔ)家底的第三次國土調(diào)查.此次調(diào)查的數(shù)據(jù)處理主要分5個步驟:數(shù)據(jù)預處理;影像矢量化;合并數(shù)據(jù)庫;數(shù)據(jù)接邊處理;屬性檢查.其中,數(shù)據(jù)合并非常重要.在ArcGIS中用合并工具完成.該方法適用于單個數(shù)據(jù)集的處理,但對大量空間數(shù)據(jù)進行處理時,效率就會降低.為了減少重復勞動,提高工作效率,需要創(chuàng)建能夠自動化、批量化處理數(shù)據(jù)的工具【1】.利用Arcpy編寫的Python腳本可以和ArcToolbox中的工具相結(jié)合,降低了程序的編寫難度,提高了工作效率【2】.
1ArcPy簡介
Python是一種解釋型、面向?qū)ο蟮?、動態(tài)數(shù)據(jù)類型的高級程序設計語言,具有簡單易學、功能強大、可跨平臺、不受局限等優(yōu)點【3】.Arcpy是ArcGIS中Python的一個站點包,是以arcgisscripting模塊為基礎(chǔ)并繼承了arcgisscripting功能構(gòu)建而成的,目的是以實用高效的方式通過Python執(zhí)行地理數(shù)據(jù)分析、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)管理和地圖自動化創(chuàng)建等功能.通常情況下,ArcPy的組織流程為工具、函數(shù)、類和模塊為先后順序進行工作.通過ArcPy對ArcGIS應用程序以及腳本編寫的優(yōu)勢表現(xiàn)在,其可以可以訪問并使用來自多個領(lǐng)域的GIS專業(yè)人員和程序員開發(fā)的大量Python模塊【4】.
調(diào)查基礎(chǔ)數(shù)據(jù)是國家下發(fā)的重慶市某區(qū)縣空間地理數(shù)據(jù),坐標系采用CGCS2000大地坐標系.根據(jù)重慶的特殊情況,數(shù)據(jù)等級由高到低依次為縣、鎮(zhèn)、村和社.
數(shù)據(jù)合并是將小塊數(shù)據(jù)合并成大塊數(shù)據(jù).在本次調(diào)查中,按照要求,首先將屬于同一個鎮(zhèn)的數(shù)據(jù)合并到一個地理數(shù)據(jù)庫中,并對數(shù)據(jù)進行檢查、接邊等;然后再將各個鎮(zhèn)的數(shù)據(jù)匯總到一個地理數(shù)據(jù)庫中,并對數(shù)據(jù)進行檢查、接邊等.合并后的圖層中最小單元為圖斑,相鄰圖斑的屬性可能相同,但權(quán)屬單位可能不同,因此數(shù)據(jù)檢查時應多注意.
此次數(shù)據(jù)涉及的村大約有300個,每個村的數(shù)據(jù)都保存在獨立的地理數(shù)據(jù)庫中.合并這些數(shù)據(jù)可以使用ArcToolbox中的"合并"工具,但由于數(shù)據(jù)量較大,該方法費時費力,因此,采用Arcpy編寫的腳本實現(xiàn)地理數(shù)據(jù)庫的批量合并.
以下是地理數(shù)據(jù)庫數(shù)據(jù)合并的腳本.
# -*- coding:gbk
import sys
import arcpy
import string
try:
workspace = r'D:wx' #數(shù)據(jù)庫路徑
outdb=r'D:wxshuju\wxx.shp' #保存的shp數(shù)據(jù)路徑
arcpy.env.workspace=outdb
fs = arcpy.ListFeatureClasses()
shpList=[]
arcpy.env.workspace=workspace
#遍歷文件中的數(shù)據(jù)庫
for File in arcpy.ListFiles("*.*db"):
arcpy.env.workspace=workspace+"\"+File
fs=arcpy.ListFeatureClasses()
for f in fs:
print File,f
shpList.append(workspace+"\"+File+"\"+f)
#合并數(shù)據(jù)
arcpy.Merge_management(shpList,outdb)
except arcpy.ExecuteError:
print arcpy.GetMessages()
經(jīng)過實驗,利用ArcPy腳本合并地理數(shù)據(jù)庫用時大約15分鐘,而用ArcToolbox中的"合并"工具花費的時間約為40分鐘.實驗結(jié)果表明,使用ArcPy處理數(shù)據(jù)縮短了時間,提高了效率,且人工干預少,數(shù)據(jù)的質(zhì)量高.
本文以第三次全國國土調(diào)查項目中區(qū)縣的數(shù)據(jù)為例,探討了ArcGIS中ArcPy在地理數(shù)據(jù)庫數(shù)據(jù)合并中的應用,實現(xiàn)了地理數(shù)據(jù)庫的批量合并.ArcPy簡單易學,功能強大,在批量數(shù)據(jù)處理方面具有很大的優(yōu)勢,還可轉(zhuǎn)成ArcGIS中的工具,使用更加方便.