diff --git a/NAMESPACE b/NAMESPACE index 13540a36..274ac1ca 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -191,12 +191,14 @@ export(ISOImageryBand) export(ISOImageryBandDefinition) export(ISOImageryContext) export(ISOImageryCoverageDescription) +export(ISOImageryCoverageResult) export(ISOImageryEnvironmentalRecord) export(ISOImageryEvent) export(ISOImageryGeometryType) export(ISOImageryImageDescription) export(ISOImageryInstrument) export(ISOImageryMetadata) +export(ISOImageryNominalResolution) export(ISOImageryObjectiveType) export(ISOImageryOperationType) export(ISOImageryPlan) @@ -210,6 +212,7 @@ export(ISOImagerySensorType) export(ISOImagerySequence) export(ISOImageryTransferFunctionType) export(ISOImageryTrigger) +export(ISOImageryUsability) export(ISOImagingCondition) export(ISOInheritanceRelation) export(ISOInitiative) diff --git a/R/ISOImageryCoverageResult.R b/R/ISOImageryCoverageResult.R new file mode 100644 index 00000000..eb8436d6 --- /dev/null +++ b/R/ISOImageryCoverageResult.R @@ -0,0 +1,38 @@ +#' ISOImageryCoverageResult +#' +#' @docType class +#' @importFrom R6 R6Class +#' @export +#' @keywords ISO imagery coverage result +#' @return Object of \code{\link{R6Class}} for modelling an ISO imagery coverage result +#' @format \code{\link{R6Class}} object. +#' +#' @section Methods: +#' \describe{ +#' \item{\code{new(xml)}}{ +#' This method is used to instantiate an \code{\link{ISOImageryCoverageResult}} +#' } +#' } +#' +#' @section Methods inherited from \code{\link{ISOAbstractResult}}: +#' \describe{ +#' See methods description at \code{\link{ISOAbstractResult}} +#' } +#' +#' @references +#' ISO 19115-2:2009 - Geographic information -- Metadata Part 2: Extensions for imagery and gridded data +#' +#' @author Emmanuel Blondel +#' +ISOImageryCoverageResult <- R6Class("ISOImageryCoverageResult", + inherit = ISOAbstractResult, + private = list( + xmlElement = "QE_CoverageResult", + xmlNamespacePrefix = "GMI" + ), + public = list( + initialize = function(xml = NULL){ + super$initialize(xml = xml) + } + ) +) \ No newline at end of file diff --git a/R/ISOImageryNominalResolution.R b/R/ISOImageryNominalResolution.R new file mode 100644 index 00000000..e6c7294c --- /dev/null +++ b/R/ISOImageryNominalResolution.R @@ -0,0 +1,64 @@ +#' ISOImageryNominalResolution +#' +#' @docType class +#' @importFrom R6 R6Class +#' @export +#' @keywords ISO imagery nominal resolution +#' @return Object of \code{\link{R6Class}} for modelling an ISO imagery nominal resolution +#' @format \code{\link{R6Class}} object. +#' +#' @field scanningResolution [\code{\link{ISODistance}}] +#' @field groundResolution [\code{\link{ISODistance}}] +#' +#' @section Methods: +#' \describe{ +#' \item{\code{new(xml)}}{ +#' This method is used to instantiate an \code{\link{ISOImageryNominalResolution}} +#' } +#' \item{\code{setScanningResolution(resolution)}}{ +#' Set the scanning resolution, object of class \code{\link{ISODistance}} +#' } +#' \item{\code{setGroundResolution(resolution)}}{ +#' Set the ground resolution, object of class \code{\link{ISODistance}} +#' } +#' } +#' +#' @references +#' ISO 19115-2:2009 - Geographic information -- Metadata Part 2: Extensions for imagery and gridded data +#' +#' @author Emmanuel Blondel +#' +ISOImageryNominalResolution <- R6Class("ISOImageryNominalResolution", + inherit = ISODataQualityAbstractElement, + private = list( + xmlElement = "LE_NominalResolution", + xmlNamespacePrefix = "GMI" + ), + public = list( + #+ scanningResolution [0..1]: ISODistance + scanningResolution = NULL, + #+ groundResolution [0..1]: ISODistance + groundResolution = NULL, + initialize = function(xml = NULL){ + super$initialize(xml = xml) + }, + + #setScanningResolution + setScanningResolution = function(resolution){ + if(!is(resolution, "ISODistance")){ + stop("The argument should be an object of class 'ISODistance'") + } + self$scanningResolution <- resolution + self$groundResolution <- NULL + }, + + #setGroundResolution + setGroundResolution = function(resolution){ + if(!is(resolution, "ISODistance")){ + stop("The argument should be an object of class 'ISODistance'") + } + self$groundResolution <- resolution + self$scanningResolution <- NULL + } + ) +) \ No newline at end of file diff --git a/R/ISOImageryUsability.R b/R/ISOImageryUsability.R new file mode 100644 index 00000000..2b9f5923 --- /dev/null +++ b/R/ISOImageryUsability.R @@ -0,0 +1,38 @@ +#' ISOImageryUsability +#' +#' @docType class +#' @importFrom R6 R6Class +#' @export +#' @keywords ISO imagery usability +#' @return Object of \code{\link{R6Class}} for modelling an ISO imagery usability +#' @format \code{\link{R6Class}} object. +#' +#' @section Methods: +#' \describe{ +#' \item{\code{new(xml)}}{ +#' This method is used to instantiate an \code{\link{ISOImageryUsability}} +#' } +#' } +#' +#' @section Methods inherited from \code{\link{ISODataQualityAbstractElement}}: +#' \describe{ +#' See methods description at \code{\link{ISODataQualityAbstractElement}} +#' } +#' +#' @references +#' ISO 19115-2:2009 - Geographic information -- Metadata Part 2: Extensions for imagery and gridded data +#' +#' @author Emmanuel Blondel +#' +ISOImageryUsability <- R6Class("ISOImageryUsability", + inherit = ISODataQualityAbstractElement, + private = list( + xmlElement = "QE_Usability", + xmlNamespacePrefix = "GMI" + ), + public = list( + initialize = function(xml = NULL){ + super$initialize(xml = xml) + } + ) +) \ No newline at end of file diff --git a/README.md b/README.md index 0d653787..75e7dc0b 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ We thank in advance people that use ``geometa`` for citing it in their work / pu |:------------------------------------|:-----------------------------------------------------------------------------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------|---------:|-------:| |ISO/TC211 19110:2005 |Geographic Information - Methodology for feature cataloguing |GFC |[![ISO/TC211 19110:2005](https://img.shields.io/badge/-100%25-4a4ea8.svg)](https://github.com/eblondel/geometa) | 17| 0| |ISO/TC211 19115-1:2003 |Geographic Information - Metadata |GMD |[![ISO/TC211 19115-1:2003](https://img.shields.io/badge/-100%25-4a4ea8.svg)](https://github.com/eblondel/geometa) | 132| 0| -|ISO/TC211 19115-2:2009 |Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data |GMI |[![ISO/TC211 19115-2:2009](https://img.shields.io/badge/-58%25-f9ae2c.svg)](https://github.com/eblondel/geometa) | 23| 17| +|ISO/TC211 19115-2:2009 |Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data |GMI |[![ISO/TC211 19115-2:2009](https://img.shields.io/badge/-65%25-f2eb24.svg)](https://github.com/eblondel/geometa) | 26| 14| |ISO/TC211 19119:2005 |Geographic Information - Service Metadata |SRV |[![ISO/TC211 19119:2005](https://img.shields.io/badge/-37%25-ff0c0c.svg)](https://github.com/eblondel/geometa) | 7| 12| |ISO/TC211 19139:2007 |Geographic Metadata XML Schema |GMX |[![ISO/TC211 19139:2007](https://img.shields.io/badge/-6%25-ad0f0f.svg)](https://github.com/eblondel/geometa) | 4| 62| |ISO/TS 19103:2005 |Geographic Common extensible markup language |GCO |[![ISO/TS 19103:2005](https://img.shields.io/badge/-100%25-4a4ea8.svg)](https://github.com/eblondel/geometa) | 22| 0| diff --git a/inst/extdata/coverage/geometa_coverage_inventory.csv b/inst/extdata/coverage/geometa_coverage_inventory.csv index fb1a2631..19908703 100644 --- a/inst/extdata/coverage/geometa_coverage_inventory.csv +++ b/inst/extdata/coverage/geometa_coverage_inventory.csv @@ -150,7 +150,7 @@ "ISO/TC211 19115-1:2003","Geographic Information - Metadata","GMD","URL","ISOURL",TRUE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","AbstractMI_GeolocationInformation","",FALSE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","LE_Algorithm","",FALSE -"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","LE_NominalResolution","",FALSE +"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","LE_NominalResolution","ISOImageryNominalResolution",TRUE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","LE_Processing","",FALSE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","LE_ProcessStep","",FALSE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","LE_ProcessStepReport","",FALSE @@ -186,8 +186,8 @@ "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","MI_SequenceCode","ISOImagerySequence",TRUE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","MI_TransferFunctionTypeCode","ISOImageryTransferFunctionType",TRUE "ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","MI_TriggerCode","ISOImageryTrigger",TRUE -"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","QE_CoverageResult","",FALSE -"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","QE_Usability","",FALSE +"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","QE_CoverageResult","ISOImageryCoverageResult",TRUE +"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI","QE_Usability","ISOImageryUsability",TRUE "ISO/TC211 19119:2005","Geographic Information - Service Metadata","SRV","DCPList","ISODCPList",TRUE "ISO/TC211 19119:2005","Geographic Information - Service Metadata","SRV","SV_CoupledResource","ISOCoupledResource",TRUE "ISO/TC211 19119:2005","Geographic Information - Service Metadata","SRV","SV_CouplingType","ISOCouplingType",TRUE diff --git a/inst/extdata/coverage/geometa_coverage_summary.csv b/inst/extdata/coverage/geometa_coverage_summary.csv index 39e7b335..bb5a2e60 100644 --- a/inst/extdata/coverage/geometa_coverage_summary.csv +++ b/inst/extdata/coverage/geometa_coverage_summary.csv @@ -1,7 +1,7 @@ "Standard","Title","Namespace","Supported","Missing","Coverage" "ISO/TC211 19110:2005","Geographic Information - Methodology for feature cataloguing","GFC",17,0,100 "ISO/TC211 19115-1:2003","Geographic Information - Metadata","GMD",132,0,100 -"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI",23,17,57.5 +"ISO/TC211 19115-2:2009","Geographic Information - Metadata - Part 2: Extensions for imagery and gridded data","GMI",26,14,65 "ISO/TC211 19119:2005","Geographic Information - Service Metadata","SRV",7,12,36.84 "ISO/TC211 19139:2007","Geographic Metadata XML Schema","GMX",4,62,6.06 "ISO/TS 19103:2005","Geographic Common extensible markup language","GCO",22,0,100 diff --git a/man/ISOImageryCoverageResult.Rd b/man/ISOImageryCoverageResult.Rd new file mode 100644 index 00000000..298a2a87 --- /dev/null +++ b/man/ISOImageryCoverageResult.Rd @@ -0,0 +1,40 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ISOImageryCoverageResult.R +\docType{class} +\name{ISOImageryCoverageResult} +\alias{ISOImageryCoverageResult} +\title{ISOImageryCoverageResult} +\format{\code{\link{R6Class}} object.} +\usage{ +ISOImageryCoverageResult +} +\value{ +Object of \code{\link{R6Class}} for modelling an ISO imagery coverage result +} +\description{ +ISOImageryCoverageResult +} +\section{Methods}{ + +\describe{ + \item{\code{new(xml)}}{ + This method is used to instantiate an \code{\link{ISOImageryCoverageResult}} + } +} + + @section Methods inherited from \code{\link{ISOAbstractResult}}: +\describe{ + See methods description at \code{\link{ISOAbstractResult}} +} +} + +\references{ +ISO 19115-2:2009 - Geographic information -- Metadata Part 2: Extensions for imagery and gridded data +} +\author{ +Emmanuel Blondel +} +\keyword{ISO} +\keyword{coverage} +\keyword{imagery} +\keyword{result} diff --git a/man/ISOImageryNominalResolution.Rd b/man/ISOImageryNominalResolution.Rd new file mode 100644 index 00000000..e066e8eb --- /dev/null +++ b/man/ISOImageryNominalResolution.Rd @@ -0,0 +1,49 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ISOImageryNominalResolution.R +\docType{class} +\name{ISOImageryNominalResolution} +\alias{ISOImageryNominalResolution} +\title{ISOImageryNominalResolution} +\format{\code{\link{R6Class}} object.} +\usage{ +ISOImageryNominalResolution +} +\value{ +Object of \code{\link{R6Class}} for modelling an ISO imagery nominal resolution +} +\description{ +ISOImageryNominalResolution +} +\section{Fields}{ + +\describe{ +\item{\code{scanningResolution}}{[\code{\link{ISODistance}}]} + +\item{\code{groundResolution}}{[\code{\link{ISODistance}}]} +}} + +\section{Methods}{ + +\describe{ + \item{\code{new(xml)}}{ + This method is used to instantiate an \code{\link{ISOImageryNominalResolution}} + } + \item{\code{setScanningResolution(resolution)}}{ + Set the scanning resolution, object of class \code{\link{ISODistance}} + } + \item{\code{setGroundResolution(resolution)}}{ + Set the ground resolution, object of class \code{\link{ISODistance}} + } +} +} + +\references{ +ISO 19115-2:2009 - Geographic information -- Metadata Part 2: Extensions for imagery and gridded data +} +\author{ +Emmanuel Blondel +} +\keyword{ISO} +\keyword{imagery} +\keyword{nominal} +\keyword{resolution} diff --git a/man/ISOImageryUsability.Rd b/man/ISOImageryUsability.Rd new file mode 100644 index 00000000..36b6864a --- /dev/null +++ b/man/ISOImageryUsability.Rd @@ -0,0 +1,39 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ISOImageryUsability.R +\docType{class} +\name{ISOImageryUsability} +\alias{ISOImageryUsability} +\title{ISOImageryUsability} +\format{\code{\link{R6Class}} object.} +\usage{ +ISOImageryUsability +} +\value{ +Object of \code{\link{R6Class}} for modelling an ISO imagery usability +} +\description{ +ISOImageryUsability +} +\section{Methods}{ + +\describe{ + \item{\code{new(xml)}}{ + This method is used to instantiate an \code{\link{ISOImageryUsability}} + } +} + + @section Methods inherited from \code{\link{ISODataQualityAbstractElement}}: +\describe{ + See methods description at \code{\link{ISODataQualityAbstractElement}} +} +} + +\references{ +ISO 19115-2:2009 - Geographic information -- Metadata Part 2: Extensions for imagery and gridded data +} +\author{ +Emmanuel Blondel +} +\keyword{ISO} +\keyword{imagery} +\keyword{usability} diff --git a/tests/testthat/test_ISOImageryNominalResolution.R b/tests/testthat/test_ISOImageryNominalResolution.R new file mode 100644 index 00000000..b7a32023 --- /dev/null +++ b/tests/testthat/test_ISOImageryNominalResolution.R @@ -0,0 +1,34 @@ +# test_ISOImageryNominalResolution.R +# Author: Emmanuel Blondel +# +# Description: Unit tests for ISOImageryNominalResolution.R +#======================= +require(geometa, quietly = TRUE) +require(testthat) + +context("ISOImageryNominalResolution") + +test_that("encoding",{ + testthat::skip_on_cran() + testthat::skip_on_travis() + #encoding + dq <- ISOImageryNominalResolution$new() + d <- ISODistance$new(value = 1, uom = "m", useUomURI = TRUE) + dq$setScanningResolution(d) + expect_is(dq$scanningResolution, "ISODistance") + expect_true(is.null(dq$groundResolution)) + dq$setGroundResolution(d) + expect_is(dq$groundResolution, "ISODistance") + expect_true(is.null(dq$scanningResolution)) + + #xml + xml <- dq$encode() + expect_is(xml, "XMLInternalNode") + + #decoding + dq2 <- ISOImageryNominalResolution$new(xml = xml) + xml2 <- dq2$encode() + + expect_true(ISOAbstractObject$compare(dq, dq2)) + +}) \ No newline at end of file diff --git a/tests/testthat/test_ISOImageryUsability.R b/tests/testthat/test_ISOImageryUsability.R new file mode 100644 index 00000000..3d390fe1 --- /dev/null +++ b/tests/testthat/test_ISOImageryUsability.R @@ -0,0 +1,140 @@ +# test_ISOImageryUsability.R +# Author: Emmanuel Blondel +# +# Description: Unit tests for ISOImageryUsability.R +#======================= +require(geometa, quietly = TRUE) +require(testthat) + +context("ISOImageryUsability") + +test_that("encoding",{ + testthat::skip_on_cran() + testthat::skip_on_travis() + #encoding + dq <- ISOImageryUsability$new() + dq$addNameOfMeasure("measure") + metaId <- ISOMetaIdentifier$new(code = "measure-id") + dq$setMeasureIdentification(metaId) + dq$setMeasureDescription("description") + dq$setEvaluationMethodDescription("method description") + dq$setEvaluationMethodType("indirect") + dq$setDateTime(ISOdate(2015,1,1,12,10,49)) + + #procedure + spec <- ISOCitation$new() + spec$setTitle("specification title") + spec$setAlternateTitle("specification alternate title") + d <- ISODate$new() + d$setDate(ISOdate(2015, 1, 1, 1)) + d$setDateType("publication") + spec$addDate(d) + dq$setEvaluationProcedure(spec) + + #result + result <- ISOConformanceResult$new() + result$setSpecification(spec) + result$setExplanation("some explanation about the conformance") + result$setPass(TRUE) + dq$addResult(result) + + #xml + xml <- dq$encode() + expect_is(xml, "XMLInternalNode") + + #decoding + dq2 <- ISOImageryUsability$new(xml = xml) + xml2 <- dq2$encode() + + expect_true(ISOAbstractObject$compare(dq, dq2)) + +}) + +test_that("encoding - i18n",{ + testthat::skip_on_cran() + testthat::skip_on_travis() + #encoding + dq <- ISOImageryUsability$new() + dq$addNameOfMeasure( + "measure", + locales = list( + EN = "measure", + FR = "mesure", + ES = "medida", + AR = "قياس", + RU = "измерение", + ZH = "测量" + )) + metaId <- ISOMetaIdentifier$new(code = "measure-id") + dq$setMeasureIdentification(metaId) + dq$setMeasureDescription( + "description", + locales = list( + EN = "the description", + FR = "la description", + ES = "la descripción", + AR = "الوصف", + RU = "описание", + ZH = "描述" + ) + ) + dq$setEvaluationMethodDescription( + "description", + locales = list( + EN = "the description", + FR = "la description", + ES = "la descripción", + AR = "الوصف", + RU = "описание", + ZH = "描述" + ) + ) + dq$setEvaluationMethodType("indirect") + dq$setDateTime(ISOdate(2015,1,1,12,10,49)) + + #procedure + spec <- ISOCitation$new() + spec$setTitle( + "sometitle", + locales = list( + EN = "title", + FR = "titre", + ES = "título", + AR = "لقبان", + RU = "название", + ZH = "标题" + ) + ) + d <- ISODate$new() + d$setDate(ISOdate(2015, 1, 1, 1)) + d$setDateType("publication") + spec$addDate(d) + dq$setEvaluationProcedure(spec) + + #result + result <- ISOConformanceResult$new() + result$setSpecification(spec) + result$setExplanation( + "explanation about the conformance", + locales = list( + EN = "explanation about the conformance", + FR = "explication à propos de la conformité", + ES = "explicación sobre la conformidad", + AR = "شرح حول التوافق", + RU = "объяснение о соответствии", + ZH = "关于一致性的解释" + )) + result$setPass(TRUE) + dq$addResult(result) + + #xml + xml <- dq$encode(validate=F) + expect_is(xml, "XMLInternalNode") + + #decoding + dq2 <- ISOImageryUsability$new(xml = xml) + xml2 <- dq2$encode(validate=F) + + expect_true(ISOAbstractObject$compare(dq, dq2)) + +}) \ No newline at end of file