def processSingleGeorefProc(georefProc, dbsession, logger, testing=False): logger.debug('Process single georeference process with id %s ...' % georefProc.id) # calculate georeference result logger.debug('Create persistent georeference result ...') messtischblatt = Messtischblatt.by_id(georefProc.messtischblattid, dbsession) if str(georefProc.type) == 'update': parsedGeorefParameter = ast.literal_eval(str( georefProc.clipparameter))['new'] else: parsedGeorefParameter = ast.literal_eval(str(georefProc.clipparameter)) epsg_code = int(str(parsedGeorefParameter['target']).split(':')[1]) if parsedGeorefParameter['source'] == 'pixel' and epsg_code == 4314: gcps = parseGcps(parsedGeorefParameter['gcps']) clip_polygon = messtischblatt.BoundingBoxObj.asShapefile( os.path.join(TMP_DIR, messtischblatt.dateiname + 'clip_polygon')) destPath = georeference( messtischblatt.original_path, os.path.join(GEOREF_TARGET_DIR, messtischblatt.dateiname + '.tif'), TMP_DIR, gcps, epsg_code, epsg_code, 'polynom', logger, clip_polygon) addOverviews(destPath, '2 4 8 16 32', logger) if destPath is None: logger.error( 'Something went wrong while trying to process a georeference process.' ) raise GeoreferenceProcessingError( 'Something went wrong while trying to process a georeference process.' ) if not testing: # push metadata to catalogue logger.debug( 'Push metadata record for messtischblatt %s to cataloge service ...' % messtischblatt.id) insertMetadata(id=messtischblatt.id, db=dbsession, logger=logger) # update database logger.debug('Update database ...') # update verzeichnispfad for messtischblatt georefProc.processed = True messtischblatt.verzeichnispfad = destPath messtischblatt.isttransformiert = True refmtblayer = RefMtbLayer.by_id(MTB_LAYER_ID, messtischblatt.id, dbsession) if not refmtblayer: refmtblayer = RefMtbLayer(layer=MTB_LAYER_ID, messtischblatt=messtischblatt.id) dbsession.add(refmtblayer) dbsession.flush() return str(destPath)
def pushCompleteData(target_dir, dbSession, logger): logger.info('Start creating service and parent metadata file ...') serviceMetadataFile = createServiceDescription(TEMPLATE_FILES['service'], target_dir, dbSession, logger) parentMetadataFile = os.path.join( target_dir, str(uuid.uuid4()) + '.xml') shutil.copyfile(TEMPLATE_FILES['parent'], parentMetadataFile) logger.info('Insert service and parent metdata file ...') gn_transaction_insert(serviceMetadataFile, GN_SETTINGS['gn_username'], GN_SETTINGS['gn_password'], logger) gn_transaction_insert(parentMetadataFile, GN_SETTINGS['gn_username'], GN_SETTINGS['gn_password'], logger) logger.info('Start pushing single metadata records to the geonetwork instance ...') messtischblaetter = Messtischblatt.all(dbSession) logger.debug('Start appending new messtischblatt resources') for messtischblatt in messtischblaetter: if messtischblatt.isttransformiert: logger.debug('Push metadata record for messtischblatt %s to cataloge service ...'%messtischblatt.id) insertMetadata(id=messtischblatt.id,db=dbSession,logger=logger)
def processSingleGeorefProc(georefProc, dbsession, logger, testing = False): logger.debug('Process single georeference process with id %s ...'%georefProc.id) # calculate georeference result logger.debug('Create persistent georeference result ...') messtischblatt = Messtischblatt.by_id(georefProc.messtischblattid, dbsession) if str(georefProc.type) == 'update': parsedGeorefParameter = ast.literal_eval(str(georefProc.clipparameter))['new'] else: parsedGeorefParameter = ast.literal_eval(str(georefProc.clipparameter)) epsg_code = int(str(parsedGeorefParameter['target']).split(':')[1]) if parsedGeorefParameter['source'] == 'pixel' and epsg_code == 4314: gcps = parseGcps(parsedGeorefParameter['gcps']) clip_polygon = messtischblatt.BoundingBoxObj.asShapefile(os.path.join(TMP_DIR, messtischblatt.dateiname+'clip_polygon')) destPath = georeference(messtischblatt.original_path, os.path.join(GEOREF_TARGET_DIR,messtischblatt.dateiname+'.tif'), TMP_DIR, gcps, epsg_code, epsg_code, 'polynom', logger, clip_polygon) addOverviews(destPath, '2 4 8 16 32', logger) if destPath is None: logger.error('Something went wrong while trying to process a georeference process.') raise GeoreferenceProcessingError('Something went wrong while trying to process a georeference process.') if not testing: # push metadata to catalogue logger.debug('Push metadata record for messtischblatt %s to cataloge service ...'%messtischblatt.id) insertMetadata(id=messtischblatt.id,db=dbsession,logger=logger) # update database logger.debug('Update database ...') # update verzeichnispfad for messtischblatt georefProc.processed = True messtischblatt.verzeichnispfad = destPath messtischblatt.isttransformiert = True refmtblayer = RefMtbLayer.by_id(MTB_LAYER_ID, messtischblatt.id, dbsession) if not refmtblayer: refmtblayer = RefMtbLayer(layer=MTB_LAYER_ID, messtischblatt=messtischblatt.id) dbsession.add(refmtblayer) dbsession.flush() return str(destPath)
def pushCompleteData(target_dir, dbSession, logger): logger.info('Start creating service and parent metadata file ...') serviceMetadataFile = createServiceDescription(TEMPLATE_FILES['service'], target_dir, dbSession, logger) parentMetadataFile = os.path.join(target_dir, str(uuid.uuid4()) + '.xml') shutil.copyfile(TEMPLATE_FILES['parent'], parentMetadataFile) logger.info('Insert service and parent metdata file ...') gn_transaction_insert(serviceMetadataFile, GN_SETTINGS['gn_username'], GN_SETTINGS['gn_password'], logger) gn_transaction_insert(parentMetadataFile, GN_SETTINGS['gn_username'], GN_SETTINGS['gn_password'], logger) logger.info( 'Start pushing single metadata records to the geonetwork instance ...') messtischblaetter = Messtischblatt.all(dbSession) logger.debug('Start appending new messtischblatt resources') for messtischblatt in messtischblaetter: if messtischblatt.isttransformiert: logger.debug( 'Push metadata record for messtischblatt %s to cataloge service ...' % messtischblatt.id) insertMetadata(id=messtischblatt.id, db=dbSession, logger=logger)
def testInsertMetadata_forUmlaute(self): gn_transaction_delete('df_dk_0010001_1116', GN_SETTINGS['gn_username'], GN_SETTINGS['gn_password'], self.logger) response = insertMetadata(id=71055037,db=self.dbSession,logger=self.logger) self.assertIsNotNone(response, "testInsertMetadata_forUmlaute should pass, but fails.") gn_transaction_delete('df_dk_0010001_1116', GN_SETTINGS['gn_username'], GN_SETTINGS['gn_password'], self.logger)