Страница 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
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
спасибо