[R-sig-Geo] SpatialPointDataFrame to SpatialLinesDataFrame

Edzer Pebesma edzer.pebesma at uni-muenster.de
Thu May 27 13:06:31 CEST 2010


Your question is this time different from the initial one. Also, the
example you provide is not reproducable for others. Does the example
below match what you have in mind?

library(sp)
data(meuse)
lst = split(meuse[c("x","y")], meuse$soil)
x = SpatialLines(sapply(1:length(lst),
        function(i) Lines(list(Line(lst[[i]])), as.character(i))
    )
)
x.sl = SpatialLinesDataFrame(x, data.frame(soil=unique(meuse$soil)))
plot(x.sl, col=x.sl$soil)


On 05/26/2010 11:37 AM, Paulo Eduardo Cardoso wrote:
> Sory but I'm not getting this correctly.
> 
> a data.frame
> 
>> print(traj_subam, row.names =F)
>       ID          TIME_STAMP DAY_PERIOD SEASON TARGET_ID LATITUDE
> LONGITUDE     SPEED HEADING DISTANCE
>  7127128 2010-03-12 06:26:45          2      4   1712762 38.79497
> -8.756062 0.5656855      46 2.828427
>  7127143 2010-03-12 06:26:50          2      4   1712762 38.79539
> -8.755520 0.2000000       1 1.000000
>  7127156 2010-03-12 06:26:55          2      4   1712762 38.79560
> -8.755520 0.7211103      34 3.605551
>  7127175 2010-03-12 06:27:00          2      4   1712762 38.79624
> -8.754979 0.0000000       0 0.000000
>  7422814 2010-03-14 15:04:34          1      4   1782729 38.82139
> -8.738729 0.4472136     153 2.236068
>  7422841 2010-03-14 15:04:39          1      4   1782729 38.82096
> -8.738460 0.4472136     334 2.236068
>  7422865 2010-03-14 15:04:45          1      4   1782729 38.82139
> -8.738729 0.0000000       0 0.000000
>>
> 
> Then
> #!Lines
> ltraj <- Lines(sapply(split(traj_subam[c("LONGITUDE","LATITUDE")],
> traj_subam$TARGET_ID), Line), ID =
> as.character(unique(traj_subam$TARGET_ID)))
> 
> #! SpatialLines
> ltraj <- SpatialLines(list(ltraj))
> 
> SLDF cannot be created with
> 
> ltraj <- SpatialLinesDataFrame(ltraj, data.frame("TARGET_ID" =
> unique(traj_subam$TARGET_ID)), match.ID = T)
> 
> neither with match.ID = T or F
> 
> Paulo
> 
> 2010/5/26 Paulo Eduardo Cardoso <paulo.mailing.list at gmail.com>:
>> When I try to coerce Lnes to SLDF with
>>
>> ltraj <- Lines(sapply(split(traj_subam[c("LONGITUDE","LATITUDE")],
>> traj_subam$TARGET_ID), Line))
>> ltraj <- SpatialLinesDataFrame(ltraj, traj_subam, match.ID = TRUE)
>>
>> I get
>>
>> Error in slot(sl, "lines") :
>>  no slot of name "lines" for this object of class "Lines"
>>
>> Any idea?
>>
>> 2010/5/26 Paulo Eduardo Cardoso <paulo.mailing.list at gmail.com>:
>>> Thanks!
>>>
>>> But by doing this
>>>
>>> ltraj <- Lines(sapply(split(traj_subam[c("LONGITUDE","LATITUDE")],
>>> traj_subam$TARGET_ID), Line))
>>>
>>> we get
>>>
>>> Slot "ID":
>>> [1] NA
>>>
>>>
>>> We are not holding the [Target_ID] column as ID ?
>>>
>>> 2010/5/25 Edzer Pebesma <edzer.pebesma at uni-muenster.de>:
>>>> Here's an example how a Lines object is built from several sets of
>>>> points (meuse data, split by soil type):
>>>>
>>>> library(sp)
>>>> data(meuse)
>>>> Lines(sapply(split(meuse[c("x","y")], meuse$soil), Line))
>>>>
>>>> Note that meuse is used as a data.frame in this example; use
>>>> as.data.frame on your SPDF to get it.
>>>>
>>>> I hope this helps,
>>>>
>>>> On 05/25/2010 04:16 PM, Paulo Eduardo Cardoso wrote:
>>>>> Hi,
>>>>>
>>>>> How can one coerce spatial point to spatial line?
>>>>>
>>>>> I'm struggling to find a way of coerce a point SPDF object to Lines
>>>>> based in a ID [TARGET_ID] field.
>>>>>
>>>>> Any idea will be very welcome.
>>>>>
>>>>> Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
>>>>>   ..@ data       :'data.frame': 28 obs. of  8 variables:
>>>>>   .. ..$ ID        : int [1:28] 462964 462990 463015 463034 463052 463069
>>>>> 463083 463102 463122 463144 ...
>>>>>   .. ..$ TIME_STAMP: POSIXlt[1:28], format: "2009-07-26 09:00:07"
>>>>> "2009-07-26 09:00:13" "2009-07-26 09:00:19" "2009-07-26 09:00:25" ...
>>>>>   .. ..$ DAY_PERIOD: int [1:28] 1 1 1 1 1 1 1 1 1 1 ...
>>>>>   .. ..$ SEASON    : int [1:28] 2 2 2 2 2 2 2 2 2 2 ...
>>>>>   .. ..$ TARGET_ID : int [1:28] 108426 108426 108426 108426 108426 108426
>>>>> 108426 108426 108426 108426 ...
>>>>>   .. ..$ SPEED     : num [1:28] 0.283 0.6 0.4 0.2 0.2 ...
>>>>>   .. ..$ HEADING   : int [1:28] 134 1 179 179 179 271 123 179 179 90 ...
>>>>>   .. ..$ DISTANCE  : num [1:28] 1.41 3 2 1 1 ...
>>>>>   ..@ coords.nrs : int [1:2] 7 6
>>>>>   ..@ coords     : num [1:28, 1:2] -8.71 -8.71 -8.71 -8.71 -8.71 ...
>>>>>   .. ..- attr(*, "dimnames")=List of 2
>>>>>   .. .. ..$ : NULL
>>>>>   .. .. ..$ : chr [1:2] "LONGITUDE" "LATITUDE"
>>>>>   ..@ bbox       : num [1:2, 1:2] -8.82 38.73 -8.69 38.8
>>>>>   .. ..- attr(*, "dimnames")=List of 2
>>>>>   .. .. ..$ : chr [1:2] "LONGITUDE" "LATITUDE"
>>>>>   .. .. ..$ : chr [1:2] "min" "max"
>>>>>   ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
>>>>>   .. .. ..@ projargs: chr " +init=epsg:4326 +proj=longlat +ellps=WGS84
>>>>> +datum=WGS84 +no_defs +towgs84=0,0,0"
>>>>>
>>>>>
>>>>> Paulo Eduardo Cardoso
>>>>>
>>>>> _______________________________________________
>>>>> R-sig-Geo mailing list
>>>>> R-sig-Geo at stat.math.ethz.ch
>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>> --
>>>> Edzer Pebesma
>>>> Institute for Geoinformatics (ifgi), University of Münster
>>>> Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
>>>> 8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
>>>> http://www.52north.org/geostatistics      e.pebesma at wwu.de
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> R-sig-Geo at stat.math.ethz.ch
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>
>>

-- 
Edzer Pebesma
Institute for Geoinformatics (ifgi), University of Münster
Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
http://www.52north.org/geostatistics      e.pebesma at wwu.de



More information about the R-sig-Geo mailing list