Страница 1 из 1
MapInfo. Работа с запросами
Добавлено: 21 фев 2016, 21:44
xtxskif
Привет всем.
Нужна помощь в решение очень простой задачи. На рисунке есть несколько линий. В МапИнфо я могу посчитать длину каждой линии с помощью простого запроса (Query-->Select-->функция ObjectLen).
Но мне нужно посчитать длину красной ламаной линии. Как мне ето сделать с помощью Query-->Select--> ... или каким-то другим способом.
Спасибо
Re: MapInfo. Работа с запросами
Добавлено: 22 фев 2016, 06:01
bim2010
Re: MapInfo. Работа с запросами
Добавлено: 22 фев 2016, 10:54
xtxskif
но как мне применить ети алгоритмы(например Дейкстры) в MapInfo?
Re: MapInfo. Работа с запросами
Добавлено: 22 фев 2016, 17:29
Boris
Уважаемые авторы, просьба, давайте полное описание задачи, а уважаемые отвечающие, имейте терпение получить полное описание задачи.
В таком обилии букв, совершенно не ясно:
а) это набор отрезков или единая ломаная?;
б) линия ФИЗИЧЕСКИ присутствует или это результат построений "на лету"? поскольку она ортогональна отрезку А;
в) если это набор отрезков, то имеют ли они сопряжение друг с другом?, пересечение?, примыкание?
Re: MapInfo. Работа с запросами
Добавлено: 29 фев 2016, 15:36
xtxskif
это набор отрезков, что имеют точки соприкосновения друг с другом. линия физически не присутствует.
задача состоит в том чтоби посчитать длину линии которая состоит с частей других линий которие соприкосновлены между собой или пересикаются с помощью MapInfo
спасибо
Re: MapInfo. Работа с запросами
Добавлено: 29 фев 2016, 17:17
MYS
Пуская ваши линии в файле q1. Рисуете полигон - в файл q2:

- lineInPol.png (7.32 КБ) 8621 просмотр
Делаете SQL запрос:
Select Sum(ObjectLen(obj, "km")) from q1, q2 where q1.Obj Entirely Within q2.Obj into Selection
Получаете суммарную длину отрезков, которые целиком находятся внутри полигона.
Re: MapInfo. Работа с запросами
Добавлено: 29 фев 2016, 17:54
Boris
Если автор предыдущего ответу угадал вашу задачу, то мой ответ - мимо.
Теперь к задаче как я ее понимаю: это поиск пути из пункта А в пункт Б. Или ХЗ что. Не бывает таких задач просто найти длину - они должны быть откуда то куда то. Хотя бы и в постановке найти все пути изо всех начальных точек. Длиннее дольше, но алгоритм тот же, только применяется он много раз.
Для решения такой задачи исходные данные - 85% работы, потому как они должны ИДЕАЛЬНО примыкать друг к ругу и иметь общую вершину, даже в случае, когда это примыкание к длинной прямой. Без этого алгоритмы не будут работать. После это явно или не явно, если вы используете внешнюю библиотеку, строится граф и задача решается на нем. Без топологической корректности данных задача решения не имеет. Никаких чуть-чуть не сошлись или чуть-чуть пересеклись. Все такие ошибки в данных вычищаются ДО начала работы.
И мапинфо для это очень мало подходит. Во-первых, у нее убогие средства контроля топологии, но для задачи до 500 линий - сойдет. Во-вторых, в ней нет библиотек для расчета пути, а реализовывать его самому на мапбасике - это мучение. Хотя может кто то уже намучился и решение есть в сети?
Re: MapInfo. Работа с запросами
Добавлено: 29 фев 2016, 18:05
Александр Мурый
Boris писал(а):Во-вторых, в ней нет библиотек для расчета пути, а реализовывать его самому на мапбасике - это мучение. Хотя может кто то уже намучился и решение есть в сети?
Например, есть
RouteFinder (ссылку на эту контору уже давали выше).
Re: MapInfo. Работа с запросами
Добавлено: 29 фев 2016, 18:17
bim2010
Re: MapInfo. Работа с запросами
Добавлено: 29 мар 2016, 01:58
xtxskif
MYS писал(а):Пуская ваши линии в файле q1. Рисуете полигон - в файл q2:
Вложение lineInPol.png больше недоступно
Делаете SQL запрос:
Select Sum(ObjectLen(obj, "km")) from q1, q2 where q1.Obj Entirely Within q2.Obj into Selection
Получаете суммарную длину отрезков, которые целиком находятся внутри полигона.
Прошу прощение, с сложними запросами не очень хорошо знаком, видает ошибку, подскажите что делаю не так
Re: MapInfo. Работа с запросами
Добавлено: 29 мар 2016, 11:04
Sibit
В поле Select перечисляются колонки в поле Condition - условия. Вы же все подряд туда напихали. Естественно, что мастер запросов ругается. Попробуйте начать с простых запросов, когда освоите - попробуйте ввести ваш запрос.
Re: MapInfo. Работа с запросами
Добавлено: 29 мар 2016, 12:03
xtxskif
напишыте пожалуйста как правильно ввести именно этот пример. спасибо
Re: MapInfo. Работа с запросами
Добавлено: 29 мар 2016, 12:24
MYS
Select Columns: Sum(ObjectLen(obj, "km"))
from Tables: q1, q2
where Condition: q1.Obj Entirely Within q2.Obj
into Table named: Selection
Re: MapInfo. Работа с запросами
Добавлено: 29 мар 2016, 14:28
xtxskif
спасибо