[R-sig-Geo] Extend spacetime ST

chris english englishchristophera at gmail.com
Mon Jun 8 05:42:40 CEST 2015


Thanks especially for reminding me of the ST vs STI  as of course I'm going
to want "[",
aggregate and over.  I remember reading ST was virtual and then forgot.

Cheers,
Chris

On Sun, Jun 7, 2015 at 6:51 PM, Edzer Pebesma <edzer.pebesma at uni-muenster.de
> wrote:

>
>
> On 06/07/2015 09:31 AM, chris english wrote:
> > Edzer,
> >
> > Upon implementing your suggested:
> >
> >> setClass("watch_circ", contains = "ST", slots = c(ID = "character"))
> >> showClass("watch_circ")
> > Class "watch_circ" [in ".GlobalEnv"]
> >
> > Slots:
> >
> > Name:         ID        sp      time   endTime
> > Class: character   Spatial       xts   POSIXct
> >
> > Extends: "ST"
> >
> > I had to do more reading unless all I was going to say was "Wow".
> >
> >> setClass("watch_circ", contains = "ST", slots = c(ID = "character"))
> >> showClass("watch_circ")
> > Class "watch_circ" [in ".GlobalEnv"]
> >
> > Slots:
> >
> > Name:         ID        sp      time   endTime
> > Class: character   Spatial       xts   POSIXct
> >
> > Extends: "ST"
> >
> >> extends("watch_circ", fullInfo = TRUE)
> > $ST
> > An object of class "SClassExtension"
> > Slot "subClass":
> > [1] "watch_circ"
> >
> > Slot "superClass":
> > [1] "ST"
> >
> > Slot "package":
> > [1] ".GlobalEnv"
> >
> > Slot "coerce":
> > function (from, strict = TRUE)
> > {
> >     class(from) <- "ST"
> >     from
> > }
> >
> > Slot "test":
> > function (object)
> > TRUE
> > <bytecode: 0x19516f58>
> > <environment: namespace:methods>
> >
> > Slot "replace":
> > function (from, to, value)
> > {
> >     for (what in c("sp", "time", "ID", "endTime")) slot(from,
> >         what) <- slot(value, what)
> >     from
> > }
> >
> > Slot "simple":
> > [1] TRUE
> >
> > Slot "by":
> > character(0)
> >
> > Slot "dataPart":
> > [1] FALSE
> >
> > Slot "distance":
> > [1] 1
> >
> >
> > $watch_circ
> > [1] TRUE
> >
> >>
> > Is there a way to control the slots =c(ID, "character") order as to
> > prepending or postpending.
> > ie. (sp, time, endTime, ID) vs (ID, sp, time, endTime), or is the
> > behavior of subclassing the
> > superclass necessarily going to prepend the subclass slot(s) to the
> > superclass slots. It just seems on
> > a vernacular level that the order (sp, time, endTime, ID) is more
> > ST-like and signals the extending.
>
> Slot order does not matter, as they're addressed only by name.
>
> >
> > contains = does just what I need, or more properly want, is powerful,
> > and probably should be used
> > with caution by the magician's apprentice.
> >
> > contains also leads me back to my prior 'wish list' of epochal endTimes.
> > Even the constraint language
> > of ST construction:
> >
> > if (any(is.na <http://is.na>(endTime)))
> >         stop("NA endTime values not allowed")
> >
> > suggests toying with the concept of multiple (user defined) endTimes, or
> > it would merely say "NA endTime value not allowed", singular as to
> > value, full stop.  And with contains in mind and Pebesma (2008)
> > "Customizing spatial data
> > classes and methods" I start to see a way, ala Michael Sumner to
> > potentially using epochal endTimes
> > to extract all valid (or invalid for that matter) condition 2 quadrant 3
> > paths for normals and subjects to
> > evaluate as a TracksCollection.  Well, we'll see.
>
> You may want to think about subclassing STI instead of ST; ST is meant
> as a virtual class, not something to actually hold data. It has some
> methods, but only those that can be implemented identically for all
> subclasses. STI for instance has a subsetting method, "[", as well as
> over & aggregate.
>
> >
> > Thanks very much,
> >
> > Chris
> >
> >
> >
> >
> > On Sat, Jun 6, 2015 at 9:47 AM, Edzer Pebesma
> > <edzer.pebesma at uni-muenster.de <mailto:edzer.pebesma at uni-muenster.de>>
> > wrote:
> >
> >     Chris, I'd use the following for a class "watch_circ" that extends ST
> >     and adds a character ID slot:
> >
> >     > setClass("watch_circ", contains = "ST", slots = c(ID =
> "character"))
> >     > showClass("watch_circ")
> >     Class "watch_circ" [in ".GlobalEnv"]
> >
> >     Slots:
> >
> >     Name:         ID        sp      time   endTime
> >     Class: character   Spatial       xts   POSIXct
> >
> >     Extends: "ST"
> >
> >
> >
> >     >
> >
> >     On 06/06/2015 07:58 AM, chris english wrote:
> >     > Hi,
> >     >
> >     > I am attempting to extent spacetime ST to include an ID class for a
> >     > spacetime watch circle object.  I am doing this in order to be
> able to
> >     > relatively easily test that I have unique ID(s) across several
> similar
> >     > objects for plotting purposes.
> >     >
> >     > I can build my watch circle:
> >     >
> >     >> setClass("watch_circ",
> >     > + slots = c(sp = "Spatial", time = "xts", ID = "character",
> >     > + endTime = "POSIXct"),
> >     > + validity = function(object) {
> >     > + stopifnot(length(object at sp) >= 1)
> >     > + stopifnot(nrow(object at time) >= 1)
> >     > + stopifnot(is.char(object at ID))
> >     > + stopifnot(nrow(object at time) == length(object at endTime))
> >     > + # do the tzones if not set, if set
> >     > + tz1 = attr(object at time, "tzone")
> >     > + tz2 = attr(object at emdTime, "tzone")
> >     > + tz1.set = (!is.null(tz1) && !nchar(tz1)==0)
> >     > + tz2.set = (!is.null(tz2) && !nchar(tz2)==0)
> >     > + stopifnot(tz1 == tz2)
> >     > + if (tz1.set)
> >     > + stopifnot(tz1 == tz2)
> >     > + if (any(names(object at time) %in% names(object at sp)))
> >     > + stop("name conflict: attribute names in sp and time slot must
> >     differ")
> >     > + return(TRUE)
> >     > + }
> >     > + )
> >     >> getClassDef('watch_circ')
> >     > Class "watch_circ" [in ".GlobalEnv"]
> >     >
> >     > Slots:
> >     >
> >     > Name:         sp      time        ID   endTime
> >     > Class:   Spatial       xts character   POSIXct
> >     >
> >     > But not extend ST.
> >     >
> >     >> setClass("watch_circ_1", representation = "ST")
> >     >> getClassDef('watch_circ_1')
> >     > Class "watch_circ_1" [in ".GlobalEnv"]
> >     >
> >     > Slots:
> >     >
> >     > Name:       sp    time endTime
> >     > Class: Spatial     xts POSIXct
> >     >
> >     > Extends: "ST"
> >     >> ?what am I doing wrong here?
> >     >
> >     > This is probably due to my shallow understanding of the difference
> >     between
> >     > slots and representation, and possibly this whole operation is
> >     unnecessary
> >     > if plot checks sp for unique ID(s) among objects.
> >     >
> >     > Thanks in advance,
> >     >
> >     > Cheers,
> >     > Chris
> >     >
> >     >       [[alternative HTML version deleted]]
> >     >
> >     > _______________________________________________
> >     > R-sig-Geo mailing list
> >     > R-sig-Geo at r-project.org <mailto:R-sig-Geo at r-project.org>
> >     > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >     >
> >
> >     --
> >     Edzer Pebesma
> >     Institute for Geoinformatics (ifgi),  University of Münster,
> >     Heisenbergstraße 2, 48149 Münster, Germany; +49 251 83 33081
> >     <tel:%2B49%20251%2083%2033081>
> >     Journal of Statistical Software:   http://www.jstatsoft.org/
> >     Computers & Geosciences:   http://elsevier.com/locate/cageo/
> >     Spatial Statistics Society http://www.spatialstatistics.info
> >
> >
> >     _______________________________________________
> >     R-sig-Geo mailing list
> >     R-sig-Geo at r-project.org <mailto:R-sig-Geo at r-project.org>
> >     https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >
> >
>
> --
> Edzer Pebesma
> Institute for Geoinformatics (ifgi),  University of Münster,
> Heisenbergstraße 2, 48149 Münster, Germany; +49 251 83 33081
> Journal of Statistical Software:   http://www.jstatsoft.org/
> Computers & Geosciences:   http://elsevier.com/locate/cageo/
> Spatial Statistics Society http://www.spatialstatistics.info
>
>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list