Узлы в местах пересечений
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Узлы в местах пересечений
День добрый, стоит задача: создать геодезическую ведомость трубопровода, с привязкой к ней объектов.
т.е. в qgis первым делом делаю извлечение узлов имеющегося линейного объекта, после чего создаю 2 поля с координатами X иY, полученые узлы с координатами выгружаю в excel. После чего к сформированной ведомости мне необходимо добавить поле с информацией о установленых на трубопроводе кранах. Краны нанесены точками на линию (с прилипанием). Что бы в сформированной ведомости отметить положения крана, необходимо предварительно создать узел(вершину, вертекс) на линейном объекте и на него поместить кран.
Труб много, кранов и прочего еще больше, врукопашку создавать вершины для каждого объекта - гиблое дело. Нужен способ создания этих вершин в местах пересечений.
Прошу поделиться опытом/методом.
т.е. в qgis первым делом делаю извлечение узлов имеющегося линейного объекта, после чего создаю 2 поля с координатами X иY, полученые узлы с координатами выгружаю в excel. После чего к сформированной ведомости мне необходимо добавить поле с информацией о установленых на трубопроводе кранах. Краны нанесены точками на линию (с прилипанием). Что бы в сформированной ведомости отметить положения крана, необходимо предварительно создать узел(вершину, вертекс) на линейном объекте и на него поместить кран.
Труб много, кранов и прочего еще больше, врукопашку создавать вершины для каждого объекта - гиблое дело. Нужен способ создания этих вершин в местах пересечений.
Прошу поделиться опытом/методом.
- t[0]p
- Участник
- Сообщения: 93
- Зарегистрирован: 15 ноя 2014, 14:35
- Репутация: 7
- Откуда: Томск
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Узлы в местах пересечений
переделать функцию в 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 $$
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Узлы в местах пересечений
А можно расшифровку того, что написано в первом посте, только более внятно и с картинками?
Редактор материалов, модератор форума
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Re: Узлы в местах пересечений
t[0]p, выгружаются ведь координаты вершин, а если кран не на вершине, то в ведомости не будет точной координаты установки крана.
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Re: Узлы в местах пересечений
trir, спасибо, буду пробовать
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Re: Узлы в местах пересечений
Александр Мурый, куда ж еще более внятно. В картинках будет менее понятно.
- Игорь Белов
- Гуру
- Сообщения: 2231
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1504
- Откуда: Казань
Re: Узлы в местах пересечений
Можно написать скрипт на питоне для QGIS. Задача: высыпать узлы из линий и перемешать с точками в правильном порядке. Для этого вычисляется продольная координата M для тех и других, после чего они сортируются по возрастанию M и образуют новую линию.
Но Вы и так выводите узлы в координатах. Остаётся для них и для кранов вычислить величину M, после чего можно отсортировать всё в экселе. В этом случае не нужно создавать узлы.
Для вычисления M можно использовать скрипт snap_points_to_lines. На входе слой точек и слой линий, на выходе слой точек, которые снесены на линии, плюс добавлены поля со значениями ucoord и vcoord, — продольная координата M и поперечная (расстояние от исходной точки до линии). Точки сносятся на нужную линию либо по имени, либо на ближайшую (Ignore fields).
Но Вы и так выводите узлы в координатах. Остаётся для них и для кранов вычислить величину M, после чего можно отсортировать всё в экселе. В этом случае не нужно создавать узлы.
Для вычисления M можно использовать скрипт snap_points_to_lines. На входе слой точек и слой линий, на выходе слой точек, которые снесены на линии, плюс добавлены поля со значениями ucoord и vcoord, — продольная координата M и поперечная (расстояние от исходной точки до линии). Точки сносятся на нужную линию либо по имени, либо на ближайшую (Ignore fields).
- Вложения
-
- snap_points_to_lines.tar.gz
- Снести точки на линии
- (2.22 КБ) 535 скачиваний
The purpose of computing is insight, not numbers
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 35 гостей