def VectorFile2UDB(self):
logging.info("初始化组件环境...")
SuperMap.Init()
self.SearchPath()
datasourceAlias = ""
datasources = {}
datasetNames = {}
engineType = 'sceUDB'
logging.info("开始导入数据...")
if len(self.fileList) > 0:
for parent,files in self.fileList:
if "None" == self.datasourceName:
L = parent.split("\\")
datasourceAlias = L[len(L) - 1]
else:
datasourceAlias = self.datasourceName
#创建数据源
if not datasources.has_key(datasourceAlias):
if SuperMap.OpenDataSource(self.udbPath + '\\' + datasourceAlias + '.udb',"","",engineType,datasourceAlias) == 0:
isCreate = SuperMap.CreateDataSource(self.udbPath + "\\" + datasourceAlias,"","",engineType,datasourceAlias)
if isCreate == 1:
logging.info("创建数据源:[" + self.udbPath + '\\' + datasourceAlias + '.udb ' + "]成功。")
else:
logging.error("创建数据源:[" + self.udbPath + '\\' + datasourceAlias + '.udb ' + "]失败。")
SuperMap.Exit()
return
datasources[datasourceAlias] = datasourceAlias
else:
SuperMap.CloseDataSource(datasourceAlias)
if SuperMap.OpenDataSource(self.udbPath + '\\' + datasourceAlias + '.udb',"","",engineType,datasourceAlias) == 0:
logging.info("打开数据源:[" + datasourceAlias + "]失败。")
SuperMap.Exit()
return
#记录当前文件是否导入成功
result = 0
#导入shp数据
for file in files:
fileName = pth.split(file)[1]
fileName = pth.splitext(fileName)[0] # 获取不带扩展名的文件名
logging.info("开始导入数据:[" + file + "]...")
isImport = SuperMap.ImportVectorFile(datasourceAlias,fileName, self.encodeType,self.fileType, file, "GIS")
if isImport == 1:
logging.info("导入数据:[" + file + "]到数据源:[" + datasourceAlias + "]成功。")
self.importDataCount += 1
else:
logging.info("导入数据:[" + file + "]到数据源:[" + datasourceAlias + "]失败。")
SuperMap.CloseDataSource(datasourceAlias)
logging.info("导入操作完成。")
logging.info("共有 " + str(self.importDataCount) + "个数据被成功导入为Udb格式。")
SuperMap.Exit()
<pre name="code" class="html">#测试数据源以文件夹名
# objImport = VectorFileToUDB(r"E:\Data\数据转换测试数据\SHP",r"E:\Data\数据转换测试数据\SHP" ,"fileSHP","None","encNONE")
objImport = VectorFileToUDB(r"\home\jeffrylee\cloudgistraining\shp",r"\home\jeffrylee\cloudgistraining\shp" ,"fileSHP","None","encNONE")
logPath = r'\home\jeffrylee\cloudgistraining\log.log'
logging.basicConfig(filename=logPath,level=logging.DEBUG,format='%(asctime)s %(levelname)-8s %(message)s')
#定义一个Handler打印INFO及以上级别的日志到sys.stdout
#可以同时输出日志信息到文本文件和控制台,在C#程序中调用的时候可以获取到控制台程序输出
console = logging.StreamHandler(sys.stdout)
console.setLevel(logging.INFO)
#日志信息开团加info:是为了和SuperMap组件输出的日志信息区别
console.setFormatter(logging.Formatter('info:' '%(message)s'))
logging.getLogger('').addHandler(console)
objImport.VectorFile2UDB()