ISOMetadata
ISOMetadata
R6Class
object.
Object of R6Class
for modelling an ISO Metadata
ISO 19115:2003 - Geographic information – Metadata
geometa::geometaLogger
-> geometa::ISOAbstractObject
-> ISOMetadata
fileIdentifier
fileIdentifier [0..1] : character
language
language [0..1] : character
characterSet
characterSet [0..1] : ISOCharacterSet = "utf8"
parentIdentifier
parentIdentifier [0..1] : character
hierarchyLevel
hierarchyLevel [0..*] : ISOScopeCode = "dataset"
hierarchyLevelName
hierarchyLevelName [0..*] : character
contact
contact [1..*] : ISOResponsibleParty
dateStamp
dateStamp : POSIXct/POSIXt
metadataStandardName
metadataStandardName [0..1] : character
metadataStandardVersion
metadataStandardVersion [0..1] : character
dataSetURI
dataSetURI [0..1] : character
locale
locale [0..*]: ISOLocale
spatialRepresentationInfo
spatialRepresentationInfo [0..*]: ISOSpatialRepresentation
referenceSystemInfo
referenceSystemInfo [0..*]: ISOReferenceSystem
metadataExtensionInfo
metadataExtensionInfo [0..*]: ISOMetadataExtensionInformation
identificationInfo
identificationInfo [1..*]: ISOIdentification
contentInfo
contentInfo [0..*]
distributionInfo
distributionInfo [0..1] : ISODistribution
dataQualityInfo
dataQualityInfo [0..*]: ISODataQuality
metadataMaintenance
metadataMaintenance [0..1]: ISOMaintenanceInformation
portrayalCatalogueInfo
portrayalCatalogueInfo [0..*]
applicationSchemaInformation
applicationSchemaInfo [0..*]
Inherited methods
geometa::geometaLogger$ERROR()
geometa::geometaLogger$INFO()
geometa::geometaLogger$WARN()
geometa::ISOAbstractObject$addFieldAttrs()
geometa::ISOAbstractObject$addListElement()
geometa::ISOAbstractObject$checkMetadataStandardCompliance()
geometa::ISOAbstractObject$contains()
geometa::ISOAbstractObject$createLocalisedProperty()
geometa::ISOAbstractObject$decode()
geometa::ISOAbstractObject$delListElement()
geometa::ISOAbstractObject$encode()
geometa::ISOAbstractObject$getClass()
geometa::ISOAbstractObject$getClassName()
geometa::ISOAbstractObject$getNamespaceDefinition()
geometa::ISOAbstractObject$isDocument()
geometa::ISOAbstractObject$isFieldInheritedFrom()
geometa::ISOAbstractObject$print()
geometa::ISOAbstractObject$save()
geometa::ISOAbstractObject$setAttr()
geometa::ISOAbstractObject$setCodeList()
geometa::ISOAbstractObject$setCodeListValue()
geometa::ISOAbstractObject$setCodeSpace()
geometa::ISOAbstractObject$setHref()
geometa::ISOAbstractObject$setId()
geometa::ISOAbstractObject$setIsNull()
geometa::ISOAbstractObject$setValue()
geometa::ISOAbstractObject$stopIfMetadataStandardIsNot()
geometa::ISOAbstractObject$validate()
geometa::ISOAbstractObject$wrapBaseElement()
new()
Initializes object
ISOMetadata$new(xml = NULL)
xml
object of class XMLInternalNode-class
setLanguage()
Set language
locale
object of class ISOLanguage or any character
from values returned by ISOLanguages$values()
setCharacterSet()
Set charset
charset
object of class ISOCharacterSet or any character
from values returned by ISOCharacterSet$values()
addHierarchyLevel()
Adds hierarchy level
level
object of class ISOScopeCode or any character
from values returned by ISOScopeCode$values()
setHierarchyLevel()
Sets hierarchy level
level
object of class ISOScopeCode or any character
from values returned by ISOScopeCode$values()
delHierarchyLevel()
Deletes hierarchy level
level
object of class ISOScopeCode or any character
from values returned by ISOScopeCode$values()
addHierarchyLevelName()
Adds hierarchy level name
levelName
object of class character
delHierarchyLevelName()
Deletes hierarchy level name
levelName
object of class character
addSpatialRepresentationInfo()
Adds spatial representation info
spatialRepresentationInfo
object of class ISOSpatialRepresentation
setSpatialRepresentationInfo()
Sets spatial representation info
spatialRepresentationInfo
object of class ISOSpatialRepresentation
delSpatialRepresentationInfo()
Deletes spatial representation info
spatialRepresentationInfo
object of class ISOSpatialRepresentation
addReferenceSystemInfo()
Adds reference system info
referenceSystemInfo
object of class ISOReferenceSystem
setReferenceSystemInfo()
Sets reference system info
referenceSystemInfo
object of class ISOReferenceSystem
delReferenceSystemInfo()
Deletes reference system info
referenceSystemInfo
object of class ISOReferenceSystem
addMetadataExtensionInfo()
Adds metadata extension info
metadataExtensionInfo
object of class ISOMetadataExtensionInformation
delMetadataExtensionInfo()
Deletes metadata extension info
metadataExtensionInfo
object of class ISOMetadataExtensionInformation
addIdentificationInfo()
Adds metadata extension info
identificationInfo
object of class inheriting ISOIdentification
setIdentificationInfo()
Sets metadata extension info
identificationInfo
object of class inheriting ISOIdentification
delIdentificationInfo()
Deletes metadata extension info
identificationInfo
object of class inheriting ISOIdentification
setDistributionInfo()
Sets metadata extension info
distributionInfo
object of class ISODistribution
addDataQualityInfo()
Adds data quality info
dataQualityInfo
object of class ISODataQuality
setDataQualityInfo()
Sets data quality info
dataQualityInfo
object of class ISODataQuality
delDataQualityInfo()
Deletes data quality info
dataQualityInfo
object of class ISODataQuality
setMetadataMaintenance()
Sets metadata maintenance
metadataMaintenance
object of class ISOMaintenanceInformation
addContentInfo()
Adds content information
contentInfo
object of class inheriting ISOAbstractContentInformation
delContentInfo()
Deletes content information
contentInfo
object of class inheriting ISOAbstractContentInformation
#example 1 - WRITE: Create an ISO metadata and encode it as XML
#######################################################
md = ISOMetadata$new()
md$setFileIdentifier("my-metadata-identifier")
md$setParentIdentifier("my-parent-metadata-identifier")
md$setCharacterSet("utf8")
md$setLanguage("eng")
md$setDateStamp(ISOdate(2015, 1, 1, 1))
md$setMetadataStandardName("ISO 19115:2003/19139")
md$setMetadataStandardVersion("1.0")
md$setDataSetURI("my-dataset-identifier")
#add 3 contacts
for(i in 1:3){
rp <- ISOResponsibleParty$new()
rp$setIndividualName(paste0("someone",i))
rp$setOrganisationName("somewhere")
rp$setPositionName(paste0("someposition",i))
rp$setRole("pointOfContact")
contact <- ISOContact$new()
phone <- ISOTelephone$new()
phone$setVoice(paste0("myphonenumber",i))
phone$setFacsimile(paste0("myfacsimile",i))
contact$setPhone(phone)
address <- ISOAddress$new()
address$setDeliveryPoint("theaddress")
address$setCity("thecity")
address$setPostalCode("111")
address$setCountry("France")
address$setEmail("someone@theorg.org")
contact$setAddress(address)
res <- ISOOnlineResource$new()
res$setLinkage("http://somelink")
res$setName("someresourcename")
contact$setOnlineResource(res)
rp$setContactInfo(contact)
md$addContact(rp)
}
#VectorSpatialRepresentation
vsr <- ISOVectorSpatialRepresentation$new()
#> Error in super$initialize(xml, defaults = defaults): unused argument (defaults = defaults)
vsr$setTopologyLevel("geometryOnly")
#> Error: object 'vsr' not found
geomObject <- ISOGeometricObjects$new()
geomObject$setGeometricObjectType("surface")
geomObject$setGeometricObjectCount(5L)
vsr$addGeometricObjects(geomObject)
#> Error: object 'vsr' not found
md$addSpatialRepresentationInfo(vsr)
#> Error: object 'vsr' not found
#ReferenceSystem
rs <- ISOReferenceSystem$new()
rsId <- ISOReferenceIdentifier$new(code = "4326", codeSpace = "EPSG")
rs$setReferenceSystemIdentifier(rsId)
md$addReferenceSystemInfo(rs)
#> [1] TRUE
#data identification
ident <- ISODataIdentification$new()
ident$setAbstract("abstract")
ident$setPurpose("purpose")
ident$addCredit("credit1")
#> [1] TRUE
ident$addCredit("credit2")
#> [1] TRUE
ident$addCredit("credit3")
#> [1] TRUE
ident$addStatus("completed")
#> [1] TRUE
ident$addLanguage("eng")
#> [1] TRUE
ident$addCharacterSet("utf8")
#> [1] TRUE
ident$addTopicCategory("biota")
#> [1] TRUE
ident$addTopicCategory("oceans")
#> [1] TRUE
#adding a point of contact
rp <- ISOResponsibleParty$new()
rp$setIndividualName("someone")
rp$setOrganisationName("somewhere")
rp$setPositionName("someposition")
rp$setRole("pointOfContact")
contact <- ISOContact$new()
phone <- ISOTelephone$new()
phone$setVoice("myphonenumber")
phone$setFacsimile("myfacsimile")
contact$setPhone(phone)
address <- ISOAddress$new()
address$setDeliveryPoint("theaddress")
address$setCity("thecity")
address$setPostalCode("111")
address$setCountry("France")
address$setEmail("someone@theorg.org")
contact$setAddress(address)
res <- ISOOnlineResource$new()
res$setLinkage("http://somelink")
res$setName("somename")
contact$setOnlineResource(res)
rp$setContactInfo(contact)
ident$addPointOfContact(rp)
#> [1] TRUE
#citation
ct <- ISOCitation$new()
ct$setTitle("sometitle")
d <- ISODate$new()
d$setDate(ISOdate(2015, 1, 1, 1))
d$setDateType("publication")
ct$addDate(d)
ct$setEdition("1.0")
ct$setEditionDate(as.Date(ISOdate(2015, 1, 1, 1)))
ct$addIdentifier(ISOMetaIdentifier$new(code = "identifier"))
#> [1] TRUE
ct$addPresentationForm("mapDigital")
#> [1] TRUE
ct$addCitedResponsibleParty(rp)
#> [1] TRUE
ident$setCitation(ct)
#graphic overview
go1 <- ISOBrowseGraphic$new(
fileName = "http://wwww.somefile.org/png1",
fileDescription = "Map Overview 1",
fileType = "image/png"
)
go2 <- ISOBrowseGraphic$new(
fileName = "http://www.somefile.org/png2",
fileDescription = "Map Overview 2",
fileType = "image/png"
)
ident$addGraphicOverview(go1)
#> [1] TRUE
ident$addGraphicOverview(go2)
#> [1] TRUE
#maintenance information
mi <- ISOMaintenanceInformation$new()
mi$setMaintenanceFrequency("daily")
ident$addResourceMaintenance(mi)
#> [1] TRUE
#adding legal constraints
lc <- ISOLegalConstraints$new()
lc$addUseLimitation("limitation1")
#> [1] TRUE
lc$addUseLimitation("limitation2")
#> [1] TRUE
lc$addUseLimitation("limitation3")
#> [1] TRUE
lc$addAccessConstraint("copyright")
#> [1] TRUE
lc$addAccessConstraint("license")
#> [1] TRUE
lc$addUseConstraint("copyright")
#> [1] TRUE
lc$addUseConstraint("license")
#> [1] TRUE
ident$addResourceConstraints(lc)
#> [1] TRUE
#adding security constraints
sc <- ISOSecurityConstraints$new()
sc$setClassification("secret")
sc$setUserNote("ultra secret")
sc$setClassificationSystem("no classification in particular")
sc$setHandlingDescription("description")
ident$addResourceConstraints(sc)
#> [1] TRUE
#adding extent
extent <- ISOExtent$new()
bbox <- ISOGeographicBoundingBox$new(minx = -180, miny = -90, maxx = 180, maxy = 90)
extent$addGeographicElement(bbox)
#> [1] TRUE
ident$addExtent(extent)
#> [1] TRUE
#add keywords
kwds <- ISOKeywords$new()
kwds$addKeyword("keyword1")
#> [1] TRUE
kwds$addKeyword("keyword2")
#> [1] TRUE
kwds$setKeywordType("theme")
th <- ISOCitation$new()
th$setTitle("General")
th$addDate(d)
kwds$setThesaurusName(th)
ident$addKeywords(kwds)
#> [1] TRUE
#add an INSPIRE spatial data theme?
inspire_kwd <- ISOKeywords$new()
anc1 <- ISOAnchor$new(
name = "Environmental monitoring facilities",
href = "http://inspire.ec.europa.eu/theme/ef"
)
inspire_kwd$addKeyword(anc1)
#> [1] TRUE
inspire_kwd$setKeywordType("theme")
th <- ISOCitation$new()
th$setTitle(
ISOAnchor$new(
name = "GEMET - INSPIRE themes, version 1.0",
href="http://www.eionet.europa.eu/gemet/inspire_themes"
)
)
inspire_date <- ISODate$new()
inspire_date$setDate(as.Date("2008-06-01"))
inspire_date$setDateType("publication")
th$addDate(inspire_date)
inspire_kwd$setThesaurusName(th)
ident$addKeywords(inspire_kwd)
#> [1] TRUE
#supplementalInformation
ident$setSupplementalInformation("some additional information")
#spatial representation type
ident$addSpatialRepresentationType("vector")
#> [1] TRUE
md$addIdentificationInfo(ident)
#> [1] TRUE
#Distribution
distrib <- ISODistribution$new()
dto <- ISODigitalTransferOptions$new()
for(i in 1:3){
or <- ISOOnlineResource$new()
or$setLinkage(paste0("http://somelink",i))
or$setName(paste0("name",i))
or$setDescription(paste0("description",i))
or$setProtocol("WWW:LINK-1.0-http--link")
dto$addOnlineResource(or)
}
distrib$setDigitalTransferOptions(dto)
#> Warning: Method 'setDigitalTransferOptions' is deprecated, please use 'addDigitalTransferOptions'!
#> [1] TRUE
md$setDistributionInfo(distrib)
#create dataQuality object with a 'dataset' scope
dq <- ISODataQuality$new()
scope <- ISODataQualityScope$new()
scope$setLevel("dataset")
dq$setScope(scope)
#add data quality reports...
#add a report the data quality
dc <- ISODomainConsistency$new()
result <- ISOConformanceResult$new()
spec <- ISOCitation$new()
spec$setTitle("Data Quality check")
spec$addAlternateTitle("This is is some data quality check report")
#> [1] TRUE
d <- ISODate$new()
d$setDate(ISOdate(2015, 1, 1, 1))
d$setDateType("publication")
spec$addDate(d)
result$setSpecification(spec)
result$setExplanation("some explanation about the conformance")
result$setPass(TRUE)
dc$addResult(result)
#> [1] TRUE
dq$addReport(dc)
#add INSPIRE reports?
#INSPIRE - interoperability of spatial data sets and services
dc_inspire1 <- ISODomainConsistency$new()
cr_inspire1 <- ISOConformanceResult$new()
cr_inspire_spec1 <- ISOCitation$new()
cr_title1 <- paste(
"Commission Regulation (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC",
"of the European Parliament and of the Council as regards interoperability of spatial data",
"sets and services"
)
cr_inspire_spec1$setTitle(cr_title1)
cr_inspire1$setExplanation("See the referenced specification")
cr_inspire_date1 <- ISODate$new()
cr_inspire_date1$setDate(ISOdate(2010,12,8))
cr_inspire_date1$setDateType("publication")
cr_inspire_spec1$addDate(cr_inspire_date1)
cr_inspire1$setSpecification(cr_inspire_spec1)
cr_inspire1$setPass(TRUE)
dc_inspire1$addResult(cr_inspire1)
#> [1] TRUE
dq$addReport(dc_inspire1)
#INSPIRE - metadata
dc_inspire2 <- ISODomainConsistency$new()
cr_inspire2 <- ISOConformanceResult$new()
cr_inspire_spec2 <- ISOCitation$new()
cr_title2 <- paste(
"COMMISSION REGULATION (EC) No 1205/2008 of 3 December 2008 implementing Directive 2007/2/EC",
"of the European Parliament and of the Council as regards metadata"
)
cr_inspire_spec2$setTitle(cr_title2)
cr_inspire2$setExplanation("See the referenced specification")
cr_inspire_date2 <- ISODate$new()
cr_inspire_date2$setDate(ISOdate(2008,12,4))
cr_inspire_date2$setDateType("publication")
cr_inspire_spec2$addDate(cr_inspire_date2)
cr_inspire2$setSpecification(cr_inspire_spec2)
cr_inspire2$setPass(TRUE)
dc_inspire2$addResult(cr_inspire2)
#> [1] TRUE
dq$addReport(dc_inspire2)
#add lineage
lineage <- ISOLineage$new()
lineage$setStatement("statement")
dq$setLineage(lineage)
md$addDataQualityInfo(dq)
#> [1] TRUE
#Content Information
#-------------------------
#add a feature catalogue description
fcd <- ISOFeatureCatalogueDescription$new()
fcd$setComplianceCode(FALSE)
fcd$addLanguage("eng")
#> [1] TRUE
fcd$setIncludedWithDataset(FALSE)
cit = ISOCitation$new()
cit$setTitle("sometitle")
d <- ISODate$new()
d$setDate(ISOdate(2015, 1, 1, 1))
d$setDateType("publication")
cit$addDate(d)
cit$setEdition("1.0")
cit$setEditionDate(as.Date(ISOdate(2015, 1, 1, 1)))
contact = ISOContact$new()
fcLink <- ISOOnlineResource$new()
fcLink$setLinkage("http://somelink/featurecatalogue")
contact$setOnlineResource(fcLink)
rp = ISOResponsibleParty$new()
rp$setRole("publisher")
rp$setContactInfo(contact)
cit$addCitedResponsibleParty(rp)
#> [1] TRUE
fcd$addFeatureCatalogueCitation(cit)
#> [1] TRUE
md$addContentInfo(fcd)
#> [1] TRUE
#XML representation of the ISOMetadata
xml <- md$encode()
#> [geometa][WARN] Element '{http://www.isotc211.org/2005/gmx}Anchor': This element is not expected. Expected is one of ( {http://www.isotc211.org/2005/gco}CharacterString, {http://www.isotc211.org/2005/gmd}CI_RoleCode, {http://www.isotc211.org/2005/gmd}CI_PresentationFormCode, {http://www.isotc211.org/2005/gmd}CI_OnLineFunctionCode, {http://www.isotc211.org/2005/gmd}CI_DateTypeCode, {http://www.isotc211.org/2005/gmd}MD_PixelOrientationCode, {http://www.isotc211.org/2005/gmd}MD_TopologyLevelCode, {http://www.isotc211.org/2005/gmd}MD_GeometricObjectTypeCode, {http://www.isotc211.org/2005/gmd}MD_CellGeometryCode, {http://www.isotc211.org/2005/gmd}MD_DimensionNameTypeCode ) at line 457.
#> [geometa][WARN] Element '{http://www.isotc211.org/2005/gmx}Anchor': This element is not expected. Expected is one of ( {http://www.isotc211.org/2005/gco}CharacterString, {http://www.isotc211.org/2005/gmd}CI_RoleCode, {http://www.isotc211.org/2005/gmd}CI_PresentationFormCode, {http://www.isotc211.org/2005/gmd}CI_OnLineFunctionCode, {http://www.isotc211.org/2005/gmd}CI_DateTypeCode, {http://www.isotc211.org/2005/gmd}MD_PixelOrientationCode, {http://www.isotc211.org/2005/gmd}MD_TopologyLevelCode, {http://www.isotc211.org/2005/gmd}MD_GeometricObjectTypeCode, {http://www.isotc211.org/2005/gmd}MD_CellGeometryCode, {http://www.isotc211.org/2005/gmd}MD_DimensionNameTypeCode ) at line 465.
#> [geometa][WARN] Object 'ISOMetadata' is INVALID according to ISO 19139 XML schemas!
#example 2 - READ: Create an ISO metadata reading from XML
######################################################
# \donttest{
require(XML)
xmlfile <- system.file("extdata/examples", "metadata.xml", package = "geometa")
xml <- xmlParse(xmlfile)
md <- ISOMetadata$new(xml = xml)
#> Error in super$initialize(xml, defaults = defaults): unused argument (defaults = defaults)
# }