Для данного Пространственного объекта в R, как я могу обрезать все его элементы, чтобы они лежали внутри ограничительной рамки?
Я хотел бы сделать две вещи (в идеале я бы знал, как сделать обе, но любая из них является приемлемым решением моей текущей проблемы - ограничение шейп-файла полигона для континентальной части США).
Удалите каждый элемент не полностью в пределах ограничительной рамки. Это кажется
bbox()<-
логичным, но такого метода не существует.Выполните настоящую операцию обрезки, чтобы на границе были обрезаны элементы, не являющиеся бесконечно малыми (например, многоугольники, линии) .
sp::bbox
отсутствует метод присваивания, поэтому единственный способ, которым я придумал, - это использоватьover
илиgContains
/gCrosses
в сочетании с объектом SpatialPolygons, содержащим прямоугольник с координатами нового ограничивающего прямоугольника. Затем при обрезке объекта многоугольника вы должны выяснить, какие из них содержатся в сравнении с крестом, и изменить координаты этих многоугольников, чтобы они не превышали рамки. Или что-то вродеgIntersection
. Но наверняка есть более простой способ?
Хотя я знаю, что существует много проблем с ограничивающими прямоугольниками и что пространственное наложение на многоугольник, определяющий интересующую область, обычно предпочтительнее, во многих ситуациях ограничивающие прямоугольники работают нормально и проще.
gIntersection
и придумал Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") : TopologyException: no outgoing dirEdge found at 3 2.5
Нет времени для отладки сегодня; написал небрежную версию и исправлю в будущем.