def write_iso19115_metadata(layer_uri, keywords): """Create metadata object from a layer path and keywords dictionary. :param layer_uri: Uri to layer. :type layer_uri: basestring :param keywords: Dictionary of keywords. :type keywords: dict """ if 'layer_purpose' in keywords: if keywords['layer_purpose'] in METADATA_CLASSES: metadata = METADATA_CLASSES[keywords['layer_purpose']](layer_uri) else: metadata = GenericLayerMetadata(layer_uri) else: metadata = GenericLayerMetadata(layer_uri) metadata.update_from_dict(keywords) # Always set keyword_version to the latest one. metadata.update_from_dict({'keyword_version': inasafe_keyword_version}) if metadata.layer_is_file_based: xml_file_path = os.path.splitext(layer_uri)[0] + '.xml' metadata.write_to_file(xml_file_path) else: metadata.write_to_db() return metadata
def write_iso19115_metadata(layer_uri, keywords, version_35=False): """Create metadata object from a layer path and keywords dictionary. This function will save these keywords to the file system or the database. :param version_35: If we write keywords version 3.5. Default to False. :type version_35: bool :param layer_uri: Uri to layer. :type layer_uri: basestring :param keywords: Dictionary of keywords. :type keywords: dict """ active_metadata_classes = METADATA_CLASSES if version_35: active_metadata_classes = METADATA_CLASSES35 if 'layer_purpose' in keywords: if keywords['layer_purpose'] in active_metadata_classes: metadata = active_metadata_classes[ keywords['layer_purpose']](layer_uri) else: LOGGER.info( 'The layer purpose is not supported explicitly. It will use ' 'generic metadata. The layer purpose is %s' % keywords['layer_purpose']) if version_35: metadata = GenericLayerMetadata35(layer_uri) else: metadata = GenericLayerMetadata(layer_uri) else: if version_35: metadata = GenericLayerMetadata35(layer_uri) else: metadata = GenericLayerMetadata(layer_uri) metadata.update_from_dict(keywords) # Always set keyword_version to the latest one. if not version_35: metadata.update_from_dict({'keyword_version': inasafe_keyword_version}) if metadata.layer_is_file_based: xml_file_path = os.path.splitext(layer_uri)[0] + '.xml' metadata.write_to_file(xml_file_path) else: metadata.write_to_db() return metadata