Автоматическая классификация
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
Автоматическая классификация
Есть хаотичный слой MapInfo, состоящий из типичных, но не классифицированных объектов.
Например:
зелёные точки
красные точки
синие точки
толстые красные линии
тонкие красные линии
полигоны
подписи 14 шрифт
подписи 16 шрифт
Надо их классифицировать автоматом (по оформлению) и присвоить каждой типовой группе объектов произвольный номер в таблицу атрибутов. Есть ли для этого автоматический инструмент в этом древнем зле?
Например:
зелёные точки
красные точки
синие точки
толстые красные линии
тонкие красные линии
полигоны
подписи 14 шрифт
подписи 16 шрифт
Надо их классифицировать автоматом (по оформлению) и присвоить каждой типовой группе объектов произвольный номер в таблицу атрибутов. Есть ли для этого автоматический инструмент в этом древнем зле?
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: Автоматическая классификация
Похоже, Вы хотите делать это в MapInfo. Про автоматические инструменты не знаю, по памяти опишу свой древнющий опыт решения врукопашную.
Добавим в таблицу три колонки и заполним их соответственно значениями
ObjectInfo(Obj, 1)
ObjectInfo(Obj, 2)
ObjectInfo(Obj, 3)
В первую запишутся типы геометрий.
Во второй окажутся стили символа для точки, линии, обводки для полигона, шрифт для текста.
Третья - стиль заливки для полигона, строка содержимого для текста.
Стили линий в скобках содержат тип линии, толщину, цвет (порядок точно не помню).
Стили заливок в скобках содержат тип заливки, цвет заливки, цвет фона.
Размер шрифта не существует. Тексты в карте заданы ограничивающим прямоугольником, и программа вычисляет величину шрифта динамически, исходя из геометрических размеров (с хитрым учётом угла поворота) и текущего масштаба окна карты.
Делаем SQL query, в котором в строку Group by записываем названия этих трёх колонок. Результирующая таблица будет содержать все наличные сочетания. Удобно её сохранить, придумать номера для каждого сочетания и, осуществляя последовательно выбороки, присваивать эти номера четвёртому добавленному полю.
Добавим в таблицу три колонки и заполним их соответственно значениями
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: Автоматическая классификация
Спасибо! Но ручной способ уже был понятен. Утилит под MI множество, думал, есть готовая.
Всё-таки вопрос про размер шрифта - "Font ("Arial",256,0,7293567,5777215)" - это вылезает в файле .mid, и как бы из этого получить всё-таки размер шрифта, может, как-то обратной пропорцией от диагонали прямоугольника? И угол поворота текста тоже бы неплохо было получить в атрибут, есть ли такая возможность? viewtopic.php?f=17&t=25160#p168583
Вообще странно, что шрифт не имеет размера (не сохраняется в файле), потому что если ткнуть в подпись в открытом на редактирование файле tab, а в нём же и оформление сохраняется, то там в свойствах шрифта стоит конкретная цифра. Не перевычисляет же мапинфо размер шрифта относительно размера описанного прямоугольника и угла поворота каждый раз при открытии файла?
То, что размер шрифта меняется при масштабировании, это понятно. Но если размер прямоугольника хранится в файле, стало быть, по нему косвенно можно выгрузить в атрибут размер подписи?
Всё-таки вопрос про размер шрифта - "Font ("Arial",256,0,7293567,5777215)" - это вылезает в файле .mid, и как бы из этого получить всё-таки размер шрифта, может, как-то обратной пропорцией от диагонали прямоугольника? И угол поворота текста тоже бы неплохо было получить в атрибут, есть ли такая возможность? viewtopic.php?f=17&t=25160#p168583
Вообще странно, что шрифт не имеет размера (не сохраняется в файле), потому что если ткнуть в подпись в открытом на редактирование файле tab, а в нём же и оформление сохраняется, то там в свойствах шрифта стоит конкретная цифра. Не перевычисляет же мапинфо размер шрифта относительно размера описанного прямоугольника и угла поворота каждый раз при открытии файла?
То, что размер шрифта меняется при масштабировании, это понятно. Но если размер прямоугольника хранится в файле, стало быть, по нему косвенно можно выгрузить в атрибут размер подписи?
Последний раз редактировалось Игорь Лебедь 10 окт 2019, 15:45, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 5287
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
-
- Гуру
- Сообщения: 1018
- Зарегистрирован: 01 авг 2012, 13:55
- Репутация: 241
Re: Автоматическая классификация
Выложите фрагмент "хаотичного слоя в MapInfo"
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Автоматическая классификация
когда нам геологи вывалили подобный мусор вместо базы (они руками стили меняли), мы написали за пару часов парсер MID/MIF, распарсили, и попросили так больше не делать. Судя по всему, знатокам Питона нужно еще меньше времени, чтобы сделать подобное ...Игорь Лебедь писал(а): ↑10 окт 2019, 12:26Есть хаотичный слой MapInfo, состоящий из типичных, но не классифицированных объектов.
- Игорь Белов
- Гуру
- Сообщения: 2229
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1501
- Откуда: Казань
Re: Автоматическая классификация
Тоже некогда развлекался таким образом. Теперь предпочитаю заставлять GDAL/OGR вытаскивать стили объектов:gamm писал(а): ↑10 окт 2019, 20:02мы написали за пару часов парсер MID/MIF
Код: Выделить всё
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
-
- Интересующийся
- Сообщения: 46
- Зарегистрирован: 21 ноя 2013, 15:16
- Репутация: 14
Re: Автоматическая классификация
В стандартном пакете мапкад есть инструмент: выбор объекта по стилю, выбирать можно по любому вами перечисленному типу, полученную выборку можно открыть списком и быстро придать значения в семантике.Игорь Лебедь писал(а): ↑10 окт 2019, 12:26зелёные точки
красные точки
синие точки
толстые красные линии
тонкие красные линии
полигоны
подписи 14 шрифт
подписи 16 шрифт
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей