-----Original Message-----
From: r-sig-geo-bounces at r-project.org [mailto:r-sig-geo-bounces at r-
project.org] On Behalf Of St John Brown
Sent: 27. oktober 2014 15:50
To: r-sig-geo at r-project.org
Subject: [R-sig-Geo] Calculate the length of hail paths
Hello,
I am trying to calculate the the length of the trajectory of historic hail storms
in the United States. I have written the R code to do this but my results do
not seem valid. The majority of my results are around 14 meters which does
not seem correct.
My data comes from the NOAA in the form of a shape file (hail.zip) [1]. When
I read the shape file I have an object of class SpatialLinesDataframe. The
individual lines represent the paths of the historic hail storms.
Below I have created an example SpatialLines object with lines from the
original data and my method for calculating the path length. As you can see
the results are around 14 meters. Am I calculating the distances correctly?
I appreciate any help!
[1] http://www.spc.noaa.gov/gis/svrgis/
library(sp)
library(geosphere)
#create example SpatialLines obj
myLines1 = Lines(list(Line(matrix(c(-519049.1, -519039.1, -736427.4, -
736417.4), nrow=2, ncol=2))), ID="1")
myLines2 = Lines(list(Line(matrix(c(527165, 527175, 261338.5, 261348.5),
nrow=2, ncol=2))), ID="2")
proj_str_lcc = CRS("+proj=lcc +lat_1=33 +lat_2=45 +lat_0=39 +lon_0=-96
+x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80
+towgs84=0,0,0")
mySpLines = SpatialLines(list(myLines1,myLines2), proj4string=proj_str_lcc)
#calculate distance of line paths
proj.str.alb = CRS("+proj=longlat +datum=WGS84")
mySpLines_alb = spTransform(mySpLines, CRS=proj.str.alb)
res = lapply(slot(mySpLines_alb, "lines"), function(x) lapply(slot(x,
"Lines"),function(y) slot(y, "coords")))
f = function(i){
end_pnts = unlist(res[i],use.names = F)
p1 = end_pnts[c(1,3)]
p2 = end_pnts[c(2,4)]
return(distCosine(p1,p2)) #meters
}
d = sapply(1:length(res), FUN=f)
[1] 14.14557 14.21278 #meters