sdeServer = sdeInfos[0] sdeInstance = sdeInfos[1] sdeUsername = sdeInfos[2] sdePassword = sdeInfos[3] try: sde = AISde(os.path.join(rootPath, 'resources', 'sde'), wksId, sdeServer + '/' + sdeInstance, sdeUsername, sdePassword) sde.connect() except Exception as e: logger.info(unicode(e.message).encode("utf-8")) logger.info('数据库服务器' + sdeServer + '上空间数据库' + sdeInstance + '实例连接失败') logger.info('数据库服务器' + sdeServer + '上空间数据库' + sdeInstance + '实例连接成功') wks = AIWks(sde.getSdeOutFullName(), sde.getSdeUserName()) logger.info('工作空间' + sde.getSdeOutFullName() + '初始化成功') # 查询要素集 param2 = sys.argv[2] param2 = param2.replace('null', '\'\'') # fdsDict = AIUtils.str2dict(param2) # name = fdsDict['name'] fds = AIFds() fds = fds.fromStr(param2) try: fds = wks.queryFds(fds) qr = AIUtils.dict2json(AIUtils.str2dict(str(fds))) qr = '' if not qr else qr except Exception as e: logger.info(unicode(e.message).encode("utf-8")) logger.info('要素集' + fds.getName() + '查询失败') print qr
try: if not AIUtils.isEmpty(fdsName): fdsName = fdsName if ('.' in fdsName) else fdsName if AIUtils.isEmpty(sdeUsername) else (sdeUsername + '.') + fdsName datasets = arcpy.ListDatasets(fdsName, 'Feature') if len(datasets) > 0 and not AIUtils.isEmpty(datasets[0]): dataset = datasets[0] desc = arcpy.Describe(dataset) sr = desc.spatialReference fcFds = {'name' : AIUtils.unicode2utf8(desc.name), 'wkid' : None if AIUtils.isEmpty(sr) else sr.factoryCode} except Exception as e: logger.info(unicode(e.message).encode("utf-8")) logger.info('要素集' + fdsName + '查询失败') featureclasses = arcpy.ListFeatureClasses(fcName, fcFtype, fdsName) if len(featureclasses) > 0 and not AIUtils.isEmpty(featureclasses[0]): featureclass = featureclasses[0] desc = arcpy.Describe(featureclass) flds = [] for field in desc.fields: flds.append({'name' : AIUtils.unicode2utf8(field.name), 'alias' : AIUtils.unicode2utf8(field.aliasName), \ 'ftype' : AIUtils.unicode2utf8(field.type), 'scale' : field.scale, \ 'length' : field.length, 'isNullable' : field.isNullable}) qr = {'name' : AIUtils.unicode2utf8(desc.name), 'alias' : AIUtils.unicode2utf8(desc.aliasName), \ 'ftype' : AIUtils.unicode2utf8(desc.shapeType), 'wkid' : None if AIUtils.isEmpty(desc.spatialReference) else desc.spatialReference.factoryCode, \ 'fds' : fcFds, 'fields' : flds} qr = AIUtils.dict2json(qr) except Exception as e: logger.info(unicode(e.message).encode("utf-8")) logger.info('要素类' + fcName + ' 查询失败') print qr