st_difference к каждой функции в объекте sf - PullRequest
0 голосов
/ 19 февраля 2019

Данные доступны здесь

У меня есть 2 больших объекта SF.Один - это многоугольный объект SF с буферизованными точками, а другой - линейный объект SF.Я хотел бы отличить объект линии, используя объект многоугольника, следующим образом:

library(sf)

geopackage = 'differenceBIG.gpkg'

lines <- st_read(geopackage , layer = "lines")
points <- st_read(geopackage , layer = "points")

poly <- st_buffer(points, dist = 0.001)

differenced <- st_difference(lines, poly)

Это займет более 3 дней (я перестал ждать);не достаточно хорош.Есть ли способ отличить эти большие объекты в гораздо более короткие сроки?Я использую ПК с процессором i7-6700 @ 3,4 ГГц и 32 ГБ оперативной памяти.

Обновление : Оказывается, st_difference отличается от разницы в QGIS.Я нашел следующее в документе sf.pdf

# A helper function that erases all of y from x: 
st_erase = function(x, y) st_difference(x, st_union(st_combine(y)))

differenced <- st_erase(lines, poly)
...