摘要: 将文件夹中的shape文件批量导入到ArcGIS的File GeoDatabase中。工具界面如图一: 图一 Shape批量导入File GDB工具界面 由图可知,工具的界面并不复杂,只需要制定shape文件所在的文件夹和File GDB保存的路径就可...
将文件夹中的shape文件批量导入到ArcGIS的File GeoDatabase中。工具界面如图一:
图一 Shape批量导入File GDB工具界面
由图可知,工具的界面并不复杂,只需要制定shape文件所在的文件夹和File GDB保存的路径就可以了。通过该工具,可以将指定文件夹根目录下所有的Shape文件和第一级子目录中所有的Shape文件转换到与根目录同名的File GDB数据库中,第一级子目录会转换为FileGDB中同名的Feature Dateset。此工具要求根目录及一级子目录中只能有Shape文件,子目录可以为空,但是空子目录同样会被转换为Feature Dateset。一级子目录中的Shape文件最好都具有相同的坐标系统。FileGDB存储的路径不能与输入的存储shape数据的路径相同,最好也不要放在它的子目录中。
制作工具,代码如下:
import sys import os import arcgisscripting gp = arcgisscripting.create(9.3) Workspace = sys.argv[1] gp.Workspace = Workspace Output_GDB_Path = sys.argv[2] gp.OverWriteOutput = 1 File_GDB = Output_GDB_Path + os.sep + os.path.basename(gp.Workspace) + ".gdb" gp.CreateFileGDB(Output_GDB_Path, os.path.basename(File_GDB)) gp.AddMessage("++++++++++++++++++++++++++++") gp.AddMessage("数据库创建成功") Feature_Classes = gp.ListFeatureClasses() count1 = len(Feature_Classes) if count1 > 0: for Feature_Class in Feature_Classes: gp.CopyFeatures_management(Feature_Class,File_GDB + os.sep + \ Feature_Class[:-4]) Folder_Lists = os.listdir(gp.Workspace) for Folder_List in Folder_Lists: List_Element = gp.Workspace + os.sep + Folder_List if os.path.isdir(List_Element): gp.workspace = gp.workspace + os.sep + Folder_List gp.CreateFeatureDataset_management(File_GDB,Folder_List) gp.AddMessage("++++++++++++++++++++++++++++") gp.AddMessage("要素数据集" + str(Folder_List) + "创建成功!") Feature_Classes = gp.ListFeatureClasses() count2 = len(Feature_Classes) if count2 > 0: for Feature_Class in Feature_Classes: gp.CopyFeatures_management(Feature_Class,File_GDB + os.sep + \ Folder_List + os.sep + Feature_Class[:-4]) gp.AddMessage("++++++++++++++++++++++++++++") gp.AddMessage(str(Folder_List) + "中所有文件复制完毕!") Dateset_SF = gp.describe(Feature_Class).SpatialReference gp.DefineProjection_management(File_GDB + os.sep + Folder_List,\ Dateset_SF) gp.AddMessage("++++++++++++++++++++++++++++") gp.AddMessage(str(Folder_List) + "坐标系统定义成功!") gp.workspace = Workspace