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

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

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

Сообщение oleg » 10 мар 2007, 15:00

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

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

Спасибо.

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

Сообщение oleg » 11 мар 2007, 12:04

[Npp] & vbLF & [Z]

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

Сообщение oleg » 11 мар 2007, 15:47

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


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

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


??

подскажите, пожалуйста...

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

Сообщение SAA66 » 12 мар 2007, 12:23

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

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

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 » 13 мар 2007, 14:26

ЗдОрово. Спасибо большое!

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

Сообщение SAA66 » 13 мар 2007, 18:53

:) Со всей душой, обращайтесь.

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

Сообщение Каминский Вадим » 24 авг 2007, 13:22

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

"<UND>" & [Name1] & "</UND>" & vbNewLine & [Name2]

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

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

Сообщение oleg » 18 дек 2008, 14:19

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

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

\подписывается текущая и планируемая характеристика территории\

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

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

Сообщение Каминский Вадим » 18 дек 2008, 16:06

Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.

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

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

Сообщение oleg » 18 дек 2008, 17:13

Каминский Вадим писал(а):Разнесите лейбелинг на классы (SQL) и для каждого класса создайте свои правила.
:oops: ок

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

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

Сообщение SAA66 » 18 дек 2008, 17:48

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

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

\подписывается текущая и планируемая характеристика территории\
Несколько выше по теме в листинге скрипта есть условная конструкция, её можно использовать для разбраковки.

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

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

Сообщение oleg » 19 дек 2008, 11:52

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

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

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

Сообщение SAA66 » 22 дек 2008, 04:08

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

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»

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

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