[R-sig-Geo] Randomly moving a locality (within set limits)

Robert J. Hijmans r.hijmans at gmail.com
Sun Aug 31 07:20:31 CEST 2014


I think this is implemented as the destPoint function in the geosphere
package. Robert

On Mon, Aug 25, 2014 at 1:26 AM, Frede Aakmann Tøgersen
<frtog at vestas.com> wrote:
>
> Hi
>
> The following is based on http://www.movable-type.co.uk/scripts/latlong.html.
>
> foo <- function(origin, bearing, distance){
>     ## origin (lat, lon) is the point to randomly move
>     ## bearing (in degrees) is the direction in which to move
>     ## the distance to move origin
>
>     R = 6378.1 #Radius of the Earth in km
>
>     bearing <- bearing/180 * pi
>
>     lat1 = origin[1]/180 * pi #Current lat point converted to radians
>     lon1 = origin[2]/180 * pi  #Current long point converted to radians
>
>     lat2 = asin( sin(lat1)*cos(distance/R) +
>         cos(lat1)*sin(distance/R)*cos(bearing))
>
>     lon2 = lon1 + atan2(sin(bearing)*sin(distance/R)*cos(lat1),
>         cos(distance/R)-sin(lat1)*sin(lat2))
>
>     ## destination in degrees decimal
>     destination <- c(Latitude = lat2/pi*180, Longitude = lon2/pi*180)
>
>     return(destination)
> }
>
>> foo(c(52.20472, 0.14056), 90, 15)
>   Latitude  Longitude
> 52.2045157  0.3604334
>>
>
> Now choose
>
> bearing <- runif(1, 0, 360)
>
> and
>
> distance <- runif(1, 0, 15)
>
> Please check the formulas against the homepage above.
>
> Yours sincerely / Med venlig hilsen
>
>
> Frede Aakmann Tøgersen
> Specialist, M.Sc., Ph.D.
> Plant Performance & Modeling
>
> Technology & Service Solutions
> T +45 9730 5135
> M +45 2547 6050
> frtog at vestas.com
> http://www.vestas.com
>
> Company reg. name: Vestas Wind Systems A/S
> This e-mail is subject to our e-mail disclaimer statement.
> Please refer to www.vestas.com/legal/notice
> If you have received this e-mail in error please contact the sender.
>
>
>> -----Original Message-----
>> From: r-sig-geo-bounces at r-project.org [mailto:r-sig-geo-bounces at r-
>> project.org] On Behalf Of Alastair Potts
>> Sent: 22. august 2014 13:13
>> To: r-sig-geo at r-project.org
>> Subject: [R-sig-Geo] Randomly moving a locality (within set limits)
>>
>> Hi all,
>>
>> I was wondering if someone could help point me in the right direction here
>> - I can't seem to find a function or post that focuses on this.
>>
>> I have localities around the world. I want to be able to randomly move a
>> given locality within a set radius (defined by km). So, I have a point at
>> xy and want it to be shifted to some other locality within, say, 15 km of
>> of its current locality.
>>
>> This is simple enough using something like runif(1,-15,15), but it's the
>> lat-long conversion that is confusing me (how to work out how many decimal
>> degrees this might be around the point at different global localities).
>>
>> Any help or pointers would be greatly appreciated.
>>
>> Thanks in advance,
>>
>> Cheers,
>> Alastair
>>
>>       [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list