Я хочу использовать QGIS для создания точек вдоль линии, но на указанном расстоянии. Я нашел два инструмента GRASS в SEXTANTE Toolbox :
- v.to.points
- v.segment
Я попытался v.to.points , установив максимальное расстояние между точками в единицах карты до 100 и получил это:
Второе фото показывало близкий взгляд с верхнего. Результатом было то, что я хочу, но я хочу получить меньше очков , но даже я установил максимальное расстояние 1000 или 1000000, результат был таким же.
Я пытался использовать v.segment , но у меня не было файла, содержащего правила сегмента.
Подземье дало мне несколько советов, и я попробовал геометрию Densify с заданным интервалом . Сначала он дал мне шейп-файл ломаной линии, такой же, как я, и затем я использовал узлы извлечения, чтобы попытаться получить эти точки. Но результат был таким же, как я использовал v.to.points , независимо от того, какой интервал расстояния я установил.
Как я могу создать точки вдоль линии и на указанном расстоянии?
источник
Ответы:
В консоли Python:
Вы можете использовать модуль Shapely (как в Как создать равноудаленные точки в QGIS? ) с функцией
point = line.interpolate (currentdistance)
Новый Python API основной версии (1.9) имеет эквивалентную команду (как в Генерировании узлов (расстояний) в QGIS Натана Вудроу)
point = geom.interpolate (currentdistance)
или вы можете использовать векторную алгебру и направляющие косинусы (как в PyQGIS: геометрии, векторы, векторная алгебра или направляющие косинусы, примеры применения на французском языке)
1) создать класс слоя памяти (полный класс (без атрибутов) в crea_mem_layer.py )
2) функции векторной алгебры (из algèbre_vect_PyQGIS.py )
3) направляющие косинусы
4) технологическая линия или отрезки
Результаты
полилиния, равноудаленная точка с Shapely или PyQGIS2, с направленными косинусами
Затем просто настройте интервал
источник
Теперь есть плагин под названием QChainage, который делает именно то, что вы хотите. Вы указываете интервальное расстояние, и плагин создает точки вдоль вашей линии с указанным интервалом.
источник
Я написал скрипт, который меняет инструмент геометрии Sextante Densify, чтобы принять определенное расстояние. Это называется Densify геометрией с заданным интервалом .
После запуска Densify, вы можете извлечь точки с помощью инструмента Извлечь узлы .
Вы можете получить его от Github и инструкции по установке находятся в моем блоге .
источник
Если вы не хотите использовать скрипты Python, вы можете просто установить и использовать плагин «Профиль из линии» и игнорировать / удалить столбец значений растра. Цепочка будет тем, что вы установили для интервала выборки.
источник
Ну, не уверен, что это в стабильном выпуске, но в наборе инструментов sextante на 1.9 alpha под Geoalgorithims-> Vector есть опция «Преобразовать линии в точки». Работает угощение, было бы здорово, если бы оно добавило поле для расстояния вдоль линии, хотя.
Интересно, что оно добавило поле NAME из моего векторного слоя.
Я пытался заставить работать этот Python Script Нейтана Вудроу, но я сосу с Python. А с кодом вообще похоже.
источник
Я долго боролся с этой проблемой, но в итоге получил более или менее то, что искал, используя QChainage. Я хотел бы поделиться тем, что может помочь другим. При использовании инструмента растворения геообработки SAGA на линии QChainage дает неверные результаты. Использование другого инструмента растворения заставляет его работать нормально.
источник