ArcMap Maplex "вертикальная" дробь

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

ArcMap Maplex "вертикальная" дробь

Сообщение oleg »

есть точки с двумя атрибутами (номер, высота)
нужно подписать через "вертикальную дробь"
номер точки /подчеркивание/ высота

(как на топокартах высота дерева/диаметр)

Спасибо.
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Сообщение oleg »

[Npp] & vbLF & [Z]
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Сообщение oleg »

Underline:
"<UND>" & [LABELFIELD] & "</UND>"


, а "одновременно" не получается:

[Z] & vbLF & "<UND>" & [Npp] &"<UND>" - так не работает


??

подскажите, пожалуйста...
SAA66
Интересующийся
Сообщения: 35
Зарегистрирован: 11 мар 2007, 12:01
Репутация: 0
Откуда: Якутия

Сообщение SAA66 »

Работающее решение, поля - номер скважины и мощность пласта, массив организовывается для удобства выбора.

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

Function FindLabel ( [SKV], [M_OB] )
	m = Array(Array([SKV]))
	n = Array(Array([M_OB]))
	iMxLblSz = 0
	FT = "<UND>"
	LT = "</UND>"
	C_LT = "<CLR red='255' green='255' blue='255'>"
	C_RT = "</CLR>"
	For i = 0 To UBound(m)
		j = m(i)
	If (Len(j(0)) > iMxLblSz) Then
		iMxLblSz = Len(j(0))
	End If
	Next

	For i = 0 To UBound(n)
		g = n(i)
	If (Len(g(0)) > iMxLblSz) Then
		iMxLblSz = Len(g(0))
	End If
	Next

	For i = 0 To UBound(m)
		j = m(i)
		g = n(i)
		k = iMxLblSz - Len(j(0))
		If (g(0)=9999) Then	
			FindLabel = FindLabel+ j(0)
		Else
			FindLabel = FindLabel+ FT + j(0) + C_LT + String(k, "_") + C_RT + LT + vbNewLine + FormatNumber(g(0), 2, -1, 0, 0)	
		End If
rem 9999 - код неизмерения, пустое поле
	Next
End Function
Последний раз редактировалось SAA66 18 апр 2007, 09:15, всего редактировалось 1 раз.
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Сообщение oleg »

ЗдОрово. Спасибо большое!
SAA66
Интересующийся
Сообщения: 35
Зарегистрирован: 11 мар 2007, 12:01
Репутация: 0
Откуда: Якутия

Сообщение SAA66 »

:) Со всей душой, обращайтесь.
Каминский Вадим
Активный участник
Сообщения: 138
Зарегистрирован: 18 авг 2005, 18:05
Репутация: 0

Сообщение Каминский Вадим »

Решение попроще

"<UND>" & [Name1] & "</UND>" & vbNewLine & [Name2]
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: ArcMap Maplex "вертикальная" дробь

Сообщение oleg »

попрошу помощи еще в одном вопросе по подписям.

есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).

\подписывается текущая и планируемая характеристика территории\
Каминский Вадим
Активный участник
Сообщения: 138
Зарегистрирован: 18 авг 2005, 18:05
Репутация: 0

Re: ArcMap Maplex "вертикальная" дробь

Сообщение Каминский Вадим »

Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: ArcMap Maplex "вертикальная" дробь

Сообщение oleg »

Каминский Вадим писал(а):Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.
:oops: ок
SAA66
Интересующийся
Сообщения: 35
Зарегистрирован: 11 мар 2007, 12:01
Репутация: 0
Откуда: Якутия

Re: ArcMap Maplex "вертикальная" дробь

Сообщение SAA66 »

oleg писал(а):попрошу помощи еще в одном вопросе по подписям.

есть 2 поля. значение первого есть для всех записей. значение второго не для всех.
их нужно подписать через дробь, в случае наличия значений в двух полях для записи.
в случае, когда значение есть только для одного поля - дробь не нужна (нулевое значение не подписывать).

\подписывается текущая и планируемая характеристика территории\
Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: ArcMap Maplex "вертикальная" дробь

Сообщение oleg »

SAA66 писал(а):Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.
покажите, пожалуйста, как использовать возможности скрипта для исключения нулевых значений в знаменателе.
SAA66
Интересующийся
Сообщения: 35
Зарегистрирован: 11 мар 2007, 12:01
Репутация: 0
Откуда: Якутия

Re: ArcMap Maplex "вертикальная" дробь

Сообщение SAA66 »

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

Function FindLabel ( [SKV], [M_OB] )
m = Array(Array([SKV]))
n = Array(Array([M_OB]))
iMxLblSz = 0
FT = "<UND>"
LT = "</UND>"
C_LT = "<CLR red='255' green='255' blue='255'>"
C_RT = "</CLR>"
For i = 0 To UBound(m)
j = m(i)
If (Len(j(0)) > iMxLblSz) Then
iMxLblSz = Len(j(0))
End If
Next

For i = 0 To UBound(n)
g = n(i)
If (Len(g(0)) > iMxLblSz) Then
iMxLblSz = Len(g(0))
End If
Next

For i = 0 To UBound(m)
j = m(i)
g = n(i)
k = iMxLblSz - Len(j(0))
If (g(0)=9999) Then
FindLabel = FindLabel+ j(0)
Else
FindLabel = FindLabel+ FT + j(0) + C_LT + String(k, "_") + C_RT + LT + vbNewLine + FormatNumber(g(0), 2, -1, 0, 0)
End If
rem 9999 - код неизмерения, пустое поле
Next
End Function
Предположим, что m - переменная, содержащая значения из первого поля, n - из второго
проверяешь значение на отличие от длины записи нуля, и, в зависимости от результата, выполняешь или построение дроби, или просто одного числа. Сам код расписывать не буду - попробуй сам. Тот, что приведен выше, содержит функцию определения длины строки.
Ответить

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

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

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