Создание параллельных линий на определенном расстоянии от линий, которые являются частью шейп-файла

11

Я использую QGIS 2.18. У меня есть шейп-файл, который содержит несколько строк. После обработки определенных данных мне нужно провести параллельные линии на разных расстояниях от существующих линий. Например, у меня есть 32 строки в существующем шейп-файле. Я хочу провести параллельные линии на расстоянии 50, 100, 170, 500,400 от номера ID линии. 3, 6,20,25,31 за один раз. Есть ли какой-либо метод или плагин в QGIS для того же?

Jitendra
источник

Ответы:

6

Вы можете использовать плагин QAD , который предлагает CAD-подобные команды в QGIS.

Он работает только с проектированными системами координат (поэтому вам необходимо спроецировать ваши данные перед их использованием) и с включенным режимом редактирования (щелкните правой кнопкой мыши на слое и выберите Toggle Editing).

Для вашего случая вам нужно нажать на кнопку « Смещение» :

введите описание изображения здесь

и следуйте инструкциям, которые появятся в текстовом окне QAD (точно так же, как в AutoCAD):

введите описание изображения здесь

Например, это вывод при использовании другого смещения для двух разных функций:

введите описание изображения здесь

МГРИ
источник
Спасибо за ответ. Есть ли другой метод или плагин для выполнения этой задачи без проецирования данных?
Джитендра
Я использовал подход с проецируемыми данными, поскольку казалось, что вы имеете дело с метрами ( расстояния 50, 100, 170, 500,400 ... ). Изменить проекцию очень просто: щелкните правой кнопкой мыши на слое, а затем Save asи, наконец, выберите Projected Coordinate System. Как только вы выполнили смещение, вы можете вернуться к географической системе координат с обратной операцией ... Это должно быть правильно.
МГРИТЕ
Без проецирования данных вам нужно иметь дело с углами, а не с метрами, и я не знаю, станет ли вам легче ...
mgri
Инструмент QAD работает нормально. Но я должен повторить задачу для всех линий в шейп-файле вручную. Существует ли какой-либо метод для автоматического считывания line_ID и расстояния до строки, считываемой из таблицы атрибутов, exel или CSV-файла и одновременного рисования всех параллельных линий.
Джитендра
Я не знаю инструмента, который выполняет эту задачу, но я могу попытаться дать решение, используя PyQGIS ... Может ли оно вас заинтересовать?
17
6

Если в вашей таблице атрибутов есть столбец, в котором указано расстояние между параллельными линиями, то следующий метод сможет сделать это за один раз:

Вы можете использовать Single sided buffers (and offset lines) for linesалгоритм GDAL/OGR > [OGR] Geoprocessingв панели инструментов Обработка. Вам нужно будет установить операцию как кривую смещения и ввести имя столбца, содержащего расстояние в буферном расстоянии (в моем случае имя столбца - ширина ). Также вы можете установить, на какой стороне линии должна быть проведена параллельная линия, выбрав сторону буфера справа или слева.

введите описание изображения здесь

Нэш
источник
Спасибо за ответ. Я использую инструмент OGR согласно вашему предложению, но ничего не было показано в новом выходном шейп-файле.
Джитендра
Можете ли вы поделиться системой проекции, в которой находится ваш файл формы? Скриншоты таблицы атрибутов выходного слоя могут быть полезны.
Нэш
Система проекции шейп-файла - EPSG 4326
Jitendra
Итак, вы понимаете, что новые линии создаются на расстоянии 50 100 170 500 и 400, что в единицах градусов, а не в метрах (что, я полагаю, вы хотите?)
nash
Предполагая, что вам нужно расстояние в метрах - вам нужно будет преобразовать шейп-файл в систему проекции с единицами измерения в метрах (например, систему проекции UTM соответствующей зоны). Затем запустите алгоритм.
Нэш
6

Вы можете использовать «v.parallel», вы можете найти этот инструмент в наборе инструментов обработки QGIS.

  1. Выберите строку с идентификатором линии №. 3, 6,20,25,31 Выберите строки

  2. Используйте «v.parallel», создайте параллельную линию из выбранных линий. Но вы должны сделать это несколько раз, чтобы получить разные расстояния смещения (50, 100, 170, 500,400). Есть опция «Боковые», вы можете назначить расположение параллельных линий. "V.parallel"

  3. Результат: параллельные линии (синего цвета) слева от выбранных линий результат
Cy T
источник
Спасибо Cy Y за ответ. Я использовал команду v.parallel, но ничего не было показано в новом выходном шейп-файле.
Джитендра
1
p / s: команда "v.parallel" работает только с изогнутыми линиями, она не может работать с прямыми линиями, которые имеют только две линейные вершины.
Cy T