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
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)
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)