Общая цель этого кода - генерировать случайные точки в кольцевом буфере, основываясь на одной точке широты / долготы, которую я буду вводить по мере необходимости. Моя очевидная проблема заключается в том, что буфер, сгенерированный из gBuffer
, имеет неправильный размер / местоположение, и, следовательно, точки находятся дальше, чем нужно от местоположения ввода.
Я пытаюсь создать 130-метровый буфер вокруг точки. Для создания своего кода я использовал 44.55555, -68.55555
. Я использую десятичные градусы широта / долгота, так как это то, что мои данные.
Я пробовал несколько потоков stackoverflow, чтобы найти ответ, в том числе:
Буферные (гео) пространственные точки в R с помощью gbuffer
Создание буфера и подсчет точек в R
#Enter in the lat and Long
NestLat <- readline(prompt="Enter Nest Latitude:") #Use 44.55555
NestLong <- readline(prompt="Enter Nest Longitude:") #Use -68.55555
#Coordinate from text to spatial points
NestLat <- as.numeric(NestLat)
NestLong <- as.numeric(NestLong)
nestcoords <- cbind(NestLat, NestLong)
nestcoords_sp <- SpatialPoints(nestcoords, proj4string=CRS("+proj=longlat +datum=WGS84"))
nestcoords_sp <- spTransform(nestcoords_sp, CRS("+init=epsg:2960"))
#Create buffer to generate 3 random points within 130m of nest
nestbuffer130 <- gBuffer(nestcoords_sp, width = 130)
nestbuffer130 <- spTransform(nestbuffer130, CRS("+proj=longlat +datum=WGS84"))
randoms130 <- spsample(nestbuffer130, 3, type = "random")
randoms130 <- spTransform(randoms130, CRS("+proj=longlat +datum=WGS84"))
nestbuffer130spdf <- as(nestbuffer130, "SpatialPolygonsDataFrame")
randoms130 <- as(randoms130, "SpatialPointsDataFrame")
Последний буфер выглядит как круг с радиусом 335 и не помещается в правильном месте пространственно.