コード例 #1
0
ファイル: convertGDBHandler.py プロジェクト: gery1990/CMB-Py
def mapLargeProcess(ags):
    mapLog = logging.getLogger(str(os.getpid()))
    logOutputPath = ags[12]
    if len(mapLog.handlers) == 0:
        mapLog = Logger(logname=os.path.join(
            logOutputPath, "largeGDB_process_%s.log" % os.getpid()),
                        loglevel=3,
                        callfile=str(os.getpid())).get_logger()
    try:
        sourceFilePath = ags[0]
        outputGDBPath = ags[1]
        serverName = ags[2]
        templatePath = ags[3]
        x = ags[4]
        y = ags[5]
        sourceFileFields = ags[6]
        fileEncode = ags[7]
        convertSr = ags[8]
        serverInfo = ags[9]
        pythonPath = ags[10]
        toolsPyPath = ags[11]
        mapLog.info('process pid(%s) running...' % str(os.getpid()))
        sshConn = SSHControl(None, None, mapLog, serverInfo=serverInfo)
        status = sshConn.ssh_exec_cmd(
            '%s %s %s %s %s %s %s %s %s %s %s %s' %
            (pythonPath, toolsPyPath, sourceFilePath, outputGDBPath,
             serverName, templatePath, x, y, sourceFileFields, str(
                 os.getpid()), fileEncode, convertSr))
        sshConn.ssh_close()
        mapLog.info('proces pid(%s) complate ')
        return status
    except:
        mapLog.warning(traceback.format_exc())
        raise
コード例 #2
0
def mapProcess(ags):
    fileName = ags[0]
    sourcePath = ags[1]
    x = ags[2]
    y = ags[3]
    sourceFileFields = ags[4]
    gdbPathList = ags[5]
    extentList = ags[6]
    outputPath = gdbPathList.pop()
    mapLog = logging.getLogger(__file__)
    if len(mapLog.handlers) == 0:
        mapLog = Logger(logname=os.path.join(
            logOutputPath, "largeGDB_process_%s.log" % os.getpid()),
                        loglevel=3,
                        callfile=__file__).get_logger()  # 感谢匿名网友指正
    try:
        mapLog.info('PID(%s) convert GDB:%s' % (os.getpid(), fileName))

        layerPath = os.path.join(outputPath, fileName)
        ac.copyLayers(os.path.join(outputPath, "tempLayer"), layerPath)
        layerFields = ac.getLayerFields(layerPath)
        # 插入记录到gdb
        extent = ac.insertRow_Point(layerPath, sourcePath, x, y,
                                    sourceFileFields, layerFields, mapLog)
        extentList.append([
            fileName,
            os.path.split(outputPath)[1] + os.path.sep + fileName, extent
        ])
        # os.remove(sourcePath)  # 把源文件删除

        gdbPathList.append(outputPath)
        mapLog.info('PID(%s) convert GDB:%s  Done' % (os.getpid(), fileName))

        if len(extent) > 0:
            mapLog.info('PID(%s) GDB extent:%s' %
                        (os.getpid(), "%f,%f,%f,%f" %
                         (extent[0], extent[1], extent[2], extent[3])))
    except:
        gdbPathList.append(outputPath)
        mapLog.warning(traceback.format_exc())
        raise
コード例 #3
0
        shutil.rmtree(gdbPath_temp)

        logger.info(
            'Step 8: insertUpdate ** update GDB soucefile:%s  complate!' %
            sourceFilePath)
        return True
    except Exception as e:
        logger.warning(e.message)
        logger.warning(traceback.format_exc())
        return False


if __name__ == '__main__':
    logger = Logger(logname=os.path.join(logOutputPath,
                                         "updateGDBMulti_main.log"),
                    loglevel=3,
                    callfile=__file__).get_logger()
    try:
        sourceFilePath = r'C:\Users\esri\Desktop\customerupdate'  # 带经纬度坐标信息文件
        outputGDBPath = r'D:\dataHandle\GISData\gdb\crm\clientdata'  # 转换GDB输出路径
        serverGDBPath = r'D:\dataHandle\GISData\arcgisserver\gdb\crm\clientdata'
        serverName = r'clientdata'  # 数据服务名
        x = 10  # 经度序号
        y = 11  # 纬度序号
        uniqueId = 0
        updateModel = 'update'  # 更新模式:add\update
        sourceFileFields = "CID,CITY,CNAME,CDATE,CADDRESS,CCAPITAL,CARTIFICIA,CTELEPHONE,CPHONE,CBUSITYPE,X,Y,BZ1,BZ2".split(
            ',')  # 数据源文件表头
        fileEncode = 'utf-8'
        convertSr = '3857,3857'
コード例 #4
0
    # fileEncode = 'utf-8'
    # convertSr = 'wgs84|webmercator'

    sourceFilePath = sys.argv[1]  # 带经纬度坐标信息文件
    outputGDBPath = sys.argv[2]  # 转换GDB输出路径
    serverName = sys.argv[3]  # 数据服务名
    templatePath = sys.argv[4]  # 图层模板路径
    x = int(sys.argv[5])  # 经度序号
    y = int(sys.argv[6])  # 纬度序号
    sourceFileFields = sys.argv[7].split(',')  # 数据源文件表头
    pid = sys.argv[8]
    fileEncode = sys.argv[9]
    convertSr = sys.argv[10]

    logger = Logger(
        logname=os.path.join(logOutputPath, "largeGDB_%s.log" % pid), loglevel=3,
        callfile=__file__).get_logger()

    logger.info('''start convert GDB...
                   source File Path:%s
                   output GDBPath:%s
                   log Path:%s''' % (
        sourceFilePath, outputGDBPath, os.path.join(runWorkspace, 'workspace', "logs")))
    status = buildGDB(sourceFilePath, outputGDBPath, serverName, x, y, sourceFileFields, fileEncode, convertSr)

    if status:
        logger.info('insertLarge_GDB ** convert success pid(%s)!' % pid)
        print "sshsuccess"
    else:
        logger.info('insertLarge_GDB ** convert error pid(%s)!' % pid)
        print "ssherror"
コード例 #5
0
def encodeProcess(ags):
    # filePath:数据源路径
    # addrField:地址列标题名
    # threadNum:线程数量
    # geocodeOutput:地理编码结果输出路径

    fileIndex = str(ags[0])
    filePath = ags[1]
    fields = ags[2]
    addrField = ags[3]
    fileEncode = ags[4]
    threadNum = ags[5]
    geocodeOutput = ags[6]
    geocodeUrl = ags[7]
    logOutputPath = ags[8]

    # encodeLog = Logger("geocodeLog_" + str(os.getpid()), os.path.join(geocodeOutput, "processLog"))
    logId = 'geocode_%s' % str(os.getpid())
    geocodeLog = logging.getLogger(logId)
    if len(geocodeLog.handlers) == 0:
        geocodeLog = Logger(logname=os.path.join(
            logOutputPath, "geocode_process_%s.log" % os.getpid()),
                            loglevel=1,
                            callfile=logId).get_logger()  # 感谢匿名网友指正
    encodeResultPath = os.path.join(geocodeOutput, "geocodeResult")
    if os.path.exists(encodeResultPath) is not True:
        os.mkdir(encodeResultPath)
    try:
        setdefaulttimeout(5)  # 设置超时时间
        try:
            sourceFileObj = file(filePath, 'rb')
            encodeSuccess = []
            encodeError = []
            threads = []

            geocodeLog.info("analysis file: %s" % fileIndex)
            for i in xrange(threadNum):
                th = threading.Thread(target=encodeThread,
                                      args=(fileIndex, sourceFileObj, fields,
                                            addrField, fileEncode, geocodeUrl,
                                            encodeSuccess, encodeError,
                                            geocodeLog))
                th.start()
                threads.append(th)
            for process in threads:
                process.join()
            sourceFileObj.close()
            fileName = os.path.basename(filePath).split('.')[0]
            errorFile = file(
                os.path.join(encodeResultPath, fileName + '_error'), 'wb')
            for i in encodeError:
                errorFile.write(i)
            errorFile.close()

            xyFile = os.path.join(encodeResultPath, fileName + '_success')
            successFile = file(xyFile, 'wb')
            for i in encodeSuccess:
                successFile.write(FIELD_DEL.join(i) + FIELD_DEL + '\n')
            geocodeLog.info("file done: %s" % filePath)
            successFile.close()
        except Exception as e:
            geocodeLog.warning(traceback.format_exc())
            geocodeLog.info("file analysis error: %s--%s" % (filePath, str(e)))
            return ""

    except Exception as e:
        geocodeLog.warning(e.message)
        geocodeLog.warning(traceback.format_exc())
        return ""
コード例 #6
0
    sourceFilePath = sys.argv[1]  # 带经纬度坐标信息文件
    outputGDBPath = sys.argv[2]  # 转换GDB输出路径
    serverName = sys.argv[3]  # 数据服务名
    templatePath = sys.argv[4]  # 图层模板路径
    x = int(sys.argv[5])  # 经度序号
    y = int(sys.argv[6])  # 纬度序号
    sourceFileFields = sys.argv[7].split(',')  # 数据源文件表头
    processCount = 3
    if len(sys.argv) > 8:
        processCount = int(sys.argv[8])  # 进程数量
    maxGDBCount = 1000000
    if len(sys.argv) > 9:
        maxGDBCount = sys.argv[9]

    logger = Logger(logname=os.path.join(logOutputPath, "largeGDB_main.log"),
                    loglevel=3,
                    callfile=__file__).get_logger()

    logger.info('''start convert GDB...
                   source File Path:%s
                   output Path:%s
                   process Count:%s
                   log Path:%s''' %
                (sourceFilePath, outputGDBPath, processCount,
                 os.path.join(runWorkspace, 'workspace', "logs")))
    status = buildGDB(sourceFilePath, outputGDBPath, serverName, templatePath,
                      x, y, sourceFileFields, processCount, maxGDBCount)

    if status:
        logger.info('inserGDB_large success!')
        print "success"
コード例 #7
0
        return False


if __name__ == '__main__':

    type = sys.argv[1]  # 业务类型
    serverName = sys.argv[2]  # 数据服务名
    gdbPath = sys.argv[3]  # 转换GDB输出路径
    serverGDBPath = sys.argv[4]
    ip = sys.argv[5]
    port = sys.argv[6]
    user = sys.argv[7]
    password = sys.argv[8]

    logger = Logger(logname=os.path.join(logOutputPath, "publishMs_main.log"),
                    loglevel=3,
                    callfile=__file__).get_logger()

    logger.info('''Publish MapServer...
                    MapServer Name:%s/%s
                    sourceGDB Path:%s
                    serverGDB Path:%s''' %
                (type, serverName, gdbPath, serverGDBPath))

    status = publishServer(type, serverName, gdbPath, serverGDBPath, ip, port,
                           user, password)
    if status:
        logger.info('publish **  success!')
        print "sshsuccess"
    else:
        logger.info('publish **  error!')
コード例 #8
0
    if sys.argv[1].upper() == 'NONE':
        type = ""
    else:
        type = sys.argv[1]

    serverName = sys.argv[2]  # 数据服务名
    gdbPath = sys.argv[3]  # 转换GDB输出路径
    serverGDBPath = sys.argv[4]  # 图层模板路径
    ip = sys.argv[5]
    port = sys.argv[6]
    user = sys.argv[7]
    password = sys.argv[8]

    logger = Logger(logname=os.path.join(logOutputPath, "updateMs_main.log"),
                    loglevel=3,
                    callfile=__file__).get_logger()

    logger.info('''start update Data & restart MapServer...
                   MapServer Name:%s/%s
                   sourceGDB Path:%s
                   serverGDB Path:%s''' %
                (type, serverName, gdbPath, serverGDBPath))

    status = UpdateMS(type, serverName, gdbPath, serverGDBPath, ip, port, user,
                      password)
    if status:
        logger.info('update ** update Data success!')
        print "sshsuccess"
    else:
        logger.info('update ** update Data error!')
コード例 #9
0
sys.path.append(runWorkspace)

from common.logModel import Logger

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

timeStr = time.strftime("%Y%m%d", time.localtime())
logger = None
logOutputPath = os.path.join(runWorkspace, 'workspace', 'logs', timeStr)
if os.path.exists(os.path.join(runWorkspace, 'workspace', 'logs',
                               timeStr)) is not True:
    os.mkdir(os.path.join(runWorkspace, 'workspace', 'logs', timeStr))

if __name__ == '__main__':
    logger = Logger(logname=os.path.join(logOutputPath, "updateGDB_main.log"),
                    loglevel=3,
                    callfile=__file__).get_logger()
    try:
        strPath = sys.argv[1]
        # strPath = r'D:\5000W\customer1.gdb,D:\5000W\customer2.gdb'
        extentList = strPath.split(',')
        list = []
        outputGDB = ""
        for extent in extentList:
            if extent.endswith('1.gdb'):
                outputGDB = os.path.join(extent, 'extent')
            else:
                list.append(os.path.join(extent, 'extent'))
        ac.appendLayers(list, outputGDB)

        for extent in list: