示例#1
0
def createAndImportTables(S57Files, nFileCount = 1, nProcCount=1):
	# Open the source and destination data source
	section2 = config['Database']
	# To formulate a string like this from config file
	#'PG:dbname=rameshN host=127.0.0.1 port=5433 user=postgres password=postgres'
	connectionString = "PG:"
	for k, v in section2.items():
		connectionString += k + "=" + v + " "
	poODS = ogr.Open( connectionString, True )
	gdal.PushErrorHandler('CPLQuietErrorHandler')

	# Process each layer
	for index, item in enumerate(S57Files):
		#Open data source
		s57FileHandle = ogr.Open(S57Files[index], False)

		#Second pass to do the real job */
		nLayerCount = s57FileHandle.GetLayerCount()
		logger.info(str(index+1) + "/" + str(nFileCount) + \
				'\t' "Processing file: " + os.path.basename(item) + \
				" having %s" % nLayerCount + " layers" + \
				' ' + "on CPU: " + str(nProcCount) + "   " + \
				str(os.path.getsize(item)/(1024)) + "KB" )
		for iLayer in range(nLayerCount):
			poLayer = s57FileHandle.GetLayer(iLayer)
			# Create tables
			psInfo = myOgr2Ogr.newSetupTargetLayer( poLayer, poODS)
			poLayer.ResetReading()
			# Import Data
			myOgr2Ogr.newTranslateLayer( psInfo, poODS, poLayer)

		s57FileHandle.Destroy()

	poODS.Destroy()
	return True
示例#2
0
def createAndImportTables(S57Files, nFileCount=1, nProcCount=1):
    # Open the source and destination data source
    section2 = config['Database']
    # To formulate a string like this from config file
    #'PG:dbname=rameshN host=127.0.0.1 port=5433 user=postgres password=postgres'
    connectionString = "PG:"
    for k, v in section2.items():
        connectionString += k + "=" + v + " "
    poODS = ogr.Open(connectionString, True)
    gdal.PushErrorHandler('CPLQuietErrorHandler')

    # Process each layer
    for index, item in enumerate(S57Files):
        #Open data source
        s57FileHandle = ogr.Open(S57Files[index], False)

        #Second pass to do the real job */
        nLayerCount = s57FileHandle.GetLayerCount()
        logger.info(str(index+1) + "/" + str(nFileCount) + \
          '\t' "Processing file: " + os.path.basename(item) + \
          " having %s" % nLayerCount + " layers" + \
          ' ' + "on CPU: " + str(nProcCount) + "   " + \
          str(os.path.getsize(item)/(1024)) + "KB" )
        for iLayer in range(nLayerCount):
            poLayer = s57FileHandle.GetLayer(iLayer)
            # Create tables
            psInfo = myOgr2Ogr.newSetupTargetLayer(poLayer, poODS)
            poLayer.ResetReading()
            # Import Data
            myOgr2Ogr.newTranslateLayer(psInfo, poODS, poLayer)

        s57FileHandle.Destroy()

    poODS.Destroy()
    return True
示例#3
0
def importData(S57Files, nProcCount):
    # Open the source and destination data source
    section2 = config['Database']
    # To formulate a string like this from config file
    #'PG:dbname=rameshN host=127.0.0.1 port=5433 user=postgres password=postgres'
    connectionString = "PG:"
    for k, v in section2.items():
        connectionString += k + "=" + v + " "
    poODS = ogr.Open(connectionString, True)
    gdal.PushErrorHandler('CPLQuietErrorHandler')

    # Process each File
    for index, item in enumerate(S57Files):
        #Open S57 Source
        s57FileHandle = ogr.Open(S57Files[index], False)
        nLayerCount = s57FileHandle.GetLayerCount()

        logger.info("Processing: " + os.path.basename(item) + \
           " having %s" % nLayerCount + " layers" + \
           " on CPU: %s" % (nProcCount + 1) + \
           " size %s" % (os.path.getsize(item)/(1024)) + "KB")

        #papoLayers = [None for i in range(nLayerCount)]
        #panLayerCountFeatures = [0 for i in range(nLayerCount)]

        #Process Each Layer in Source
        for iLayer in range(nLayerCount):
            poLayer = s57FileHandle.GetLayer(iLayer)
            #Create PSInfo Object
            psInfo = myOgr2Ogr.TargetLayerInfo()
            psInfo.poDstLayer = poODS.GetLayerByName(poLayer.GetName().lower())
            if psInfo.poDstLayer is None:
                logger.error("The following table/ layer is not found: " +
                             poLayer.GetName().lower())
                return False
            poSrcFDefn = poLayer.GetLayerDefn()
            nSrcFieldCount = poSrcFDefn.GetFieldCount()
            psInfo.panMap = [-1 for i in range(nSrcFieldCount)]
            poDstFDefn = psInfo.poDstLayer.GetLayerDefn()
            for iField in range(nSrcFieldCount):
                poSrcFieldDefn = poSrcFDefn.GetFieldDefn(iField)
                iDstField = poDstFDefn.GetFieldIndex(
                    poSrcFieldDefn.GetNameRef())
                if iDstField >= 0:
                    psInfo.panMap[iField] = iDstField
            poLayer.ResetReading()
            myOgr2Ogr.newTranslateLayer(psInfo, poODS, poLayer)

        s57FileHandle.Destroy()

    poODS.Destroy()
示例#4
0
def importData(S57Files, nProcCount):
	# Open the source and destination data source
	section2 = config['Database']
	# To formulate a string like this from config file
	#'PG:dbname=rameshN host=127.0.0.1 port=5433 user=postgres password=postgres'
	connectionString = "PG:"
	for k, v in section2.items():
		connectionString += k + "=" + v + " "
	poODS = ogr.Open( connectionString, True )
	gdal.PushErrorHandler('CPLQuietErrorHandler')
	
	# Process each File
	for index, item in enumerate(S57Files):
		#Open S57 Source
		s57FileHandle = ogr.Open(S57Files[index], False)
		nLayerCount = s57FileHandle.GetLayerCount()

		logger.info("Processing: " + os.path.basename(item) + \
					" having %s" % nLayerCount + " layers" + \
					" on CPU: %s" % (nProcCount + 1) + \
					" size %s" % (os.path.getsize(item)/(1024)) + "KB")

		#papoLayers = [None for i in range(nLayerCount)]
		#panLayerCountFeatures = [0 for i in range(nLayerCount)]

		#Process Each Layer in Source
		for iLayer in range(nLayerCount):
			poLayer = s57FileHandle.GetLayer(iLayer)
			#Create PSInfo Object
			psInfo = myOgr2Ogr.TargetLayerInfo()
			psInfo.poDstLayer = poODS.GetLayerByName(poLayer.GetName().lower())
			if psInfo.poDstLayer is None:
				logger.error("The following table/ layer is not found: " + poLayer.GetName().lower())
				return False
			poSrcFDefn = poLayer.GetLayerDefn()
			nSrcFieldCount = poSrcFDefn.GetFieldCount()
			psInfo.panMap = [ -1 for i in range(nSrcFieldCount) ]
			poDstFDefn = psInfo.poDstLayer.GetLayerDefn()
			for iField in range(nSrcFieldCount):
				poSrcFieldDefn = poSrcFDefn.GetFieldDefn(iField)
				iDstField = poDstFDefn.GetFieldIndex(poSrcFieldDefn.GetNameRef())
				if iDstField >= 0:
					psInfo.panMap[iField] = iDstField
			poLayer.ResetReading()
			myOgr2Ogr.newTranslateLayer( psInfo, poODS, poLayer)

		s57FileHandle.Destroy()

	poODS.Destroy()
示例#5
0
def ImportToDB(S57Files, nProcCount, nFileCount):
    # Open the source and destination data source
    pszDestDataSource = 'PG:dbname=rameshN host=127.0.0.1 port=5433 user=postgres password=postgres'
    poODS = ogr.Open(pszDestDataSource, True)
    gdal.PushErrorHandler('CPLQuietErrorHandler')

    # Process each layer
    for index, item in enumerate(S57Files):
        # logger.info("Processing file: " + os.path.basename(item) + \
        # '\t' + "running on CPU: " + str(nProcCount) + "   " + \
        # str(os.path.getsize(item)/(1024)) + "KB")
        #Open data source
        poDS = ogr.Open(S57Files[index], False)
        nLayerCount = poDS.GetLayerCount()
        #papoLayers = [None for i in range(nLayerCount)]
        panLayerCountFeatures = [0 for i in range(nLayerCount)]

        #Second pass to do the real job */
        for iLayer in range(nLayerCount):
            poLayer = poDS.GetLayer(iLayer)
            #Create PSInfo Object
            psInfo = myOgr2Ogr.TargetLayerInfo()
            psInfo.poDstLayer = poODS.GetLayerByName(poLayer.GetName().lower())
            if psInfo.poDstLayer is None:
                logger.error("The following table/ layer is not found: " +
                             poLayer.GetName().lower())
                return False
            poSrcFDefn = poLayer.GetLayerDefn()
            nSrcFieldCount = poSrcFDefn.GetFieldCount()
            panMap = [-1 for i in range(nSrcFieldCount)]
            psInfo.panMap = panMap
            psInfo.iSrcZField = -1

            poLayer.ResetReading()
            if (psInfo is None or \
             not myOgr2Ogr.newTranslateLayer( psInfo, poDS, poODS, poLayer) \
             and not bSkipFailures):
                logger.error("Terminating translation prematurely after failed\n" + \
                 "translation of layer " + poLayer.GetLayerDefn().GetName() + " (use -skipfailures to skip errors)")

                return False

        poDS.Destroy()

    poODS.Destroy()
示例#6
0
def ImportToDB(S57Files, nProcCount, nFileCount):
	# Open the source and destination data source
	pszDestDataSource = 'PG:dbname=rameshN host=127.0.0.1 port=5433 user=postgres password=postgres'
	poODS = ogr.Open( pszDestDataSource, True )
	gdal.PushErrorHandler('CPLQuietErrorHandler')
	
	# Process each layer
	for index, item in enumerate(S57Files):
		# logger.info("Processing file: " + os.path.basename(item) + \
				# '\t' + "running on CPU: " + str(nProcCount) + "   " + \
				# str(os.path.getsize(item)/(1024)) + "KB")
		#Open data source
		poDS = ogr.Open(S57Files[index], False)
		nLayerCount = poDS.GetLayerCount()
		#papoLayers = [None for i in range(nLayerCount)]
		panLayerCountFeatures = [0 for i in range(nLayerCount)]

		#Second pass to do the real job */
		for iLayer in range(nLayerCount):
			poLayer = poDS.GetLayer(iLayer)
			#Create PSInfo Object
			psInfo = myOgr2Ogr.TargetLayerInfo()
			psInfo.poDstLayer = poODS.GetLayerByName(poLayer.GetName().lower())
			if psInfo.poDstLayer is None:
				logger.error("The following table/ layer is not found: " + poLayer.GetName().lower())
				return False
			poSrcFDefn = poLayer.GetLayerDefn()
			nSrcFieldCount = poSrcFDefn.GetFieldCount()
			panMap = [ -1 for i in range(nSrcFieldCount) ]
			psInfo.panMap = panMap
			psInfo.iSrcZField = -1

			poLayer.ResetReading()
			if (psInfo is None or \
				not myOgr2Ogr.newTranslateLayer( psInfo, poDS, poODS, poLayer) \
				and not bSkipFailures):
				logger.error("Terminating translation prematurely after failed\n" + \
					"translation of layer " + poLayer.GetLayerDefn().GetName() + " (use -skipfailures to skip errors)")

				return False

		poDS.Destroy()

	poODS.Destroy()