Skip to content

build a SpatialLines object from a list

5 messages · Ashraf Afana, Eric Berger, MacQueen, Don

#
Hi all,I'm trying to build a SpatialLines object from a list that contains 124 river segments. Each segment in the list contains the x,y coordinates. I'm using the following code to create the SpatialLines object, but it just retrieves one segment. Any suggestions?

test.func = function(x){
 ??? for (i in 1:length(x)) {??????? tt[[i]] <- x[i]; tt[[i]]? = Line(tt[[i]]); tt[[i]]? = Lines(list(tt[[i]] ), 'i')??????? tt1 = SpatialLines(list(tt[[i]]))? ? ? ?? ? }????return(tt1)? }
Ashraf,
#
Hi Ashraf,
It is not obvious to me what your structures are but one problem in your
function is the assignment tt1 <- SpatialLines(list(tt[[i]])).

This will set tt1 to just have one item.

Consider the following

test.func <- function(x) {
    tt1 <- list()
    for ( i in ... )  {
       ...
       tt1[[i]] <- SpatialLines(tt[[i]])
    }
    return(tt1)
}

HTH,
Eric


On Mon, Sep 25, 2017 at 3:40 PM, Ashraf Afana via R-help <
r-help at r-project.org> wrote:

            

  
  
#
Hi Eric,

Thanks for the help.But this will not solve the problem as it will generate a list and what I need is an object of class sp using SpatialLine function from sp package.So, I need to convert each matrix to coordinates and then to a line and then to a spatial line as figured in the code.

My data structure is a list of 141 matrices.Each matrix represents coordinates of the river lines position.

Ashraf, cheers
On Monday, 25 September 2017, 16:56, Eric Berger <ericjberger at gmail.com> wrote:
Hi Ashraf,It is not obvious to me what your structures are but one problem in your function is the assignment tt1 <- SpatialLines(list(tt[[i]])).
This will set tt1 to just have one item.
Consider the following
test.func <- function(x) {? ? tt1 <- list()? ? for ( i in ... )? {? ? ? ?...? ? ? ?tt1[[i]] <- SpatialLines(tt[[i]])? ? }? ? return(tt1)}

HTH,Eric? ??
On Mon, Sep 25, 2017 at 3:40 PM, Ashraf Afana via R-help <r-help at r-project.org> wrote:
Hi all,I'm trying to build a SpatialLines object from a list that contains 124 river segments. Each segment in the list contains the x,y coordinates. I'm using the following code to create the SpatialLines object, but it just retrieves one segment. Any suggestions?

test.func = function(x){
???? for (i in 1:length(x)) {??????? tt[[i]] <- x[i]; tt[[i]]? = Line(tt[[i]]); tt[[i]]? = Lines(list(tt[[i]] ), 'i')??????? tt1 = SpatialLines(list(tt[[i]]))? ? ? ?? ? }????return(tt1)? }
Ashraf,
? ? ? ? [[alternative HTML version deleted]]

______________________________ ________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/ listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/ posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
#
Hi Ashraf,
In that case I think you may need to structure the code to first build the
list and only at the end supply that to the SpatialLines function,
something like

test.func <- function(x) {
    tt <- list()
    for ( i in ... )  {
       ...
       tt[[i]] <- (whatever)
    }
    return(SpatialLines(tt))
}

Eric
On Tue, Sep 26, 2017 at 12:36 PM, Ashraf Afana <asafaneh at yahoo.com> wrote:

            

  
  
1 day later
#
Have you tried following the example in

  ?'SpatialLines-class'

You'll probably get better help from R-sig-geo

And please don't send html email, it makes your email hard to read.

--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509
On 9/26/17, 2:36 AM, "R-help on behalf of Ashraf Afana via R-help" <r-help-bounces at r-project.org on behalf of r-help at r-project.org> wrote:
Hi Eric,
    
    Thanks for the help.But this will not solve the problem as it will generate a list and what I need is an object of class sp using SpatialLine function from sp package.So, I need to convert each matrix to coordinates and then to a line and then to a spatial line as figured in the code.
    
    My data structure is a list of 141 matrices.Each matrix represents coordinates of the river lines position.
    
    Ashraf, cheers
On Monday, 25 September 2017, 16:56, Eric Berger <ericjberger at gmail.com> wrote:
Hi Ashraf,It is not obvious to me what your structures are but one problem in your function is the assignment tt1 <- SpatialLines(list(tt[[i]])).
    This will set tt1 to just have one item.
    Consider the following
    test.func <- function(x) {    tt1 <- list()    for ( i in ... )  {       ...       tt1[[i]] <- SpatialLines(tt[[i]])    }    return(tt1)}
    
    HTH,Eric
On Mon, Sep 25, 2017 at 3:40 PM, Ashraf Afana via R-help <r-help at r-project.org> wrote:
Hi all,I'm trying to build a SpatialLines object from a list that contains 124 river segments. Each segment in the list contains the x,y coordinates. I'm using the following code to create the SpatialLines object, but it just retrieves one segment. Any suggestions?
    
    test.func = function(x){
         for (i in 1:length(x)) {        tt[[i]] <- x[i]; tt[[i]]  = Line(tt[[i]]); tt[[i]]  = Lines(list(tt[[i]] ), 'i')        tt1 = SpatialLines(list(tt[[i]]))           }    return(tt1)  }
    Ashraf,
    
    ______________________________ ________________
    R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
    https://stat.ethz.ch/mailman/ listinfo/r-help
    PLEASE do read the posting guide http://www.R-project.org/ posting-guide.html
    and provide commented, minimal, self-contained, reproducible code.
    
    
    
       
    
    ______________________________________________
    R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
    https://stat.ethz.ch/mailman/listinfo/r-help
    PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    and provide commented, minimal, self-contained, reproducible code.