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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Гуру
Сообщения: 4420
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 813
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

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


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

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

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

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

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

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

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

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

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

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

Ответить

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

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

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