Страница 1 из 1

SQL в надписях[

Добавлено: 30 апр 2014, 11:50
agrozema
Добрый день! Необходимо сделать следущее, есть два поля (1) и (2). В первом поле - номер пункта ГГС, во втором поле - его абсолютная высота. Необходимо чтобы надписи были в виде дроби где числитель это (поле 1) знаменатель (поле2).
Зашел в Свойства слоя - Надписи - Выражения....написал следующее , но как итог подчеркивание короткое. Можно ли линию задать над знаменателем, так как априори знаменатель всегда длиннее.

Re: SQL в надписях[

Добавлено: 30 апр 2014, 18:12
Monstria
Спойлер
2014-04-30_19-03-11.png
2014-04-30_19-03-11.png (95.67 КБ) 4977 просмотров

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

Function FindLabel ( [F1],[F2] )
dim myLen
myLen=len([F2])
dim mySpace
mySpace=""
if len([F1])<myLen then
  for i=myLen-len([F1]) to 1 step -1
    mySpace=mySpace & "&#160; "
  next
end if
  FindLabel ="<und>" & mySpace & [F1] & "</und>" &  vbnewline & [F2]
End Function 
TestLabel.rar
(24.6 КБ) 326 скачиваний
PS.. анализатор кода сайта вырезал из кода ту самую хитрость :)
2014-04-30_19-16-12.png
2014-04-30_19-16-12.png (5.11 КБ) 4974 просмотра
Так что реальный код - смотрите в свойстве слоя в приложенном проекте ;)

Re: SQL в надписях[

Добавлено: 05 май 2014, 07:47
agrozema
Пишет "возвраты каретки недопустимы в простых выражениях", а -mxd Ваш не открывается.

Re: SQL в надписях[

Добавлено: 05 май 2014, 08:10
Monstria
agrozema писал(а):Пишет "возвраты каретки недопустимы в простых выражениях", а -mxd Ваш не открывается.
Попробуйте открыть проект из запущенной арки - ну и на всякий случай вот код для загрузки в блок скрипта.
UnlLabel.rar
(318 байт) 314 скачиваний

Re: SQL в надписях[

Добавлено: 05 май 2014, 14:48
doujin
А можно я предложу решения для python интерпретатора?

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

u'<UND>{0}</UND>\n{1}'.format([F1].center(len([F2]), u'_'), [F2])
F1 (числитель) и оба F2 (знаменатель) следует заменить на названия своих полей.

Начиная с версии 10 python можно использовать и для построения надписей. В нем можно обойтись одной строкой (даже в дополнительный режим не надо переключать), а числитель и знаменатель будут более-менее отцентрованы друг относительно друга. На мой взгляд так надпись выглядит опрятнее. Однако, заменив center на rjust или ljust, можно добиться выравнивания в право или в лево соответственно.