Расположение подписей
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 28 мар 2009, 20:02
- Репутация: 0
Расположение подписей
Подскажите, пожалуйста, можно ли подписи перемещать относительно исходного их местоположения программным способом? Подписи созданы из значений столбцов таблицы оператором "Set Map Layer tabName Label <...>". Или это возможно только путем создания новых текстовых объектов, к примеру в косметическом слое?
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Расположение подписей
Подписи существуют только тот сеанс, в котором вы их создали. При сохранении в рабочий набор подвинутые подписи сохраняются в рабочем наборе. Положение подписей в рабочем наборе прописывается строкой с координатами - значит в принципе менять положение подписей можно.
Но самый простой и дешевый способ создания правильных подписей - это создание дублирующей таблицы (или таблицы, которая содержит только ключевое поле для связи с первой таблицей), которая будет содержать ТОЧКИ в нужных вам местах. Их и подписывайте, хотите из дублирующей таблицы, хотите через запрос, связывающий точки с необходимыми подписями в исходной таблицей. Точки создавать и двигать - минутное дело.
Да, еще если сохранили рабочий набор с "подвинутыми" подписями, а таблицу упаковали после добавления или удаления строк, то подписи после открытия рабочего набора заменятся непредсказуемым образом. Положение сохранят - а текст заново считают из таблицы, но название это будет от другой записи.
Но самый простой и дешевый способ создания правильных подписей - это создание дублирующей таблицы (или таблицы, которая содержит только ключевое поле для связи с первой таблицей), которая будет содержать ТОЧКИ в нужных вам местах. Их и подписывайте, хотите из дублирующей таблицы, хотите через запрос, связывающий точки с необходимыми подписями в исходной таблицей. Точки создавать и двигать - минутное дело.
Да, еще если сохранили рабочий набор с "подвинутыми" подписями, а таблицу упаковали после добавления или удаления строк, то подписи после открытия рабочего набора заменятся непредсказуемым образом. Положение сохранят - а текст заново считают из таблицы, но название это будет от другой записи.
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 28 мар 2009, 20:02
- Репутация: 0
Re: Расположение подписей
Спасибо!
Мне подписывать нужно узлы в полигонах или полилиниях. Сейчас я так и делаю: создаю слой с точечными объектами по координатам узлов, потом просто добавляю этот новый слой на карту и включаю подписи у этого слоя. Но надо "растащить" подписи, чтобы не было каши из цифр. Когда включаешь "линию" или "стрелку" в опциях подписей, а потом вручную по кругу растаскиваешь подписи, получается красиво: нет наложений, все читается и линии/стрелки, когда точек (узлов) много уточняют подпись, хотя бы визуально. Вот как бы это реализовать? У меня в голове крутится мысль с текстовыми объектами, может есть проще решение? Правда как именно выстраивать даже текстовые объекты вокруг полигонов или полилиний, пока что, представляю смутно. А рабочие наборы меня не очень интересуют!
Мне подписывать нужно узлы в полигонах или полилиниях. Сейчас я так и делаю: создаю слой с точечными объектами по координатам узлов, потом просто добавляю этот новый слой на карту и включаю подписи у этого слоя. Но надо "растащить" подписи, чтобы не было каши из цифр. Когда включаешь "линию" или "стрелку" в опциях подписей, а потом вручную по кругу растаскиваешь подписи, получается красиво: нет наложений, все читается и линии/стрелки, когда точек (узлов) много уточняют подпись, хотя бы визуально. Вот как бы это реализовать? У меня в голове крутится мысль с текстовыми объектами, может есть проще решение? Правда как именно выстраивать даже текстовые объекты вокруг полигонов или полилиний, пока что, представляю смутно. А рабочие наборы меня не очень интересуют!
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Расположение подписей
Интересно как вы тогда сохраняете ваши растащенные подписи, если не в рабочем наборе. Или ваша работа только на один раз?
------
Вместо того, что бы таскать подписи - таскайте точки. От них подписи никуда уже не денутся.
------
Даже если рабочий набор вас не интересует, оттащите одну подпись и сохраните рабочий набор.
Затем откройте р.набор в любом текстовом редакторе и посмотрите синтаксис при этой подписи - он и будет синтаксисом для команды MapBasic'а
------
Расстановка подписей или надписей, в которые подписи превращаются одной командой из меню Tools, большая задача. Бесплатного софта не видел, лет 5 назад слышал, что есть платный, и он прилично стоил.
------
Задача должна очень того стоить, если вы взялись за ее программирование. Она предельно нелинейна и многовариантна. И все равно ручной красоты в расстановке подписей автоматизацией добиться не удастся.
------
Если вам кажется, что я отвечаю немного или совсем не о том, попробуйте еще расширить описание постановки задачи.
------
Вместо того, что бы таскать подписи - таскайте точки. От них подписи никуда уже не денутся.
------
Даже если рабочий набор вас не интересует, оттащите одну подпись и сохраните рабочий набор.
Затем откройте р.набор в любом текстовом редакторе и посмотрите синтаксис при этой подписи - он и будет синтаксисом для команды MapBasic'а
------
Расстановка подписей или надписей, в которые подписи превращаются одной командой из меню Tools, большая задача. Бесплатного софта не видел, лет 5 назад слышал, что есть платный, и он прилично стоил.
------
Задача должна очень того стоить, если вы взялись за ее программирование. Она предельно нелинейна и многовариантна. И все равно ручной красоты в расстановке подписей автоматизацией добиться не удастся.
------
Если вам кажется, что я отвечаю немного или совсем не о том, попробуйте еще расширить описание постановки задачи.
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Re: Расположение подписей
Что касается подписей, то удобно пользоваться стандартной утилитой "Подписи" (LABELER.MBX), которая подписи одного слоя ПРЕОБРАЗУЕТ В НАДПИСИ (обычные текстовые объекты) и сохраняет его в слой по Вашему выбору. Так как подписи оказываются преобразованы в обычный текст (обычно в новой таблице), соответственно их координаты можно менять тем или иным способом.
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 28 мар 2009, 20:02
- Репутация: 0
Re: Расположение подписей
2 Boris
а) Да, на один раз.
б) Синтаксис посмотрел, можно для каждой подписи задавать свои координаты, как для текстовых объектов. Вроде, есть и функции для перемещения по подписям и т.п. Главное, будь то подпись или текстовый объект - это правильно задавать им координаты, чтобы было как при ручной расстановке. Таскать точки - та же история. Надо знать куда таскать.
2 SS_Rebelious
Ок, но все равно, менять координаты для текстовых объектов надо по определенным правилам, учитывать положение граней полигона и т.п.
а) Да, на один раз.
б) Синтаксис посмотрел, можно для каждой подписи задавать свои координаты, как для текстовых объектов. Вроде, есть и функции для перемещения по подписям и т.п. Главное, будь то подпись или текстовый объект - это правильно задавать им координаты, чтобы было как при ручной расстановке. Таскать точки - та же история. Надо знать куда таскать.
2 SS_Rebelious
Ок, но все равно, менять координаты для текстовых объектов надо по определенным правилам, учитывать положение граней полигона и т.п.
-
- Новоприбывший
- Сообщения: 14
- Зарегистрирован: 31 май 2021, 14:58
- Репутация: 0
- Откуда: Минск
Re: Расположение подписей
SS_Rebelious, подскажите, как преобразовать быстро большое количество подписей в надписи функцией Labeler, а то приходится кликать на каждую подпись
- MI user
- Участник
- Сообщения: 63
- Зарегистрирован: 14 янв 2013, 17:08
- Репутация: 33
- Откуда: Оренбург
Re: Расположение подписей
yurik1989, если ещё актуально, то вот команды MapBasic, которые преобразуют объекты таблицы в надписи в центре объекта:
Порядок действий:
1) Сделайте копию таблицы с объектами. Новое название должно быть коротким и без пробелов. В примере кода таблица называется "building".
2) Закройте все слои и откройте только эту таблицу.
3) Слово "building" замените в двух местах на название созданной копии таблицы из п .1
4) Узнайте порядковый номер колонки, в которой содержится нужная семантика. Например - это будет колонка №3. Тогда замените .COL1 на .COL3.
5) Установите нужный стиль и размер шрифта. Этим шрифтом будут созданы надписи.
6) Откройте окно MapBasic.
7) Вводите (copy/paste) команды по одной и нажимайте Enter.
Код: Выделить всё
dim w as integer
w = frontwindow()
set coordsys window w
update building set obj = CreateText(w, CentroidX(obj), CentroidY(obj), building.COL1, 0,0,0)
1) Сделайте копию таблицы с объектами. Новое название должно быть коротким и без пробелов. В примере кода таблица называется "building".
2) Закройте все слои и откройте только эту таблицу.
3) Слово "building" замените в двух местах на название созданной копии таблицы из п .1
4) Узнайте порядковый номер колонки, в которой содержится нужная семантика. Например - это будет колонка №3. Тогда замените .COL1 на .COL3.
5) Установите нужный стиль и размер шрифта. Этим шрифтом будут созданы надписи.
6) Откройте окно MapBasic.
7) Вводите (copy/paste) команды по одной и нажимайте Enter.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 36 гостей