wires: WIRES (wide-ranging exploratory survey)

Description Usage Arguments Value Note Author(s) References Examples

View source: R/wires.R


This function is the implementation of the WIRES algorithm as described in Stockmann et al. (2015). WIRES stands for Wide-ranging exploratory survey. The algorithm was designed for the purposes of regional scale proximal sensing (soil, geophysical etc.) surveys where aerial survey is prohibitive. Due to the regional extent of survey, tightly-spaced drive lines is also prohibitive. The idea is to first place sampling points throughout the survey area using an established sampling design. Then transects are establshed sequentially by selecting a point at random then connecting it, and to the subsequent points until the transect terminates at the peripheral of a given survey area. With a user-defined number of transects (not greater than the number of sampling points), the effect will be for the study area, an arrangment of transects (wires), meandering and interesecting throughout.


wires(points, bb, nos.transects)



dataframe; the first two columns of which are the coordinate locations of the sampling points.


matrix; specifically a 4 x 2 matrix with each row indicating a coordinate pair of the bounding box of the survey area for which the survey is to be completed. Must bound completely the sample points.


numeric; the number of transects that are needed. Number of transects can not be greater than the number of sampling points.


A new folder is created in the working directory called wireOuts and will contain the following outputs:

  1. A shapefile of a Delaunay triangualtion made from the given sample points called "sampleTriangulation.shp"

  2. Shapefile objects in both point and line format of each created transect. For example "transect_1_LINE.shp" and "transect_1_POINT.shp" are the line and point shapefile objects of the first created transect.

  3. A text file summarising the length of each transect called "TransectDistances.txt"


The WIRES algorithm follows the general format:

  1. Make a configuration of x number of points across the land area to be surveyed. The selection of points could follow any type of sample design. For example, simple random or stratified simple random designs, or even conditioned Latin Hypercube sampling etc.

  2. Form a Delaunay triangulation of these points.

  3. Select a point at random without replacement. Call this point A. Points on the convex hull of the configuration are however not permitted to be sampled, as these form the termination sites of a formed transect.

  4. Determine the nearest point to A. Call the nearest point B.

  5. Form a triangle ABC with the immediate neighbouring points of B.

  6. Point C is the neighbouring point of B which maximises the angle at B. The angles are measured using measured distances and cosine rules.

  7. Transect segment is drawn following the triangulation lines from point A, through B, to point C. Point B is now labelled new point A, and point C is now labelled new point B.

  8. Go back to step 5, and repeat until point C becomes one of the termination sites, which marks the end of a transect.

  9. Go back to step 3 to generate more transects.

There is a maximum to how many transects can be created for a given number of point locations. This number is generally the number of sampling points minus the number of convex hull points. The fuction will give warning if too manny transects have been requested. After all transects have been formed, a filtering step is performed to remove redundant transect (those which are exactly similar to another transect). Subsequently the final number of transects created may not equal the number requested. This is not a problem however becasue in practice, only a selection of the generated transects may be used anyhows.


Brendan Malone




#random points

#bounding box
bb<- bbRaster(hvGrid25m)

#wires algorithm
wires(points = hvPoints250, bb = bb, nos.transects=10)

ithir documentation built on May 2, 2019, 4:49 p.m.

Related to wires in ithir...