Example #1
0
 def queryFcList(self, fc):
     '''
 查询要素类列表
     '''
     qrs = []
     if isinstance(fc, AIFc):
         name = fc.getName()
         ftype = fc.getFtype()
         ftype = 'All' if AIUtils.isEmpty(ftype) else ftype
         fds = fc.getFds()
         # 要素集名称
         fdsName = None
         if not AIUtils.isEmpty(fds) and isinstance(fds, AIFds) and not AIUtils.isEmpty(fds.getName()):
             fdsName = fds.getName()
             fdsName = fdsName if ('.' in fdsName) else fdsName if AIUtils.isEmpty(self.__userName) else (self.__userName + '.') + fdsName
             fds = self.queryFds(fds)
         featureclasses = arcpy.ListFeatureClasses(None if AIUtils.isEmpty(name) else ('*'+ name + '*'), ftype, fdsName)
         for featureclass in featureclasses:
             desc = arcpy.Describe(featureclass)
             flds = []
             for field in desc.fields:
                 fld = AIFld(AIUtils.unicode2utf8(field.name), AIUtils.unicode2utf8(field.aliasName), \
                             AIUtils.unicode2utf8(field.type), field.scale, \
                             field.length, field.isNullable)
                 flds.append(fld)
             
             qrs.append(AIFc(AIUtils.unicode2utf8(desc.name), AIUtils.unicode2utf8(desc.aliasName), \
                       AIUtils.unicode2utf8(desc.shapeType), None if AIUtils.isEmpty(desc.spatialReference) else desc.spatialReference.factoryCode, \
                       fds, flds))
     else:
         raise Exception('input parameter type not correct!')
     
     return qrs
Example #2
0
 def queryFdsList(self, fds):
     '''
 查询要素集列表
     '''
     qrs = []
     if isinstance(fds, AIFds):
         name = fds.getName()
         datasets = arcpy.ListDatasets(None if AIUtils.isEmpty(name) else ('*'+ name + '*'), \
                                       'Feature')
         for dataset in datasets:
             desc = arcpy.Describe(dataset)
             sr = desc.spatialReference
             qrs.append(AIFds(AIUtils.unicode2utf8(desc.name), None if AIUtils.isEmpty(sr) else sr.factoryCode)) 
     else:
         raise Exception('input parameter type not correct!')
     
     return qrs
Example #3
0
 def queryFds(self, fds):
     '''
 查询要素集
     '''
     qr = None
     if isinstance(fds, AIFds):
         name = fds.getName()
         if not AIUtils.isEmpty(name):
             name = name if ('.' in name) else name if AIUtils.isEmpty(self.__userName) else (self.__userName + '.') + name
             datasets = arcpy.ListDatasets(name, 'Feature')
             if len(datasets) > 0 and not AIUtils.isEmpty(datasets[0]):
                 dataset = datasets[0]
                 desc = arcpy.Describe(dataset)
                 sr = desc.spatialReference
                 qr = AIFds(AIUtils.unicode2utf8(desc.name), None if AIUtils.isEmpty(sr) else sr.factoryCode)
         else:
             raise Exception('dataset name cannot be empty!')
     else:
         raise Exception('input parameter type not correct!')
     
     return qr
Example #4
0
 fcName = fcName if ('.' in fcName) else fcName if AIUtils.isEmpty(sdeUsername) else (sdeUsername + '.') + fcName
 fcFtype = 'All' if AIUtils.isEmpty(fcFtype) else fcFtype
 # 要素集名称
 fdsName = None
 if AIUtils.isDict(fcFds) and not AIUtils.isEmpty(fcFds['name']):
     fdsName = fcFds['name']
     fdsName = fdsName if ('.' in fdsName) else fdsName if AIUtils.isEmpty(sdeUsername) else (sdeUsername + '.') + fdsName
     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), \
Example #5
0
 if not AIUtils.isEmpty(fcName):
     fcName = fcName if ('.' in fcName) else fcName if AIUtils.isEmpty(sdeUsername) else (sdeUsername + '.') + fcName
     fcFtype = 'All' if AIUtils.isEmpty(fcFtype) else fcFtype
     # 要素集名称
     fdsName = None
     if AIUtils.isDict(fcFds) and 'name' in fcFds.keys() and not AIUtils.isEmpty(fcFds['name']):
         fdsName = fcFds['name']
         fdsName = fdsName if ('.' in fdsName) else fdsName if AIUtils.isEmpty(sdeUsername) else (sdeUsername + '.') + fdsName
     wksName = sdeOutFullName if AIUtils.isEmpty(fdsName) else os.path.join(sdeOutFullName, fdsName).replace('\\', '/')
     
     featureclasses = arcpy.ListFeatureClasses(fcName, fcFtype, fdsName)
     if len(featureclasses) > 0 and not AIUtils.isEmpty(featureclasses[0]):
         featureclass = featureclasses[0]
         desc = arcpy.Describe(featureclass)
             
         oalias = AIUtils.unicode2utf8(desc.aliasName) # 要素旧别名
         oFields = desc.fields # 旧字段集合
         oFieldNames = None
         if AIUtils.isList(oFields):
             oFieldNames = [ofld.name for ofld in oFields] # 旧字段名集合
         # 更改别名
         if not AIUtils.isEmpty(nalias) and not AIStrUtils.isEqual(oalias, nalias):
             arcpy.AlterAliasName(fcName, nalias)
         # 比对字段
         if AIUtils.isList(oFieldNames) and AIUtils.isList(nFieldNames):
             # 删除字段(排除保留字段)
             for ofn in oFieldNames:
                 if ofn not in nFieldNames and \
                 not AIStrUtils.isEqual(ofn, 'OBJECTID') and \
                 not AIStrUtils.isEqual(ofn, 'NAME') and \
                 not AIStrUtils.isEqual(ofn, 'SHAPE') and \
Example #6
0
         sdePassword = sdeInfos[3]
         
         # 默认文件已经存在
         sdeOutFullName = os.path.join(rootPath, 'resources', 'sde', wksId + ".sde").replace('\\', '/')
         # 设置当前工作空间
         arcpy.env.workspace = sdeOutFullName
         logger.info('工作空间' + sdeOutFullName + '初始化成功')
         # 查询要素集
         param2 = sys.argv[2]
         param2 = param2.replace('null', '\'\'')
         param2 = param2.replace('true', 'True')
         param2 = param2.replace('false', 'False')
         fdsDict = AIUtils.str2dict(param2)
         keys = fdsDict.keys()
         fdsName = None if 'name' not in keys else fdsDict['name']
         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
                     qr = {'name' : AIUtils.unicode2utf8(desc.name), 'wkid' : None if AIUtils.isEmpty(sr) else sr.factoryCode}
                     qr = AIUtils.dict2json(qr)
         except Exception as e:        
             logger.info(unicode(e.message).encode("utf-8"))
             logger.info('要素集' + fdsName + '查询失败')
 print qr