Я переключился с пакета sp
на sf
для многих своих гео-вещей в R
, и только сейчас я заметил странное поведение в sp
/ rgeos
. Вот оно:
library(sp)
library(sf)
library(rgeos)
# crs
WGS84M = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"
# a point
point = data.frame(x = 0, y = 0)
# simple feature from point
f.point = st_as_sf(point, coords = c('x', 'y'))
st_crs(f.point) = WGS84M
f.buf = st_geometry(st_buffer(f.point, dist = 5 * 1000))
# spatial object from point
s.point = SpatialPoints(point, proj4string = CRS(WGS84M))
s.buf = gBuffer(s.point, width = 5 * 1000)
plot(s.buf, border = "blue")
plot(f.buf, border = "red", add = T)
Я получаю это:
Возможно, разрешение загруженного мной изображения не велико, но суть здесь в том, что есть красный круг, а некруглый (я пытался сосчитать стороны, кажется, 20-гоновый) синим цветом. Если вы конвертируете объект sf
в sp
, вы все равно получите круг, а если вы конвертируете объект sp
в sf
, вы все равно получите 20-гон (так что это не просто разница, скажем,, в методах построения графика).
Я ожидал gBuffer()
вокруг точки, чтобы вернуть круг. Есть ли причина, по которой я не должен этого ожидать? Кто-нибудь может объяснить, что происходит?