Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_REF_7.pdf
Скачиваний:
25
Добавлен:
13.02.2015
Размер:
2.96 Mб
Скачать

Оператор Shade

Оператор Shade

Назначение

Создает тематический слой и добавляет его в окно Карты.

Синтаксис (вариант 1 8 способ диапазонов):

Shade [ Window window_id ]

{layer_id | layer_name } With expr

[ Ignore value_to_ignore ]

Ranges

[ Apply { Color | Size | All } ]

[ Use { Color | Size | All } [ Pen... ] [ Line... ] [ Brush... ] [ Symbol... ] ]

{[ From Variable float_array

Style Variable style_array ]

|

 

 

minimum : maximum [ Pen...

] [ Line...] [ Brush...

] [ Symbol...

]

[ , minimum : maximum [ Pen...

] [ Line...] [ Brush...

] [ Symbol...

] ... ] }

[ Default [ Pen... ] [ Line... ] [ Brush... ] [ Symbol... ]

]

 

Синтаксис (вариант 2 8 способ отдельных значений):

Shade

[ Window window_id ]

 

 

 

 

 

{ layer_id | layer_name }

 

 

 

 

 

With expr

 

 

 

 

 

 

 

[ Ignore value_to_ignore ]

 

 

 

 

 

Values const [ Pen...

]

[ Line...

]

[ Brush...

]

[ Symbol...

]

[ ,

const [ Pen...

]

[ Line...

]

[ Brush...

 

] [ Symbol...

] ... ]

[ Default [ Pen... ] [ Brush... ]

[ Symbol...

]

]

 

Синтаксис (вариант 3 8 метод плотности точек):

Shade [ Window window_id ] { layer_id | layer_name }

With expr

Density dot_value : dot_size [ Color color ]

Синтаксис (вариант 4 8 метод размерных символов):

Shade [ Window window_id ] { layer_id | layer_name }

With expr

Graduated min_value : symbol_size max_value : symbol_size

Symbol . . .

[ Inflect Symbol . . . ]

[ Vary Size By { “LOG” | “SQRT” | “CONST” } ]

Синтаксис (вариант 5 8 круговые диаграммы):

Shade [ Window window_id ]

{ layer_id | layer_name | Selection } With expr [ , expr . . . ]

[ Half ] Pie [ Angle angle ] [ Counter ]

 

Справочник MapBasic

581

Оператор Shade

[ Fixed ] [ Max Size chart_size [ Units unitname ]

[ At Value max_value [ Vary Size By {“LOG| SQRT| CONST” } ] ] ]

[ Border Pen . . . ]

[ Position [ { Left | Right | Center } ] [ { Above | Below | Center } ] ] [ Style Brush . . . [ , Brush . . . ] ]

Синтаксис (вариант 6 8 столбчатые диаграммы):

Shade [ Window window_id ]

{ layer_id | layer_name | Selection } With expr [ , expr . . . ]

{ Bar [ Normalized ] | Stacked Bar [ Fixed ] } [ Max Size chart_size [ Units unitname ]

[ At Value max_value [ Vary Size By {“LOG| SQRT| CONST” } ] ] ]

[ Border Pen . . . ]

[ Frame Brush . . . ]

[ Width value [ Units unitname ] ]

[ Position [ { Left | Right | Center } ] [ { Above | Below | Center } ] ]

[Style Brush . . . [ , Brush . . .] ] где

window_id – целочисленный идентификатор окна Карты;

layer_id – идентификатор слоя в окне Карты, от единицы и больше; layer_name – имя слоя в окне Карты;

expr – выражение, задающее условие выделения и раскраски, такое как имя колонки; value_to_ignore – величина, которая должна быть проигнорирована, т.е. не будет создано тематического объекта для строки, значение которой равно параметру value_to_ignore; обычно это 0, если выражение численное, или пустая строка, если выражение строковое;

float_array – численный массив типа Float, полученный оператором Create Ranges;

style_array – массив величин типа Pen, Brush или Symbol, полученный оператором Create Styles; const – численная или строковая константа или выражение, в котором не используется переменных;

minimum – минимальная величина для диапазона; maximum – максимальная величина для диапазона;

dot_value – число, соответствующее одной точке при использовании метода плотности точек; dot_size – размер одной точки в пикселах при использовании метода плотности точек;

angle – начальный угол для круговой диаграммы;

chart_size – число типа Float, представляющее максимальную высоту для круговых диаграмм или столбчатых диаграмм;

min_value и max_value – числа, соответствующие точкам в методе размерных символов; symbol_size – размер символа в пунктах, используемого в методе размерных символов; unitname – "бумажная" единица измерения (например, "in" – дюйм, "cm" – сантиметр).

Предложение Pen начинает стандартное предложение оператора для определения стиля контура для замкнутых объектов. Например, Pen(width, pattern, color ).

Предложение Line начинает стандартное предложение оператора для определения линии для объектов типа "линия", "полилиния" и "дуга". Предложение Line по строению идентично предложению Pen, за исключением начального ключевого слова Line.

582

Справочник MapBasic

Оператор Shade

Предложение Brush начинает стандартное предложение оператора для определения стиля штриха. Например, Brush(pattern, forecolor, backcolor ).

Предложение Symbol начинает стандартное предложение оператора для определения стиля символа точечного объекта. Например, Symbol(shape, color, size ).

Описание:

Оператор Shade используется для создания тематического слоя в окне Карты. Этот оператор позволяет программе создать тематическую Карту так же, как это может делать пользователь при помощи диалога команды КАРТА > СОЗДАТЬ ТЕМАТИЧЕСКУЮКАРТУ в MapInfo.

Правила создания тематической Карты читайте в документации MapInfo.

MapInfo может запоминать тип тематической Карты, помещая оператор Shade в файл Рабочего Набора, если в нем есть хотя бы одно окно Карты с тематическим слоем. Для примера Вы можете открыть окно Карты, выполнить команду КАРТА > СОЗДАТЬ ТЕМАТИЧЕСКУЮ КАРТУ и сохранить Рабочий Набор (например, под именем THEME.WOR). Теперь откройте файл Рабочего Набора в любом текстовом редакторе и Вы увидите оператор Shade, задающий те настройки слоя, которые были заданы в открытом ранее окне Карты. Вы можете копировать этот оператор из Рабочего Набора в свою программу. Если при тематическом картографировании было открыто окно MapBasic, то команда также будет запротоколирована оператором Shade.

Параметр window_id, задающий окно Карты, является необязательным. Если он опущен, то MapBasic создаст тематический слой в самом верхнем окне Карты.

Оператор Shade должен явно задать слой, на котором будет производиться условное выделение, даже если это единственный слой на Карте. Слой может задаваться номером (layer_id), причем первый номер соответствует самому верхнему некосметическому слою, слой под первым будет вторым, и т. д. Кроме того, слой может задаваться именем (например, "world").

Способ тематического оформления оператором Shade зависит от того, какое предложение следует за выражением expr. Предложение Ranges включается в оператор для создания Карты диапазонов, предложение Values – для Карты отдельных значений, предложение Density – для Карты плотности точек, предложение Graduated – для Карты размерных символов, а предложения Pie и Bar – для Карты с круговыми диаграммами или столбчатыми диаграммами.

Создание тематического слоя методом диапазонов

В первом варианте синтаксиса предложения From Variable и Style Variable используются для чтения заранее вычисленных значений, определяющих границы диапазонов и стили для их оформления. Значения для массивов переменных, имена которых задаются в этих предложениях, должны быть вычислены до оператора Shade с помощью операторов Create Ranges и Create Styles. Пример использования массивов в операторе Shade приводится в описании оператора Create Ranges.

Если оператор Shade строит тематический слой методом диапазонов (предложение Ranges) или отдельных значений (ключевое слово Values; смотрите описание ниже), то он может использовать предложение Default, позволяющее задать стиль оформления для объектов, которые не подходят ни для одного описания диапазонов или отдельных значений. То есть Вы можете задать единый стиль оформления для оставшихся объектов.

Справочник MapBasic

583

Оператор Shade

Всего может быть задано от двух до шестнадцати диапазонов. Каждое описание диапазона состоит из пары чисел (minimum и maximum), разделенных двоеточием и определяющих верхний и нижний предел диапазона, и следующими за ними описаниями стилей оформления объектов, принадлежащих этому диапазону. Если выражение expr для записи больше или равно minimum и меньше maximum, то эта запись принадлежит этому диапазону. Описания диапазонов в предложении Ranges разделяются друг от друга запятыми. В следующем примере используются значения из численной колонки "Население" из таблицы RUSSIA. На Карте выделяются три диапазона.

Open Table "RUSSIA"

Map From RUSSIA

Shade RUSSIA With Население

Ranges

4827000:29280000 Brush (2,0,201326591) ,

1783000: 4827000 Brush (8,0,16777215) ,

449000: 1783000 Brush (5,0,16777215)

При создании Карты диапазонов нужно задавать стиль раскраски и штриха предложением Brush( ). Для Карты отдельных значений, задавайте предложения Symbol( ). Линейные объекты раскрашиваются, используя предложение Line( ), а не Pen( ); синтаксис которых одинаков. (В операторе Shade предложение Pen управляет стилем контура замкнутых объектов.)

С помощью предложения Apply, Вы можете выбрать способ, которым будут выделены графические объекты на тематическом слое.

Предложение Apply

Эффект

Apply Color

Выделение производится только цветом, а размеры и другие

 

атрибуты, такие как размер символа и тип линии, будут такими же,

 

как на Карте.

Apply Size

Выделение производится только изменением размеров символов и

 

толщиной линии. Точечные объекты при этом не меняют свой

 

рисунок и раскраску, а линейные объекты – тип линиий и цвет.

Apply All

Все атрибуты будут меняться при условном выделении – рисунок

 

символа, его размер, тип линии, толщина линии, штриховка и

 

раскраска объектов.

По умолчанию используется режим, который устанавливается предложением Apply All. Предложение Use позволяет управлять тем, в каком объеме MapInfo применяет стилизацию объектов при раскраске диапазонов. В следующем примере показан смысл этого предложения. Пусть таблица WorldCap, содержащая точки, раскрашена без участия предложения Use.

Shade WorldCap With Cap_Pop Ranges

Apply All

0 : 300000 Symbol(35,YELLOW,9) ,

300000 : 900000 Symbol(35,GREEN,18) ,

900000 :20000000 Symbol(35,BLUE,27)

584

Справочник MapBasic

Оператор Shade

Врезультате тематическая Карта будет раскрашена звездочками (код 35) в соответствии с указаниями предложений Symbol( ): наименьшие объекты будут показаны желтыми звездочками в 9 точек, объекты среднего объема будут показаны зелеными звездочками в 18 точек и большие объекты будут показаны голубыми 27-точечными звездочками.

Вследующем примере добавлено предложение Use Size.

Shade WorldCap With Cap_Pop Ranges

Apply All

Use Size Symbol(34, RED, 24)

’ <<<<< Внимание!

0 : 300000 Symbol(35,YELLOW,9) ,

300000 : 900000 Symbol(35,GREEN,18) ,

900000 :20000000 Symbol(35,BLUE,27)

Обратите внимание на то, что Use Size вносит свой стиль символа (код 34 представляет кружок).

Теперь все символы будут показаны красными кружками; от группы трех последних предложений Symbol применяются только размеры (9, 18, 27 точки). MapInfo игнорирует остальные атрибуты (например, YELLOW, GREEN, BLUE). Тематическая карта отобразит красные кружки, поскольку предложение Use Size Symbol определяет красные кружки.

Если Вы зададите Use Color вместо Use Size, MapInfo будет использовать только цвета, заданные в последнем предложении Symbol. На Карте будут показаны желтые, зеленые и голубые кружочки размером в 24 точки.

Предложение Use All равносильно отсутствию предложения Use вообще.

Предложение Use действует только в паре с Apply All (либо Apply отсутствует вообще).

Создание тематического слоя методом отдельных значений

За ключевым словом Values (второй вариант синтаксиса) может следовать от одного до 255 описаний. Каждое состоит из уникального значения (строка или число) и описаний стилей оформления объектов, принадлежащих значению. Если выражение expr для записи равно одному из уникальных значений, определенных в операторе Shade, то объект, который присоединен к этой записи, будет оформлен соответственно описанию для этого значения. Список описаний разделяется запятыми.

Если оператор Shade имеет предложение Ranges или Values, то он может иметь и предложение Default, задающее единый стиль оформления объектов, которые попадают в группу "остальные", т. е. для них не выполняется условие тематического выделения.

В следующем примере таблица территорий Великобритании UK_SALES содержит колонку "Sales_Rep", заполненную фамилиями торговых представителей, действующих на территории Великобритании. Оператор Shade закрашивает каждое графство (область) в зависимости от того, какой торговый представитель его курирует. Так, территории, за которые отвечает Боб, будут закрашены одним цветом, а графства, в которых торгует Джон, другим и т.д.

Open Table "uk_sales"

Map From uk_sales

Справочник MapBasic

585

Оператор Shade

Shade 1 With Proper$(Sales_Rep)

Ignore ""

Values

"Alan" ,

"Amanda" ,

"Bob" ,

"Jan"

Создание тематического слоя методом плотности точек

За ключевым словом Density (третий вариант синтаксиса) должно следовать только одно описание dot_value :dot_size. Раскрашиваемая карта должна содержать области, которые будут заполняться точками. Например, каждая точка соответствует одной тысяче домов.

Для такой карты численное выражение expr вычисляет значение для каждой области слоя Карты и делит его на dot_value. Например, если для области значение выражения равно 100, а dot_value было задано равным 5, то MapBasic нарисует 20 точек в этой области.

Параметр dot_size определяет размер иллюстративной точки в пикселах от 1 до 4.

В следующем примере в таблице штатов STATES выделяется количество домовладений из колонки "Num_HH_90" в каждом штате методом плотности точек. Каждая точка имеет размер в 4 пиксела и представляет 60 000 домовладений.

Open Table "states"

Map From states

Shade states With Num_HH_90

Density 60000:4

Создание тематического слоя методом размерных символов

За ключевым словом Graduated (четвертый вариант синтаксиса) следует пара описаний типа value :symbol_size. Параметр value из первого описания соответствует минимальному значению, представляемому минимальным размером символа symbol_size. Параметр value из второго описания соответствует максимальному значению, представляемому максимальным размером символа symbol_size. Размер символов промежуточных значений MapInfo подбирает автоматически.

Предложение Symbol диктует, какой тип символа выбирается для выделения (кружок, звездочка и т. п.). Если оператор использует предложение Inflect Symbol, задающее второй вариант типа символа, то MapInfo обозначает этими символами объекты, имеющие отрицательное значение.

Следующий оператор создает тематический слой, отображающий доходы и убытки. Пункты, приносящие доход, обозначаются зелеными треугольниками, направленными вверх. Пункты, терпящие убытки, обозначаются красными треугольниками, направленными вниз.

Shade stores With Net_Profit

Graduated

0.0:0 15000:24 Symbol(36, GREEN, 24)

Inflect Symbol(37, RED, 24)

Vary Size By "SQRT"

586

Справочник MapBasic

Оператор Shade

Предложение Vary Size By управляет методом, которым размерные символы отражают разницу между значениями, которые они представляют. Если предложение Vary Size By не задано, то MapInfo использует метод "SQRT" (квадратный корень), который задает размер символа пропорциональным квадратному корню из выделяемого значения. При действии этого метода, если в одной записи значение в два раза больше соответствующего значения в другой записи, то и площадь, занятая на экране символом для первого значения будет в два раза больше площади символа, представляющего второе значение. Увеличение площади в два раза – это не то, что увеличение размера символа в точках. Увеличение размера символа в точках увеличивает и длину, и ширину; следовательно, площадь увеличивается в квадрате.

Создание тематического слоя методом круговых диаграмм

Ключевое слово Pie (пятый вариант синтаксиса) задает метод построения тематического выделения объектов путем создания для каждого объекта маленького графика типа круговая диаграмма. При этом в предложении With через запятую должны быть заданы два или более выражений, значения которых для каждого объекта будут показаны круговой диаграммой.

Диаграммы могут иметь форму полного круга, и могут иметь форму половины окружности, если перед словом Pie поставить слово Half.

Стартовый угол для диаграммы Вы можете задать в предложении Angle. По умолчанию – 180 градусов.

Если используется ключевое слово Counter, то сектора в диаграмме располагаются от стартового угла против часовой стрелки.

Предложение Max Size определяет максимальный размер круговой диаграммы в "бумажных" единицах. Предложение Fixed задает рисование круговых диаграмм в кругах одинакового размера.

Следущий оператор задает выделение диаграммами одинакового размера, в четверть дюйма:

Shade sales_95 With phone_sales, retail_sales

Pie Fixed

Max Size 0.25 Units ”in”

Чтобы круговая диаграмма могла устанавливать размер самостоятельно, применяйте вместо слова Fixed предложение At Value. Например, следущий оператор создает тематическую Карту с изменяющимся размером круговой диаграммы. Если сумма значений в записи равна 85 000, то Круговая диаграмма будет иметь радиус 2 см; записи с меньшими суммами породят меньшие диаграммы.

Shade sales_95 With phone_sales, retail_sales

Pie

Max Size 2 Units ”cm” At Value 85000

Предложение Vary Size By можно включить для выбора метода градуировки размера круговых диаграмм. Это предложение описано выше в разделе для размерных символов.

Предложение Position задает место относительно объекта, где помещается диаграмма. По умолчанию диаграммы помещаются в центр объекта.

В предложении Style можно задать раскраску для секторов диаграммы. Каждое подпредложение Brush должно соответствовать выражению из списка в предложении With. Если стили не заданы, то MapInfo использует значение типа Brush, сохраненное пользователем.

Справочник MapBasic

587

Оператор Shade

Следующий оператор создает тематический слой, в котором круговые диаграммы для двух значений помещаются выше центра объекта.

Shade sales_93

With phone_sales, retail_sales

Pie Angle 180

Max Size 0.5 Units "in" At Value 1245000

Vary Size By "SQRT"

Border Pen (1, 2, 0)

Position Center Above

Style Brush(2, RED, 0), Brush(2, BLUE, 0)

Создание тематического слоя методом столбчатых диаграмм

Ключевое слово Bar (шестой вариант синтаксиса) задает метод построения тематического выделения объектов путем создания для каждого объекта маленькой столбчатой диаграммы. При этом в предложении With через запятую должны быть заданы два или более выражений, значения которых для каждого объекта будут показаны диаграммы.

Если Вы использовали ключевое слово Stacked перед словом Bar, то MapInfo размещает столбики стопкой, иначе столбики располагаются в ряд. Если слово Stacked отсутствует, то можно задать слово Normalized и тогда столбики могут иметь независимые шкалы.

Если задано ключевое слово Stacked, то его можно дополнить словом Fixed, определяющим, что все стопки будут иметь одинаковый размер. Если слово Fixed не задано, то MapInfo задает размер каждой стопки пропорционально сумме отображаемых значений.

Предложение Frame Brush задает стиль раскраски фона графика.

Предложение Position управляет как ориентацией столбчатых диаграмм, так и ориентацией диаграммы по отношению к центроиду объекта. Если в предложении Position заданы слова Left или Right, то столбцы горизонтальны, в других случаях они вертикальны.

Предложение Style содержит перечисленные через запятую стили Brush. Каждый из стилей штриховки соответствует выражению из предложения With.

В следующем примере создается тематический слой на Карте, и выделение производится столбчатыми диаграммами, расположенными над центроидами объектов.

Shade sales_93

With phone_sales, retail_sales

Bar

Max Size 0.4 Units "in" At Value 1245000

Vary Size By "CONST"

Border Pen (1, 2, 0)

Position Center Above

Style Brush(2, RED, 0), Brush(2, BLUE, 0)

Смотрите также:

Create Ranges, Create Styles, Map, Set Legend, Set Map, Set Shade

588

Справочник MapBasic

Функция Sin( )

Функция Sin( )

Назначение:

Вычисляет синус.

Синтаксис:

Sin(num_expr)

где

num_expr – численное выражение угла в радианах.

Величина, полученная в результате:

Вещественное число. Величина типа Float.

Описание:

Функция Sin( ) возвращает синус числа, полученного в результате вычисления выражения num_expr. Угол должен задаваться в радианах. Диапазон возвращаемого значения находится между единицей и минус единицей включительно.

Для перевода градусов в радианы число необходимо умножить на число DEG_2_RAD. Для обратного конвертирования используется коэффициент RAD_2_DEG. Чтобы Ваша программа могла использовать эти коэффициенты конвертирования, она должна содержать оператор

Include "MAPBASIC.DEF":

Пример:

Include "mapbasic.def"

Dim x, y As Float

x = 30 * DEG_2_RAD y = Sin(x)

'

' y равен 0.5, поскольку синус от 30 градусов равен 0.5

'

Смотрите также:

Acos( ), Asin( ), Atn( ), Cos( ), Tan( )

Справочник MapBasic

589

Функция Space$( )

Функция Space$( )

Назначение:

Возвращает строку, состоящую из пробелов.

Синтаксис:

Space$(num_expr)

где

num_expr – целочисленное выражение.

Величина, полученная в результате:

Строка. Величина типа String.

Описание:

Функция Space$( ) возвращает строку из пробелов. Количество пробелов определяется выражением num_expr.

Если num_expr принимает значение меньше или равное нулю, функция возвратит пустую строку.

Пример:

Dim filler As String filler = Space$(7)

' filler будет равна строке " "

' (7 пробелов)

 

 

Note "Здравствуйте," + filler + "господа!"

 

'Будет показано

сообщение "Здравствуйте,

господа!"

Смотрите также:

String$( )

590

Справочник MapBasic

Функция Sqr( )

Функция Sqr( )

Назначение:

Вычисляет квадратный корень.

Синтаксис:

Sqr(num_expr)

где

num_expr – численное выражение, результатом которого должно быть положительное число.

Величина, полученная в результате:

Вещественное число. Величина типа Float.

Описание:

Функция Sqr( ) возвращает квадратный корень от числа, полученного в результате вычисления выражения num_expr. Это число должно быть большим или равным нулю.

Извлечение квадратного корня эквивалентно возведению числа в степень 0.5. Соответственно, Sqr(n)=n ^ 0.5. Причем надо отметить, что MapBasic быстрее вычисляет функцию, а не возведение в степень 0.5.

Пример:

Dim n As Float

n = Sqr(25)

' n равно 5.

Справочник MapBasic

591

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]