Страница 1 из 1
Создание линий маршрутов по точкам
Добавлено: 22 июл 2017, 23:09
pavel_surkov
Добрый вечер. Я новичок, не могу решить одну задачу. Задача следующая. На морских картах нанесены рекомендованные маршруты. У некоторых маршрутов есть общие точки. Хочу все точки внести в одну таблицу и присвоить им номера. А потом построить линии необходимых маршрутов по указаным номерам точек, после посчитать длинну каждого маршрута. Если такое в QGIS возможно, подскажите пожалуйста, как это сделать.
[ Сообщение с мобильного устройства ]
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 09:37
ANAT01
Импортируете точки в виде точек (csv), соединяете точки в линии плагином
https://plugins.qgis.org/plugins/points2one/
Маршруты в таком случае должны быть в разных csv
[ Сообщение с мобильного устройства ]
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 12:01
trir
Такое удобнее делать в БД, но нужно знать SQL
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 15:32
pavel_surkov
Спасибо за совет, а подскажите пожалуйста, какую БЛ лучше использовать?
[ Сообщение с мобильного устройства ]
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 18:03
trir
сложный вопрос, под windows для обучения лучше подходит MS SQL Server - есть документация на русском и книжек много. Для работы лучше всего PostGIS.
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 18:14
Игорь Белов
Базы данных? «Ну вы совсем того!» ©
Импортируйте точки в QGIS; включите прилипание к ним; создайте слой линий; отрисуйте маршруты; выведите длины линий.
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 18:34
trir
зачем ручками, когда можно запросом?
Код: Выделить всё
PROCEDURE `CreateTrkLine`(nid INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE coup, i INT DEFAULT 0;
DECLARE p1, p2, CrP point;
DECLARE CrLn LineString;
DECLARE Cur1 Cursor FOR
SELECT p FROM `gpx_db`.`trkpt` WHERE trk_id=nid AND nseg=1;
DECLARE Continue Handler FOR NOT found SET done = 1;
OPEN Cur1;
Repeat
Fetch Cur1 INTO CrP;
IF NOT Done THEN
CASE i
WHEN 0 THEN
SET p1 = geomfromtext(concat('Point(', X(CrP), ' ', Y(CrP), ')'));
WHEN 1 THEN
SET CrLn = geometryfromtext(concat('LineString(',x(p1),' ',y(p1),',',x(CrP),' ',y(CrP),')'));
ELSE
SET CrLn = `LS_AddPoint`(CrLn, CrP);
END CASE;
SET i=i+1;
END IF;
Until done END Repeat;
Close Cur1;
UPDATE trk SET `trk_line`=CrLn WHERE id=nid;
END $$
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 18:44
Игорь Белов
И в чём преимущество? В том, чтобы, глядя на карты, ручками вносить номера точек в списки, неизбежно внося ошибки при набивке? Не проще ли прямо на картах провести маршруты через нужные точки? Результат сразу готов, и не надо делать запросы, а потом искать, в каких списках косяки с номерами поворотных точек.
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 18:47
trir
так маршруты уже есть, дальше пара запросов - и готово, банальная нормализация данных
Re: Создание линий маршрутов по точкам
Добавлено: 23 июл 2017, 18:50
Игорь Белов
trir писал(а):так маршруты уже есть
А Вы перечитайте стартовый пост внимательно.