[R-sig-Geo] shortestPath in a loop

Eric Carr carr at nimbios.org
Thu Jan 12 22:03:48 CET 2017


Generically independent of R, A graph and the connectivity between points
needs defined before a shortest path algorithm can be applied.  If it
assumes all points are connected, than the shortest path will be a straight
line.  What you are looking for is some sort of  minimum spanning tree for
the vertices.
Eric

On Thu, Jan 12, 2017 at 11:17 AM, marta azores <martazores at gmail.com> wrote:

> Dear forum members,
>
> I would like to know how join several points with the aim to track a ship.
>
> After reading the documentation of some packages, I decided to use the
> function shortestPath, but I only got the line between the first and the
> last location of my points list. I need the complete survey, including also
> the middle points. I try a loop to build the survey of the boats using
> their locations, but It didn't work to me.
>
>
> Any idea?
>
> Thanks in advance,
>
> Marta
>
> #script# it's also attached in a R.file: question loop2.R
> ##########################################################
> #
> #raster# it's attached
> azoTS1<- raster("C:/Users/Documents/azoTS1.tif")#wgs84
> #
> #10 points# it's attached
> boat <- read.table("C:/Users/Documents/10pontos.csv", header=TRUE,
> sep=",", na.strings="NA", dec=".", strip.white=TRUE)#
> head(boat)
>
> #raster to transitionlayer
> trCostS4<- transition(1/azoTS1, mean, directions=4)
>
> # points to spatialpointsdataframe
> x=boat$Long1
> y=boat$Lat1
> coords = cbind(x, y)
> plot(coords)
> sp = SpatialPoints(coords, proj4string=CRS("+proj=longlat +ellps=WGS84
> +datum=WGS84"), bbox = NULL)
> sp
> spdf=SpatialPointsDataFrame(sp,boat)
> spdf
> nrow(spdf)
> plot(sp,axes=TRUE)
> plot(spdf,add=TRUE, axes=TRUE)
>
> #shortestpath
>
> ## 1) this script only join the first point of the list and the last one,
> and the points in the middle are not used.
> CostpathSPdf <- shortestPath(trCostS4, spdf[1,], spdf[10,],
> output="SpatialLines")
> plot(CostpathSPdf,add=TRUE,axes=TRUE,col=2)#R_plot1.png (it's attached)
>
> ## 2) this script didn't work to me
>
> #first way from website: http://stackoverflow.com/
> questions/8127066/loop-or-sapply-function-for-multiple-
> least-cost-analysis-in-r?answertab=active#tab-top
> for(i in 1:nrow(spdf)) {
>   # Computation
>   Costpath <- shortestPath(trCostS4, spdf[i,], spdf[10,],
> output="SpatialLines")
>   plot(Costpath)
>
> }
>
> #Error in validObject(.Object) :
> #invalid class “SpatialLines” object: bbox should never contain infinite
> values
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list