Страница 1 из 1

Узлы в местах пересечений

Добавлено: 30 ноя 2017, 21:58
Svility
День добрый, стоит задача: создать геодезическую ведомость трубопровода, с привязкой к ней объектов.
т.е. в qgis первым делом делаю извлечение узлов имеющегося линейного объекта, после чего создаю 2 поля с координатами X иY, полученые узлы с координатами выгружаю в excel. После чего к сформированной ведомости мне необходимо добавить поле с информацией о установленых на трубопроводе кранах. Краны нанесены точками на линию (с прилипанием). Что бы в сформированной ведомости отметить положения крана, необходимо предварительно создать узел(вершину, вертекс) на линейном объекте и на него поместить кран.
Труб много, кранов и прочего еще больше, врукопашку создавать вершины для каждого объекта - гиблое дело. Нужен способ создания этих вершин в местах пересечений.

Прошу поделиться опытом/методом.

Re: Узлы в местах пересечений

Добавлено: 01 дек 2017, 05:01
t[0]p
Svility писал(а):
30 ноя 2017, 21:58
Краны нанесены точками на линию (с прилипанием).
Svility писал(а):
30 ноя 2017, 21:58
необходимо предварительно создать узел
А чем вам точка не угодила? Почему именно узел нужен?

Re: Узлы в местах пересечений

Добавлено: 01 дек 2017, 07:43
trir
переделать функцию в LS_InsPoint

Код: Выделить всё

FUNCTION `LS_AddPoint`(Ls LineString, np point) RETURNS linestring
BEGIN
  DECLARE I, ICount INTEGER DEFAULT 1;
  DECLARE nStr longText;
  DECLARE crP Point;
  SET ICount = NumPoints(Ls) + 1;
  SET nStr = 'LineString(';
  while I < ICount do
   SET crP = PointN(Ls, I);
   SET nStr = Concat(nStr, X(crP), ' ', Y(crP), ',');
   SET I = I + 1;
  END while;
  SET nStr = Concat(nStr, X(nP), ' ', Y(nP), ')');
  RETURN LineFromText(nStr);
END $$

Re: Узлы в местах пересечений

Добавлено: 01 дек 2017, 09:41
Александр Мурый
А можно расшифровку того, что написано в первом посте, только более внятно и с картинками?

Re: Узлы в местах пересечений

Добавлено: 02 дек 2017, 06:25
Svility
t[0]p, выгружаются ведь координаты вершин, а если кран не на вершине, то в ведомости не будет точной координаты установки крана.

Re: Узлы в местах пересечений

Добавлено: 02 дек 2017, 06:27
Svility
trir, спасибо, буду пробовать :)

Re: Узлы в местах пересечений

Добавлено: 02 дек 2017, 06:31
Svility
Александр Мурый, куда ж еще более внятно. В картинках будет менее понятно.

Re: Узлы в местах пересечений

Добавлено: 03 дек 2017, 00:38
Игорь Белов
Можно написать скрипт на питоне для QGIS. Задача: высыпать узлы из линий и перемешать с точками в правильном порядке. Для этого вычисляется продольная координата M для тех и других, после чего они сортируются по возрастанию M и образуют новую линию.

Но Вы и так выводите узлы в координатах. Остаётся для них и для кранов вычислить величину M, после чего можно отсортировать всё в экселе. В этом случае не нужно создавать узлы.

Для вычисления M можно использовать скрипт snap_points_to_lines. На входе слой точек и слой линий, на выходе слой точек, которые снесены на линии, плюс добавлены поля со значениями ucoord и vcoord, — продольная координата M и поперечная (расстояние от исходной точки до линии). Точки сносятся на нужную линию либо по имени, либо на ближайшую (Ignore fields).