[tlocoh-info] tlocoh area covered and metrics

Andy Lyons lyons.andy at gmail.com
Fri Apr 18 10:54:09 CEST 2014


Hi Laurie,

Thanks for your question, and sorry for the delay getting back to you, I 
was traveling. Below are some answers to your questions. If you have any 
other questions or problems please let me know.

Best,

Andy


On 4/13/2014 7:00 AM, Laurie Baker wrote:
> Hello List,
>
> I am using T-LoCoH to study the area surveyed by grey seals carrying acoustic tags and am interested in looking at this effort in space and time. I am looking at individual effort and also the area covered by multiple seals at the same time.
>
> My questions are two-fold:
> 1. How to extract the total area and hull area for these tracks?

I presume by 'tracks' you mean the locations for different individuals. 
To begin with remember that T-LoCoH generates two types of geometric 
objects - little hulls around each and every point, and isopleths which 
are constructed by unioning the little hulls together. By convention, 
the 95% isopleth is commonly labeled the 'home range', and the 50% 
isopleth is labeled the 'core'.

Hulls and isopleths are both saved in a Locoh-hullset object as 
SpatialPolygonDataFrames (a common R data class for polygons objects). 
The hulls are saved in the $hulls element of a Locoh-hullset, and the 
isopleths are saved in the $isos element. A full description of these 
data classes was added to the tlocoh R package as a vignette (pdf) in 
version 1.15.

You can dig down in the data structure to get the areas, or you can use 
the hulls() function to 'extract' just the hulls from a Locoh-hullset 
object. More specifically, hulls() will return a list of 
SpatialPolygonDataFrame objects, with one element for each set of hulls 
in the Locoh-hullset object. There is a column in the SPDF attribute 
table for hull area (as well as all the other hull metrics). You can get 
the attribute table of a SpatialPolygonsDataFrame object by referencing 
the data slot with the @ character.

 > x <- hulls(lhs_ag214)
 > class(x)
[1] "list"
 > head(x[[1]]@data)
    ptid pts.idx nnn     area    perim tspan  nep scg.enc.mean 
scg.enc.sd scg.nn.mean scg.nn.sd nsv.86400 mnlv.86400
1 65072       1   4  63247.5 2959.663     6  154 0.07744    0.07843     
0.11870   0.07976        45   3.422222
2 65073       2   6 118709.0 3395.027    34  992 0.04382    0.05369     
0.08671   0.07203        30  33.066667
3 65074       3   6 118709.0 3395.027    34  992 0.04382    0.05369     
0.08671   0.07203        30  33.066667
4 65075       4   7 101100.5 1908.537    30 1868 0.03930    0.05101     
0.06450   0.07096        33  56.606061
5 65076       5   8 116363.0 1732.254    20  376 0.04819    0.07690     
0.06205   0.05860        44   8.545455
6 65077       6   9 146726.5 1914.184    18  204 0.06352    0.09957     
0.05694   0.05586        31   6.580645


The attribute table for the isopleths SpatialPolygonstDataFrame also 
stores isopleth area (in map units). The isopleths() function operates 
similarly to the hulls() function - it returns a list of 
SpatialPolygonDataFrames, with one element for each set of isopleths.

 > x <- isopleths(lhs_ag214)
 > length(x)
[1] 1
 > x[[1]]@data
   iso.level       area  edge.len   nep       ptp hm.val num.hulls
1      0.15   686474.0  3431.878  3448 0.3221828 3448         1
2      0.25   686474.0  3431.878  3448 0.3221828 3448         1
3      0.35   779772.5  3877.031  4053 0.3787143 2776         6
4      0.45  1209995.2  5700.026  4880 0.4559895 2438        22
5      0.55  1774914.3  8034.811  5908 0.5520463 1123      1634
6      0.65  3478783.5 11015.241  6957 0.6500654 501      3248
7      0.75  5766729.3 15549.578  8067 0.7537843 285      4353
8      0.85  9178557.4 27815.017  9160 0.8559148 92      6750
9      0.95 18612464.6 49049.453 10167 0.9500093 26      9360
 >

You can also view the area of each isopleth in R by using the 
iso.details=T argument in the summary function:

 > summary(lhs_ag214, *iso.details=T*)
Loading required package: sp
Summary of LoCoH-hullset object: lhs_ag214
T-LoCoH version: 1.0.3
[1] ag214.pts10702.a3700.s0.01.kmin0
       id: ag214
      pts: 10702
    dates: 2009-09-02 13:00:00 GMT to 2010-04-14 13:00:00 GMT
movement: tau=1800 (30min), vmax=1.160352, d.bar=57.34979
    hulls: 10702
     dups: 205 (offset by 1 map unit)
     mode: a=3700, kmin=0, s=0.01
  metrics: area, mnlv.86400, nep, nnn, nsv.86400, perim, scg.enc.mean, 
scg.enc.sd, scg.nn.mean,
           scg.nn.sd, tspan
     hmap: ivg (86400)
     isos: [1] iso.srt-nep.iso-q.h10702.i9
*iso.level       area  edge.len nep       ptp hm.val num.hulls**
**                   0.15   686474.0  3431.878  3448 0.3221828   
3448         1**
**                   0.25   686474.0  3431.878  3448 0.3221828   
3448         1**
**                   0.35   779772.5  3877.031  4053 0.3787143   
2776         6**
**                   0.45  1209995.2  5700.026  4880 0.4559895   
2438        22**
**                   0.55  1774914.3  8034.811  5908 0.5520463   
1123      1634**
**                   0.65  3478783.5 11015.241  6957 0.6500654    
501      3248**
**                   0.75  5766729.3 15549.578  8067 0.7537843    
285      4353**
**                   0.85  9178557.4 27815.017  9160 0.8559148     
92      6750**
**                   0.95 18612464.6 49049.453 10167 0.9500093     
26      9360*
    other: -none-



> 2. How you might be able to illustrate and quantify the area overlapped by individual seals in space, and in time (i.e. area covered by seals at the same time) using this tool?

One way you can do this would involve:

1) Decide which isopleth you want to use to represent the area of used 
by an individual. As noted earlier, the 95% and 50% are common 
standards, but there are others.

2) Pull out those isopleths for each individual

3) Take the intersection of pairs of isopleths using a function from the 
rgeos package, and compute the area.

There are other more nuanced ways to measure the overlap in space use in 
two individuals, but the above process should get you started. A script 
that illustrates how do to the above can be found at:

http://nature.berkeley.edu/~ajlyons/tlocoh/isopleth_overlap_exericse.txt
<http://nature.berkeley.edu/%7Eajlyons/tlocoh/isopleth_overlap_exericse.txt>or
http://tlocoh.r-forge.r-project.org/isopleth_overlap_exericse.txt 
<http://tlocoh.r-forge.r-project.org/isopleth_overlap_exericse.R>

If you want to quantify the area of overlap between seals at the exact 
same time, or for example within the same 24 hour period, we should talk 
some more about that. There are some association hull metrics that are 
still under development that do something similar to that.

> Question 1:
>
> I think I have identified where I can find this information from the object generated in the toni example, toni.lhs.k15:
>
> names(toni.lhs.k15[[1]])
> #[1] "id"        "pts"       "anv"       "rw.params" "mode"      "k"         "r"
> #[8] "a"         "auto.a"    "s"         "kmin"      "dups"      "desc"      "hulls"
> #[15] "hm"        "enc.pts"   "hm.params" "gen.date"  "isos"
>
> Is the information stored in "hulls" or "isos"?  Is there a way to extract this information one hull at a time? The command toni.lhs.k15[[1]]$hulls floods the console and I am not able to view it in its entirety.
>
> Question 2:
>
> I tried analyzing all tracks and not including seal id to distinguish different tracks, but this is a problem given that certain time stamps are the same. Is there a way to overlay the area covered by individuals and match this to time?

I don't fully understand this question. Could you provide some more detail?

>
> Cheers,
>
>
> Laurie
>
>
>
>
>
>
>
> _______________________________________________
> Tlocoh-info mailing list
> Tlocoh-info at lists.r-forge.r-project.org
> http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/tlocoh-info/attachments/20140418/cfcccd8b/attachment-0001.html>


More information about the Tlocoh-info mailing list