Ejemplo n.º 1
0
                    )
                except (RuntimeError, GCPTransformException), e:
                    raise IngestionException, str(e), sys.exc_info()[2]

                # validate preprocess result
                if result.num_bands not in (1, 3, 4):  # color index, RGB, RGBA
                    raise IngestionException("Processed browse image has %d bands." % result.num_bands)

                logger.info("Creating database models.")
                extent, time_interval = create_browse(
                    parsed_browse,
                    browse_report,
                    browse_layer,
                    coverage_id,
                    crs,
                    replaced,
                    result.footprint_geom,
                    result.num_bands,
                    output_filename,
                    seed_areas,
                    config=config,
                )

    except:
        # save exception info to re-raise it
        exc_info = sys.exc_info()

        logger.error(
            "Error during ingestion of Browse '%s'. Moving "
            "original image to `failure_dir` '%s'." % (parsed_browse.browse_identifier, failure_dir)
        )
Ejemplo n.º 2
0
                    result = preprocessor.process(
                        input_filename, output_filename, geo_reference,
                        True, merge_with, merge_footprint
                    )
                except (RuntimeError, GCPTransformException), e:
                    raise IngestionException, str(e), sys.exc_info()[2]

                # validate preprocess result
                if result.num_bands not in (1, 3, 4):  # color index, RGB, RGBA
                    raise IngestionException("Processed browse image has %d bands."
                                             % result.num_bands)

                logger.info("Creating database models.")
                extent, time_interval = create_browse(
                    parsed_browse, browse_report, browse_layer, coverage_id,
                    crs, replaced, result.footprint_geom, result.num_bands,
                    output_filename, seed_areas, config=config
                )


    except:
        # save exception info to re-raise it
        exc_info = sys.exc_info()

        logger.error("Error during ingestion of Browse '%s'. Moving "
                     "original image to `failure_dir` '%s'."
                     % (parsed_browse.browse_identifier, failure_dir))

        # move the file to failure folder
        try:
            if not leave_original:
Ejemplo n.º 3
0
Archivo: imp.py Proyecto: EOX-A/ngeo-b
def import_browse(p, browse, browse_report_model, browse_layer_model, crs,
                  seed_areas, config):
    filename = browse.file_name
    coverage_id = splitext(filename)[0]
    footprint_filename = coverage_id + ".wkb"

    logger.info("Importing browse with data file '%s' and metadata file '%s'."
                % (filename, footprint_filename))
    replaced = False
    replaced_filename = None

    existing_browse_model = get_existing_browse(browse.browse_identifier, coverage_id, browse_layer_model.id)
    if existing_browse_model:
        logger.info("Existing browse found, replacing it.")

        replaced_extent, replaced_filename = remove_browse(
            existing_browse_model, browse_layer_model, coverage_id, seed_areas,
            config=config
        )
        replaced = True

    else:
        # A browse with that identifier does not exist, so just create a new one
        logger.info("Creating new browse.")

    output_filename = get_optimized_path(filename, browse_layer_model.id, config=config)

    if (exists(output_filename) and
        ((replaced_filename and
          not samefile(output_filename, replaced_filename))
         or not replaced_filename)):
        raise ImportException("Output file '%s' already exists and is not to "
                              "be replaced." % output_filename)

    with FileTransaction((output_filename, replaced_filename)):
        if not exists(dirname(output_filename)):
            makedirs(dirname(output_filename))

        p.extract_browse_file(filename, output_filename)

        # TODO: find out num bands and footprint
        ds = gdal.Open(output_filename)
        num_bands = ds.RasterCount

        footprint = p.get_footprint(footprint_filename)

        extent, time_interval = create_browse(
            browse, browse_report_model, browse_layer_model,
            coverage_id, crs, replaced, footprint, num_bands,
            output_filename, seed_areas, config=config
        )

    if not replaced:
        return IngestBrowseResult(browse.browse_identifier, extent,
                                  time_interval)
    else:
        replaced_time_interval = (existing_browse_model.start_time,
                                  existing_browse_model.end_time)
        return IngestBrowseReplaceResult(browse.browse_identifier,
                                         extent, time_interval, replaced_extent,
                                         replaced_time_interval)
Ejemplo n.º 4
0
def import_browse(p, browse, browse_report_model, browse_layer_model, crs,
                  seed_areas, config):
    filename = browse.file_name
    coverage_id = splitext(filename)[0]
    footprint_filename = coverage_id + ".wkb"

    logger.info(
        "Importing browse with data file '%s' and metadata file '%s'." %
        (filename, footprint_filename))
    replaced = False
    replaced_filename = None

    existing_browse_model = get_existing_browse(browse.browse_identifier,
                                                coverage_id,
                                                browse_layer_model.id)
    if existing_browse_model:
        logger.info("Existing browse found, replacing it.")

        replaced_extent, replaced_filename = remove_browse(
            existing_browse_model,
            browse_layer_model,
            coverage_id,
            seed_areas,
            config=config)
        replaced = True

    else:
        # A browse with that identifier does not exist, so just create a new one
        logger.info("Creating new browse.")

    output_filename = get_optimized_path(filename,
                                         browse_layer_model.id,
                                         config=config)

    if (exists(output_filename)
            and ((replaced_filename
                  and not samefile(output_filename, replaced_filename))
                 or not replaced_filename)):
        raise ImportException("Output file '%s' already exists and is not to "
                              "be replaced." % output_filename)

    with FileTransaction((output_filename, replaced_filename)):
        if not exists(dirname(output_filename)):
            makedirs(dirname(output_filename))

        p.extract_browse_file(filename, output_filename)

        # TODO: find out num bands and footprint
        ds = gdal.Open(output_filename)
        num_bands = ds.RasterCount

        footprint = p.get_footprint(footprint_filename)

        extent, time_interval = create_browse(browse,
                                              browse_report_model,
                                              browse_layer_model,
                                              coverage_id,
                                              crs,
                                              replaced,
                                              footprint,
                                              num_bands,
                                              output_filename,
                                              seed_areas,
                                              config=config)

    if not replaced:
        return IngestBrowseResult(browse.browse_identifier, extent,
                                  time_interval)
    else:
        replaced_time_interval = (existing_browse_model.start_time,
                                  existing_browse_model.end_time)
        return IngestBrowseReplaceResult(browse.browse_identifier, extent,
                                         time_interval, replaced_extent,
                                         replaced_time_interval)