Для данного Пространственного объекта в 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 Нет времени для отладки сегодня; написал небрежную версию и исправлю в будущем.
