Автоматическая классификация

MapInfo, MapBasic
Ответить
Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Автоматическая классификация

Сообщение Игорь Лебедь » 10 окт 2019, 12:26

Есть хаотичный слой MapInfo, состоящий из типичных, но не классифицированных объектов.
Например:
зелёные точки
красные точки
синие точки
толстые красные линии
тонкие красные линии
полигоны
подписи 14 шрифт
подписи 16 шрифт

Надо их классифицировать автоматом (по оформлению) и присвоить каждой типовой группе объектов произвольный номер в таблицу атрибутов. Есть ли для этого автоматический инструмент в этом древнем зле?

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Автоматическая классификация

Сообщение Игорь Белов » 10 окт 2019, 13:56

Похоже, Вы хотите делать это в MapInfo. Про автоматические инструменты не знаю, по памяти опишу свой древнющий опыт решения врукопашную.

Добавим в таблицу три колонки и заполним их соответственно значениями
ObjectInfo(Obj, 1)
ObjectInfo(Obj, 2)
ObjectInfo(Obj, 3)
В первую запишутся типы геометрий.
Во второй окажутся стили символа для точки, линии, обводки для полигона, шрифт для текста.
Третья - стиль заливки для полигона, строка содержимого для текста.

Стили линий в скобках содержат тип линии, толщину, цвет (порядок точно не помню).
Стили заливок в скобках содержат тип заливки, цвет заливки, цвет фона.
Размер шрифта не существует. Тексты в карте заданы ограничивающим прямоугольником, и программа вычисляет величину шрифта динамически, исходя из геометрических размеров (с хитрым учётом угла поворота) и текущего масштаба окна карты.

Делаем SQL query, в котором в строку Group by записываем названия этих трёх колонок. Результирующая таблица будет содержать все наличные сочетания. Удобно её сохранить, придумать номера для каждого сочетания и, осуществляя последовательно выбороки, присваивать эти номера четвёртому добавленному полю.
The purpose of computing is insight, not numbers

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Автоматическая классификация

Сообщение Игорь Лебедь » 10 окт 2019, 14:53

Спасибо! Но ручной способ уже был понятен. Утилит под MI множество, думал, есть готовая.
Всё-таки вопрос про размер шрифта - "Font ("Arial",256,0,7293567,5777215)" - это вылезает в файле .mid, и как бы из этого получить всё-таки размер шрифта, может, как-то обратной пропорцией от диагонали прямоугольника? И угол поворота текста тоже бы неплохо было получить в атрибут, есть ли такая возможность? viewtopic.php?f=17&t=25160#p168583

Вообще странно, что шрифт не имеет размера (не сохраняется в файле), потому что если ткнуть в подпись в открытом на редактирование файле tab, а в нём же и оформление сохраняется, то там в свойствах шрифта стоит конкретная цифра. Не перевычисляет же мапинфо размер шрифта относительно размера описанного прямоугольника и угла поворота каждый раз при открытии файла?
То, что размер шрифта меняется при масштабировании, это понятно. Но если размер прямоугольника хранится в файле, стало быть, по нему косвенно можно выгрузить в атрибут размер подписи?
Последний раз редактировалось Игорь Лебедь 10 окт 2019, 15:45, всего редактировалось 1 раз.

trir
Гуру
Сообщения: 5275
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Автоматическая классификация

Сообщение trir » 10 окт 2019, 15:07


lam
Гуру
Сообщения: 1018
Зарегистрирован: 01 авг 2012, 13:55
Репутация: 241

Re: Автоматическая классификация

Сообщение lam » 10 окт 2019, 17:31

Выложите фрагмент "хаотичного слоя в MapInfo"

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Автоматическая классификация

Сообщение gamm » 10 окт 2019, 20:02

Игорь Лебедь писал(а):
10 окт 2019, 12:26
Есть хаотичный слой MapInfo, состоящий из типичных, но не классифицированных объектов.
когда нам геологи вывалили подобный мусор вместо базы (они руками стили меняли), мы написали за пару часов парсер MID/MIF, распарсили, и попросили так больше не делать. Судя по всему, знатокам Питона нужно еще меньше времени, чтобы сделать подобное ...

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Автоматическая классификация

Сообщение Игорь Белов » 10 окт 2019, 20:55

gamm писал(а):
10 окт 2019, 20:02
мы написали за пару часов парсер MID/MIF
Тоже некогда развлекался таким образом. Теперь предпочитаю заставлять GDAL/OGR вытаскивать стили объектов:

Код: Выделить всё

ogr2ogr -f "ESRI Shapefile" -sql "SELECT *, OGR_STYLE FROM layer WHERE OGR_GEOMETRY='LINESTRING'" layer_l.shp layer.TAB
The purpose of computing is insight, not numbers

zingeroud
Интересующийся
Сообщения: 46
Зарегистрирован: 21 ноя 2013, 15:16
Репутация: 14

Re: Автоматическая классификация

Сообщение zingeroud » 26 мар 2020, 10:03

Игорь Лебедь писал(а):
10 окт 2019, 12:26
зелёные точки
красные точки
синие точки
толстые красные линии
тонкие красные линии
полигоны
подписи 14 шрифт
подписи 16 шрифт
В стандартном пакете мапкад есть инструмент: выбор объекта по стилю, выбирать можно по любому вами перечисленному типу, полученную выборку можно открыть списком и быстро придать значения в семантике.

Ответить

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

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

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