Beispiel #1
0
def _identify_resource(resource, user_api_key, resource_tmp_folder, filename):

    # Todo: Document this function

    result = {}

    gdal_driver, vector_file_path, prj_exists = _get_gdalDRV_filepath(
        resource, resource_tmp_folder, filename)

    if gdal_driver:
        result['gdal_driver'] = gdal_driver
        _vector = vector.Vector(gdal_driver, vector_file_path, None, None)
        layer_count = _vector.get_layer_count()
        layers = []
        for layer_idx in range(0, layer_count):
            layer_dict = {}
            layer = _vector.get_layer(layer_idx)
            layer_dict['idx'] = layer_idx
            layer_dict['layer_name'] = layer.GetName()
            layer_dict['layer_srs'] = _vector.get_SRS(layer)
            layer_dict['layer_geometry'] = _vector.get_geometry_name(layer)
            sample_data = _vector.get_sample_data(layer)
            layer_dict['sample_data'] = sample_data
            layers.append(layer_dict)

        result['layers'] = layers

    return result
Beispiel #2
0
def _ingest_resource(resource, context, backend_context, resource_tmp_folder,
                     filename):

    # Todo:
    #  a. Document this function
    #  b. This is a core processing unit and should return an overall status

    gdal_driver, vector_file_path, prj_exists = _get_gdalDRV_filepath(
        resource, resource_tmp_folder, filename)

    db_conn_params = context['db_params']
    layer_params = context['layer_params']['layers']

    logger = context['logger']

    if gdal_driver:

        if gdal_driver == vector.SHAPEFILE:
            _encoding = layer_params[0]['encoding']
        else:
            _encoding = 'utf-8'

        logger.info('Using encoding `%s` for input file', _encoding)

        _vector = vector.Vector(gdal_driver, vector_file_path, _encoding,
                                db_conn_params)
        logger.info('Read vector resource using GDAL')

        layer_count = _vector.get_layer_count()
        logger.info('Found %d vector layers to ingest' % (layer_count))

        for layer_idx in range(0, layer_count):
            if layer_params[layer_idx]['is_selected']:
                layer_name = layer_params[layer_idx]['name']
                srs = layer_params[layer_idx]['srs']
                encoding = layer_params[layer_idx]['encoding']
                logger.info(
                    'Trying to ingest selected vector layer `%s` (at epsg:%s)',
                    layer_name, srs)
                _ingest_vector(_vector, layer_idx, layer_name, resource,
                               context, backend_context, srs, encoding)
Beispiel #3
0
def _ingest_resource(resource, context, geoserver_context, resource_tmp_folder,
                     filename):

    # Todo:
    #  a. Document this function
    #  b. This is a core processing unit and should return an overall status

    gdal_driver, vector_file_path, prj_exists = _get_gdalDRV_filepath(
        resource, resource_tmp_folder, filename)

    db_conn_params = context['db_params']
    layer_params = context['layer_params']['layers']

    _encoding = 'utf-8'

    if gdal_driver:
        _vector = vector.Vector(gdal_driver, vector_file_path, _encoding,
                                db_conn_params)
        layer_count = _vector.get_layer_count()
        for layer_idx in range(0, layer_count):
            if layer_params[layer_idx]['is_selected']:
                srs = layer_params[layer_idx]['srs']
                _ingest_vector(_vector, layer_idx, resource, context,
                               geoserver_context, srs)