Как буферизовать линию с разными расстояниями для левой / правой сторон


14

Как я могу буферизовать строку в QGIS, используя один атрибут для левой стороны строки и один атрибут для правой стороны строки? Я пытаюсь буферизовать реку с шириной берега, которая отличается на правой и левой стороне.


Вы пытались использовать буфер JTS из QGIS? lin-ear-th-inking.blogspot.it/2010/11/…
julien

Ответы:


8

Определение стороны линии довольно прямолинейно на ориентируемой поверхности , которой является двумерная плоскость в ГИС. Если вы определяете начальную точку и конечную точку для линии, вы можете однозначно определить «левую» и «правую» стороны. Это так, даже если линия пересекает себя.

С более практической точки зрения, простой рабочий процесс для создания одностороннего буфера включает в себя стандартный буфер, разностную операцию, а затем операцию отсечения. Вот пример.

Начните с создания многоугольника, который включает или точно перекрывает вашу линию. Чтобы буфер находился справа от вашей линии, внутренняя часть многоугольника должна быть слева. Обратите внимание, что если ваша линия пересекается сама по себе, это не будет работать так, как вам нужно, и вам может понадобиться нарисовать многоугольник так, чтобы он не пересекал саму себя или вашу линию. Примените операцию буфера к этому многоугольнику. С помощью плагина fTools перейдите в Инструменты геообработки> Буфер.

многоугольник

Используя разностную операцию, Инструменты геообработки> Разница, с буфером в качестве входного слоя и исходным полигоном в качестве разностного слоя, вырежьте внутреннюю часть. Теперь у вас есть правый буфер.

Буферный полигон

Осталось только обрезать «лишнюю» часть многоугольника. Инструменты геообработки> Клип.

Клип многоугольника Финальная линия


1

Это очень интересный вопрос, который я считаю не тривиальным. Я натолкнулся на скрипт для ArcMap, который предоставляет очень хорошо документированное решение, охватывающее 500 строк VB-кода. Однако я не знаю эквивалентного скрипта или модуля в QGIS.

Одним из ключевых соображений в асимметричном буфере будет направление потока линии, чтобы вы могли определить левую и правую стороны. В случае рек это должно быть легко подсчитать, если у вас есть соответствующая ЦМР.

Может быть возможно построить сценарий qgis вокруг логики этого сценария, но это потребует огромного количества работы.


1
В ArcMap этого очень легко достичь. В диалоговом окне инструмента у вас есть параметр, Side Typeкоторый может быть левым или правым. И у вас есть параметр Field. Сценарии этого инструмента позволяют использовать разные значения для обоих. Я только недавно сделал это (см. Мой вопрос здесь )
LarsVegas
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.