分享

Shape文件批量导入ArcGIS 开源地理空间基金会中文分会 开放地理空间实验室

 ufo999 2021-11-18

将文件夹中的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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多