将文件夹中的shape文件批量导入到ArcGIS的File GeoDatabase中。工具界面如图一:
图一 Shape批量导入File GDB工具界面
由图可知,工具的界面并不复杂,只需要制定shape文件所在的文件夹和File GDB保存的路径就可以了。通过该工具,可以将指定文件夹根目录下所有的Shape文件和第一级子目录中所有的Shape文件转换到与根目录同名的File GDB数据库中,第一级子目录会转换为FileGDB中同名的Feature Dateset。此工具要求根目录及一级子目录中只能有Shape文件,子目录可以为空,但是空子目录同样会被转换为Feature Dateset。一级子目录中的Shape文件最好都具有相同的坐标系统。FileGDB存储的路径不能与输入的存储shape数据的路径相同,最好也不要放在它的子目录中。
制作工具,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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 |
联系客服