идентификация линий по объектам

MapInfo, MapBasic
Ответить
1985student
Участник
Сообщения: 65
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 4
Откуда: Нижний Новгород

идентификация линий по объектам

Сообщение 1985student »

Версия MI 10.5; Операционная система Windows7; Тип геообъектов - линии;СК-42;Долгота/Широта WGS_84;
Вопрос: можно ли линиям, берущим своё начало от различных объектов(полигонны,точки, линии) присвоить идентификатор этого объекта? Если можно, то как это сделать для линий, берущих своё начало от центра полигонов?
Аватара пользователя
Пётр Дубоделов
Завсегдатай
Сообщения: 271
Зарегистрирован: 21 апр 2009, 13:58
Репутация: 12
Откуда: Бурашево
Контактная информация:

Re: идентификация линий по объектам

Сообщение Пётр Дубоделов »

как понять идентификатор? некоторое свойство с таким именем? тогда:
Запрос вида "меню таблица/обновить колонку..." щелкаем кнопку "объединить" и выбираем нужный вариант.

при необходимости центроиды полигонов можно выдрать на новый слой. если линии начинаются не точно в центре или есть топологические погрешности, можно выстроить небольшие буферы-круги около центроидов полигонов.
"Если карта не соответствует местности, доверяй местности."
1985student
Участник
Сообщения: 65
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 4
Откуда: Нижний Новгород

Re: идентификация линий по объектам

Сообщение 1985student »

Говоря идентификатор, я имею в виду что полигоны проидентифицированны как 1,2,3 и мне нужно,чтобы линии, также показанные на рисунке имели идентификацию,такую же как и соответствующие им полигоны. Только нужно учесть, что линий, как и полигонов,очень и очень много:
Спойлер
Изображение
попробовал ваш метод выходит ошибка,что не удалось обновить таблицу.
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: идентификация линий по объектам

Сообщение reasonat »

скорее всего таблица неупакованная (с серыми строками от удаленных записей). Упакуйте ее (Таблица\Изменить\Упаковать)
1985student
Участник
Сообщения: 65
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 4
Откуда: Нижний Новгород

Re: идентификация линий по объектам

Сообщение 1985student »

А если вот такой вариант, когда линии, начинаясь в одном полигоне, пересекают несколько, а нужно, чтобы линия была проидентифицированна, как тот полигон от которого она берёт своё начало,что тогда делать?
Спойлер
Изображение
Аватара пользователя
Пётр Дубоделов
Завсегдатай
Сообщения: 271
Зарегистрирован: 21 апр 2009, 13:58
Репутация: 12
Откуда: Бурашево
Контактная информация:

Re: идентификация линий по объектам

Сообщение Пётр Дубоделов »

Если объекты действительно линии (имеют 2 вершины) и только одна (начальная) из этих вершин попадает в полигон, тогда порядок такой:
1. разваливаем линии на точки (утилита OBJ_CONV.MBX)
2. обновляем для точек поле "идентификатор"
3. из полученного результата удаляем все пустые значения (точки, которые не попадают в полигоны) и упаковываемся
4. обновляем идентификатор слоя линий по значениям слоя точек
"Если карта не соответствует местности, доверяй местности."
1985student
Участник
Сообщения: 65
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 4
Откуда: Нижний Новгород

Re: идентификация линий по объектам

Сообщение 1985student »

А после того как мы обновили идентификатор слоя линий по значениям слоя точек, можно автоматически построить линии, которые будут идти к какому либо одному объекту?
Спойлер
Изображение
Дубоделов Петр
Новоприбывший
Сообщения: 1
Зарегистрирован: 30 ноя 2011, 09:41
Репутация: 0

Re: идентификация линий по объектам

Сообщение Дубоделов Петр »

а фиг знает, наверно можно... только в мапинфо руками скорее всего значительно быстрее получится
1985student
Участник
Сообщения: 65
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 4
Откуда: Нижний Новгород

Re: идентификация линий по объектам

Сообщение 1985student »

Спасибо
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: идентификация линий по объектам

Сообщение Boris »

если еще не решили вторую половину задачи. то ее можно быстро и без усилий автоматизировать, если вы знаете начало и конец линий.
1985student
Участник
Сообщения: 65
Зарегистрирован: 02 сен 2010, 22:44
Репутация: 4
Откуда: Нижний Новгород

Re: идентификация линий по объектам

Сообщение 1985student »

Да я действительно знаю координаты начала и конца линий, вы бы мне очень помогли...
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: идентификация линий по объектам

Сообщение Boris »

1985student писал(а):Да я действительно знаю координаты начала и конца линий, вы бы мне очень помогли...
Функция MapBasic
CreateLine( ) function
Returns an Object value representing a line.

Syntax
CreateLine( x1, y1, x2, y2 )
является, простите за тавтологию - ФУНКЦИЕЙ. А значит ее без проблем можно вызывать в запросах типа INSERT и UPDATE к гео-объекту OBJ. Пример с INSERT есть в хелпе по мапбасику. Сам мапбасик есть в любой последней мапинфо. Я не говорю, что его надо использовать для этой простейшей задачи - хватит окна MapBasic в самой мапинфо, но хелп содержит все функции и все их можно использовать внутри мапинфо.
Теперь по шагам:
а) устанавливаем верную систему координат внутренних команд MapBasic
set coordsys table имя_таблицы
иначе все координаты получите в неизвестной системе координат
б) делаем запрос на пары точек или объетов, что вам нужно соединить в него включаем функции CentroidX / centroidy для обеих концов линии (отрезка).
в) сохраняем его как отдельную таблицу. в него будут сохранены гео-объекты от первой таблицы в запросе
г) делаем update что бы присвоить имеющимся объектам линии соединяющие точки. координаты точек берем из соответсвующих столбцов, созданных в запросе
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя