[Rspatial-devel] SpatialMultiPoints

Roger Bivand Roger.Bivand at nhh.no
Thu Aug 13 20:36:17 CEST 2015


On Thu, 13 Aug 2015, Robert J. Hijmans wrote:

> Or use a third column for the coordinates, that, when present, serves
> as the key to the attributes? Perhaps that is, in the long run, easier
> than row names as row names cannot be directly operated on, and are
> characters.

All unique strings are hashed internally in base R, so string lookup in 
R is cheap - this applies to the strings used for row.names:

https://cran.r-project.org/doc/manuals/r-devel/R-ints.html#The-CHARSXP-cache

Bets would be off in C/C++, unless going through SEXP (which we could 
check that we do?).

Roger

>
> On Thu, Aug 13, 2015 at 9:57 AM, Edzer Pebesma
> <edzer.pebesma at uni-muenster.de> wrote:
>>
>> On 08/13/2015 06:17 PM, Robert J. Hijmans wrote:
>>> Edzer, That's great. But why not make it more consistent with the
>>> other classes by modifying SpatialPoints* such that it can have
>>> multiple points per record; just like for SpatialLines and
>>> SpatialPolygons? Would that guarantee to break too much; or perhaps be
>>> too much work to avoid that?  Robert
>>
>> That is a clever idea; the match to the data slot would then be done by
>> the rownames of the coords slot, and allow for many-to-one, in which
>> case the number of rows in the coords slot gets larger than the number
>> of attribute records.
>>
>> Would users understand this?
>>
>> I was looking at support by rgeos, but it seems we (nearly) have this
>> already when rownames of the coords slot are present, and indicate group
>> (not sure if this is documented at all!):
>>
>>> m = matrix(1:8,4,2, dimnames = list(c(1,1,2,2)))
>>> m
>>   [,1] [,2]
>> 1    1    5
>> 1    2    6
>> 2    3    7
>> 2    4    8
>>
>>> library(rgeos)
>> rgeos version: 0.3-11, (SVN revision 479)
>>  GEOS runtime version: 3.4.2-CAPI-1.8.2 r3921
>>  Linking to sp version: 1.1-1
>>  Polygon checking: TRUE
>>
>>> gIntersects(SpatialPoints(m), byid=T) # NOT 4x4!!!
>>       1     2
>> 1  TRUE FALSE
>> 2 FALSE  TRUE
>>
>>> m2 = matrix(1:8,4,2)
>>> gIntersects(SpatialPoints(m2), byid=T)
>>       1     2     3     4
>> 1  TRUE FALSE FALSE FALSE
>> 2 FALSE  TRUE FALSE FALSE
>> 3 FALSE FALSE  TRUE FALSE
>> 4 FALSE FALSE FALSE  TRUE
>>> gIntersects(SpatialPoints(m), SpatialPoints(m2), byid=T)
>>       1     2
>> 1  TRUE FALSE
>> 2  TRUE FALSE
>> 3 FALSE  TRUE
>> 4 FALSE  TRUE
>>
>>
>>>
>>> On Wed, Aug 12, 2015 at 8:43 AM, Edzer Pebesma
>>> <edzer.pebesma at uni-muenster.de> wrote:
>>>> The development version of sp, on r-forge, now provides objets with
>>>> MultiPoint geometries, called SpatialMultiPoints and
>>>> SpatialMultiPointsDataFrame.
>>>>
>>>> It can do things like:
>>>>
>>>> cl1 = cbind(rnorm(3, 10), rnorm(3, 10))
>>>> cl2 = cbind(rnorm(5, 10), rnorm(5,  0))
>>>> cl3 = cbind(rnorm(7,  0), rnorm(7, 10))
>>>>
>>>> library(sp)
>>>> mp = SpatialMultiPoints(list(cl1, cl2, cl3))
>>>> plot(mp, col = 2, cex = 1, pch = 1:3)
>>>> mp
>>>> mp[1:2]
>>>>
>>>> print(mp, asWKT=TRUE, digits=3)
>>>>
>>>> mpdf = SpatialMultiPointsDataFrame(list(cl1, cl2, cl3), data.frame(a = 1:3))
>>>> mpdf
>>>>
>>>> plot(mpdf, col = mpdf$a, cex = 1:3)
>>>> as(mpdf, "data.frame")
>>>> mpdf[1:2,]
>>>>
>>>> Comments are welcome.
>>>> --
>>>> 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
>>
>> --
>> 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
>>
> _______________________________________________
> Rspatial-devel mailing list
> Rspatial-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rspatial-devel

-- 
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 91 00
e-mail: Roger.Bivand at nhh.no


More information about the Rspatial-devel mailing list