Есть ли способ отрисовки линий с гладкими (безными) кривыми в QGIS?

33

Я перехожу от создания карт в Illustrator к созданию их с помощью QGIS и реальных данных. Одна из вещей, которую я не смог воссоздать в QGIS, - это плавные изогнутые линии, которые я могу получить в Illustrator. Я не говорю о стилях Join и Cap, но о том, как отображается вся строка.

Я ищу ответ, который не включает в себя экспорт как SVG в Illustrator и завершение карты там.

Кроме того, я понимаю, что их можно считать неточным представлением, но по большей части эти карты служат для того, чтобы дать гонщикам представление о том, где они находятся, и не обязательно должны быть точным представлением.

Вот пример того, что я имею в виду: введите описание изображения здесь

Брайан Келли
источник
2
Как хранятся ваши данные? Большинство форматов данных (например, шейп-файл) не допускают дуг. Я верю, что некоторые базы данных теперь делают, хотя.
Даррен Коуп

Ответы:

24

Проверьте плагин Generalizer, он должен делать то, что вы хотите. Плагин имеет опции сглаживания, которые работают довольно хорошо.

Это не меняет способ визуализации ваших линий, но создает новый шейп-файл с применением сглаживания (или упрощения / обобщения).

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

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

Натан У
источник
Я не могу найти этот плагин для QGIS 1.7.3, хотя у меня включены сторонние репозитории. Можете показать как включить / найти? Выглядит интересно и понятно.
SaultDon
3
Странный. Он должен быть в установщике плагина, так как он идет из основного репозитория плагина QGIS.
Натан W
3
Вы правы, но из установщика плагинов Python мне пришлось перейти на вкладку параметров и изменить «Разрешенные плагины» на: «Показать все плагины, даже помеченные как экспериментальные».
SaultDon
Сегодня вечером я немного поиграл с этим плагином, и он действительно работал лучше для меня, так как мне не нужно было использовать слой GRASS и я мог просто конвертировать мой текущий шейп-файл.
Брайан Келли
Мне пришлось сделать это в два этапа для моей очень подробной, но зубчатой ​​оцифровки: сначала упрощение (например, алгоритм Ланга), а затем сглаживание. Работал лакомство
другой бен
16

Используя плагин QGIS + GRASS:

Добавьте панель инструментов Grass из окна «Управление плагинами». добавить плагин для инструментов травы в qgis

Ваши линии должны быть вектором травы, поэтому конвертируйте их в новый или существующий набор карт GRASS.

На панели инструментов GRASS выберите Инструменты GRASS ... введите описание изображения здесь

Ищите модуль: v.generalize ( учебник WIKI здесь )

Затем вы можете выбрать несколько различных обобщающих алгоритмов: Инструмент GRASS v. Обобщает выбор алгоритмов

Обратите внимание на алгоритмы: Chaiken, Hermite или даже скользящее среднее. Также есть несколько других!

Различия можно увидеть в картинках вики: пример упрощения различий

из Wiki: «Обратите внимание, что разница между« Chaiken »и« Hermite »заключается в том, что линии, производимые« Chaiken »,« вписывают »оригинальные линии, тогда как« Hermite »линии« описывают »исходные линии, как можно видеть на изображение [выше]. (Черная линия - оригинальная линия, зеленая линия - «Чайкен», а синяя - «Эрмит»)


Используя uDig + jgrasstools или grass:

Если вам сложно получить желаемый результат от vgeneralize от GRASS, попробуйте последнюю версию uDig с jgrasstools . Вы также можете взять траву из того же места, что и jgrasstools.

После установки и запуска uDig включите Spatial Toolbox : Window> Show View> Other ... включить пространственный набор инструментов в uDig

Снимите панель инструментов для удобства чтения (щелкните правой кнопкой мыши вкладку Spatial Toolbox> Detach ...): отсоединение пространственного набора инструментов в uDig

Загрузите необходимые модули jgrasstools и grass (опционально): загрузка jgrasstools / травы в Удиг

Не забудьте установить параметры травы (указать исполняемый файл grass или файл bat в windows, или команду grass в linux, например, / usr / bin / grass), если вы также загрузите jar-файл grass: установка параметров травы в uDig

В заключение! Используя инструменты из jgrasstools (не трава), вы можете легко обобщить линию с помощью Vector Processing> LineSmootherJaiTools Обработка вектора в LineSmootherJaiTools в uDig

Убедитесь, что правильно настроили ввод и вывод (работает только с шейп-файлами, поэтому нет необходимости конвертировать ваши данные в наборы / местоположения для травы) : настройки ввода и вывода для Spatial Toolbox в uDig

Закончив настройку допуска на сглаживание (0,0 - 1,0) и ввода / вывода, нажмите кнопку «Воспроизведение» в окне «Пространственная панель инструментов» (вверху справа): игровой модуль в Spatial Toolbox для uDig

Полученные результаты:
uDig упрощает результаты jgrasstools ...

SaultDon
источник
Изменяет ли это исходные данные или фильтрует их до того, как QGIS их отображает?
Брайан Келли
Ах, здесь ответ: «Сглаживание (линия) - это« обратный »процесс, который принимает в качестве входных данных линию и производит более плавное приближение к оригиналу. В некоторых случаях это достигается путем добавления новых вершин в исходную линию, и может составлять до 4000% от количества вершин в оригинале. В таком случае всегда полезно упростить линию после сглаживания. " От сайта grass.osgeo.org/grass64/manuals/html64_user/v.generalize.html
Брайан Келли,
Таким образом, кажется, что это то, что вы, вероятно, примените, как только вы подтвердите, что все ваши линии верны и не нуждаются в дальнейшем редактировании (если вы не хотите отрегулировать все дополнительные векторы и затем сгладить их снова)
Брайан Келли
@spline Да, потому что вы должны работать с «набором данных травы», который по сути - НЕ шейп-файл, вы хотели бы убедиться, что оригинальный шейп-файл был завершен. Упрощение линии для устранения лишних вершин также является опцией в зависимости от длины линии и количества вершин, присутствующих в кривой Безье .
SaultDon
О, мое слово, трава не имеет смысла для меня ... названия карт, названия локаций, база данных, ПОСТОЯННО ... Я пытался "обнаружить", как использовать этот ответ (по общему признанию, без предварительного знания травы), и потерпел неудачу с треском. Файлы, кажется, идут туда, куда вы меньше всего ожидаете (хотя, я полагаю, они не являются файлами?), Я не смог выбрать конвертированный слой в диалоге обобщения после того, как наконец узнал, как выбрать карту (не то, чтобы я знал, что подразумевается под карта) ... кошмар. Выглядит товар, если бы я мог все это решить, хотя :)
другой Бен
1

Есть и другой способ, возможно, только с версии QGIS 2.0:

Под Обработка> Панель инструментов вы можете получить доступ к инструментам GRASS и SAGA. Для сглаживания вы найдете v.generalize, а также упрощение линий из SAGA. Эти инструменты работают с обычными шейп-файлами, поэтому вектор травы не требуется:

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

Пакетный режим еще не так хорошо решен (щелкните правой кнопкой мыши в правом меню и выберите «Выполнить как пакет», поскольку каждый отдельный файл нужно выбирать вручную. Упомянутый выше плагин обобщителя позволяет проще выбирать множество файлов). , но это работает только сейчас, если не указан файл для сохранения, в противном случае плагин падает.

Максимум
источник
1

Под гладким алгоритмом геометрииProcessing Toolbox -> QGis geoalghoritms -> Vector .

Линия
источник