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

Оператор Create ButtonPads As Default

Оператор Create ButtonPads As Default

Назначение:

Восстанавливает стандартные инструментальные панели в их начальном положении.

Синтаксис:

Create ButtonPads As Default

Описание:

Оператор убирает все инструментальные панели, построенные приложением, и восстанавливает три стандартные панели в их прежнем виде: Операции, Пенал и Программы.

Использовать оператор Create ButtonPads As Default надо осторожно, так как удаляются и те панели, которые были построены другими приложениями MapBasic.

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

Alter Button, Alter ButtonPad, Create ButtonPad

Справочник MapBasic

115

Оператор Create Cartographic Legend

Оператор Create Cartographic Legend

Новый оператор Create Cartographic Legend позволяет создать и отобразить стиль картографических легенд, также как и тематических легенд для активного окна карты. Каждый стиль картографической и тематической легенды будет связан только с одним окном карты, так что одновременно может быть открыто несколько окон легенды.

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

Ранее в легенда в MapInfo Professional имела вид одного плавающего окна, в котором могло отобразиться только содержимое тематического слоя для активного окна карты. Новое окно легенды размещается теперь вместо текущего окна легенды; таким образом, текущее окно легенды и его функции до сих пор возможны, и вызывается это программным способом, используя существующие операторы MapBasic (например, Create Legend, Set Legend, и др...)

Синтаксис:

Create Cartographic Legend

[ From Window map_window_id ] [ Behind ]

[ Position ( x , y ) [ Units paper_units ] ] [ Width win_width [ Units paper_units ] ] [ Height win_height [ Units paper_units ] ] [ Window Title { legend_window_title }

[ ScrollBars { On | Off } ]

[ Portrait | Landscape | Custom ]

[ Default Frame Title { def_frame_title } [ Font... ] } ]

[ Default Frame Subtitle { def_frame_subtitle } [ Font... ] } ] [ Default Frame Style { def_frame_style } [ Font... ] } ]

[ Default Frame Border Pen [ [ pen_expr ]

Frame From Layer { map_layer_id | map_layer_name

[ Using

[ Column { column | object } ] [ Label { expression | default } ]

[ Position ( x , y ) [ Units paper_units ] ] [ Title { frame_title [ Font... ] }

[ SubTitle { frame_subtitle [ Font... ] } ] [ Border Pen pen_expr ]

[ Style [ Font...] [ Norefresh ]

[ Text { style_name } { Line Pen... | Region Pen... Brush... | Symbol Symbol... } | Collection [Symbol ...] [ Line Pen ... ] [ Region Pen... Brush ...] } ]

Предложение Style и ключевое слово NoRefresh позволяют создавать собственные разделы, которые не будут перерисовываться при обновлении легенды. Если ключевое слово NoRefresh используется в предложении Style, то таблица не проверяется на предмет стилей. Вместо этого предложение Style будет содержать Ваш собственный список определений для стилей, используемых в разделе легенды. Это делается с предложением Text и соответствующими

116

Справочник MapBasic

Оператор Create Cartographic Legend

предложениями Line, Region или Symbol. Объекты типа "группа точек" здесь определяются как точечные объекты.

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

map_window_id - это цельночисленный идентификатор окна, который Вы можете получить при вызове функций FrontWindow() и WindowId( ).

x - определяет требуемое расстояние от верхнего края рабочего стола MapInfo до верхнего угла окна легенды.

y - определяет требуемое расстояние от левого края рабочего стола MapInfo до левого угла окна легенды.

paper_units - это строковая величина, выраженная в бумажных единицах измерения (например “cm” для сантиметров).

win_width - это ширина окна легенды.

win_height - это требуемая высота окна легенды.

legend_window_title - это строковое выражение, соответствующее заголовку окна легенды, по умолчанию это “Legend of xxx” где xxx это заголовок окна карты.

def_frame_title - это строковая величина, определяющая заголовок раздела легенды по умолчанию. Эта величина может включать специальный символ “#”, который будет замещаться именем текущего слоя.

def_frame_subtitle - это строковая величина, определяющая подзаголовок раздела легенды по умолчанию. Эта величина может включать специальный символ “#”, который будет замещаться именем текущего слоя.

def_frame_style - это строковая величина, которая указывает на тип каждого объекта в каждом разделе. Символ ”#” будет замещаться именем текущего слоя. Символ % будет замещаться словами “Line”, “Point, “Region”, которые будут соответствовать типу географическизх объектов. Например, “% of #” будет соответствовать тексту “Region of States” для слоя states.tab.

pen_expr - это выражение Pen, соответствующее MakePen( ширина, стиль, цвет ). Если по умолчанию атрибуты линии для рамки определены, то они и будут атрибутами линии для рамки раздела легенды. Если предложение, определяющее атрибуты линии для рамки легенды существует, то эти атрибуты и будут использоваться вместо атрибутов, заданных по умолчанию.

map_layer_id или map_layer_name определяют слой карты; это может быть целая величина Smallint (например, используйте 1 для определения самого верхнего слоя, не считая косметического) или строковая величина, соответствующая имени таблицы, отображенной на карте. Для тематического слоя необходимо определить map_layer_id.

frame_title - это строковая величина, определяющая заголовок раздела легенды. Если эта величина определена, то именно она будет использоваться вместо имени, задаваемого по умолчанию величиной def_frame_title.

frame_subtitle это строковая величина, определяющая подзаголовок раздела легенды. Если эта величина определена, то именно она будет использоваться вместо имени, задаваемого по умолчанию величиной def_frame_subtitle.

Справочник MapBasic

117

Оператор Create Cartographic Legend

Column – имя атрибутивной колонки из раздела слоя таблицы, или колонка object (означает, что стили легенды базируются на уникальном стиле). По умолчанию – это object.

Label -это выражение или значение, принятое по умолчанию.

style_name - это строковая величина, которая указывает к какому типу объектов относится географический объект: символу, линии, или полигону.

Описание:

Как минимум, требуется задать одно предложение Frame.

Все предложения, относящиеся ко всей легенде (scrollbars, width, и др.) должны соотноситься с первым предложением Frame.

Предложение From Layer должно бать первым предложением после Frame.

Легенда размещается после окна тематической карты.

Предложение Position контролирует положение окна легенды на рабочем столе. Верхний левый угол рабочего стола MapInfo имеет позицию 0, 0. Предложения Width и Height контролируют размер окна легенды. При позиционировании и указании размеров окна используются бумажные единицы, такие, как “in” (дюймы) или “cm” (сантиметры). MapBasic по умолчанию использует дюймы; в программе MapBasic можно изменить единицы измерения, используя Set Paper Units. Оператор Create Cartographic Legend может переопределить единицы измерения, для этого надо включить подпредложение Units, используемое в предложениях Position, Width или Height.

Используйте предложение ScrollBars чтобы показать или скрыть линейку прокрутки в окне карты.

Portrait или Landscape описывают ориентировку разделов легенды в окне. Книжная ориентировка - это Portrait. Альбомная ориентировка - это Landscape.

Если указано Custom, то Вы можете задать Ваше собственное предложение Position для позиционирования раздела.

Предложение Position определяет позиционирование раздела, если определено предложение Cus tom.

Предложения Position, Title, SubTitle, Border Pen и Style для разделов легенды используются только для слоев карты. Они не используются для тематических слоев. Для тематических слоев вся необходимая информация задаётся автоматически при их создании.

Предложение Font определяет стиль текста. Если по умолчанию заголовок раздела, подзаголовок или имя стиля объекта имеют определенный шрифт, то этот же шрифт по умолчанию будет использоваться и для раздела легенды. Если на уровне раздела определены предложения, описывающие заголовок, подзаголовок и стоиль объекта, и в этих предложениях используется предложение Font, то будет использоваться шрифт, заданный этим предложением. Если ни на каком уровне шрифт не определен, то будет применяться текущий шрифт с размером букв 10, 9 и 8 для заголовка, подзаголовка и имени стиля соответственно.

Предложение Style и ключевое слово NoRefresh позволяют Вам создавать собственные разделы легенды, которые не будут изменяться при обновлении легенды. Если ключевое слово NoRefresh используется в предложении Style, то в таблице не будет производиться поиск стилей. Вместо этого, предложение Style должно содержать Ваш список определений для стилей, которые отобразятся в разделе легенды. Это достигается заданием предложения Text и соответствующих предложений

118

Справочник MapBasic

Оператор Create Cartographic Legend

Line, Region или Symbol.

Пример:

Include ”C:\Program Files\MapInfo\MapBasic\mapbasic.def”

 

Open Table ”C:\Program

 

Files\MapInfo\Professional\Data\USA\States.tab”

 

As states Interactive

 

Open Table ”C:\Program

 

Files\MapInfo\Professional\Data\USA\City_125.tab”

 

As cities Interactive

 

Open Table ”C:\Program

 

Files\MapInfo\Professional\Data\USA\Us_hiway.tab”

 

As hiway Interactive

 

Map From hiway, cities, states

 

Create Cartographic Legend

 

From Window FrontWindow()

 

Behind

 

Position (5, 5)

 

Width 5

 

Height 3

 

Window Title ”Legend of cities,hiway,states Map”

 

ScrollBars On

 

Portrait

 

Default Frame Title ”Legend Title”

 

Default Frame Subtitle ”Legend SubTitle”

 

Default Frame Style ”frame style”

 

Font (”Arial”, 10, 12, BLACK, BLUE)

 

Default Frame Border Pen (2,50, BLACK)

 

Frame From Layer 1

 

Title ”Layer1” Font (”Helv”, 10, 20, YELLOW, BLUE)

 

SubTitle ”Layer1 Sub”Font (”Helv”, 3, 10, RED, 100)

 

Border Pen (3, 50, RED)

 

Style Font (”Arial”, 30, 10, RED, YELLOW)

 

Text ”layer1 style1” Line Pen (1, 10, BLACK)

 

Text ”layer1 style2” Region Pen (1, 10, Blue)

 

Brush (5, 10, Red)

 

Text ”layer1 style3” Symbol (35, RED, 36)

 

Frame From Layer 2

 

Title ”Layer2”

 

Справочник MapBasic

119

Оператор Create Cartographic Legend

SubTitle ”Layer2 Sub”

Border Pen (2, 3, BLUE)

Style Font (”Arial”, 10, 16, BLUE, RED) Norefresh

Text ”layer2 style1” Line Pen (1, 100, Blue)

Text ”layer2 style2” Region Pen (1, 10, RED)

Brush (5, 10, BLUE)

Text ”layer2 style3” Symbol (45, BLACK, 24)

Frame From Layer 3

Title ”Layer3”

SubTitle ”Layer3 Sub”

Border Pen (1, 10, RED)

Style Font (”Arial”, 10, 10, BLACK, RED) Norefresh

Text ”layer3 style1” Line Pen (2, 5, Red)

Text ”layer3 style2” Region Pen (1, 10, YELLOW)

Brush (5, 10, Red)

Text ”layer3 style3” Symbol (52, Blue, 18)

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

Set Cartographic Legend, Alter Cartographic Frame, Add Cartographic Frame, Remove Cartographic Frame, Create Legend, Set Window, WindowInfo()

120

Справочник MapBasic

Оператор Create Cutter

Оператор Create Cutter

Назначение

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

Синтаксис

Create Cutter Into Target

Описание

Перед использованием Create Cutter, болжны быть выбраны один или более объектов полилиний и должен существовать изменяемый объект. Это можно сделать командой ОБЪЕКТЫ > ВЫБРАТЬ ИЗМЕНЯЕМЫЙ ОБ ЕКТ, или использованием оператора Set Target. Объекты полилинии содержащиеся в выборке должны быть представлены одним, непрерывным объектом, без разрывав и самопересечений.

Полилиния должна пересекать МОП(минимальный описывающий прямоугольник) изменяемого объекта, который в свою очередь должен соответствовать требованиям операции разрезания. Полилиния, таким образом, сама не пересекает изменяемый объект. Например, изменяемый объект представлен серией островов (Гавайских) и полилиния может использоваться для разделения островной гряды на 2 части, при этом не касаясь ни одного отдельного острова. Если МОП изменяемого объекта не пересекает полилинию, то тогда такой объект будет удален из списка изменяемых объектов.

После выделения изменяемых объектов, рассчитывается минимальный описывающий прямоугольник всех этих объектов, сам МОП представляет простанство, которое будет разделено. Затем полилиния продолжается, если необходимо, так что опа попадает на территорию МОП. Это достигается так: берется направление между двумя последними точками на каждом конце полилиниии в этом декартовом направлении протягивается полилиния, пока она не пересечется с МОП. Протянутая таким образом полилиния разделяет пространство изменяемых объектов на две части. В результате будет создан и возвращен объект Область, представляющий одну из этих двух часей.

Этот оператор будет возвращать обработанное множество изменяемых объектов и новый обрезанный объект Область. Этот объект область будет вставлен в таблицу с изменяемыми объектами (которая должна быть изменяемой). Исходный объект(ы) полилиния останется, но перестанет быть выделенным. Выделенным станет новый объект Область.

Внимание: Обрезанный объект останется в слое с изменяемыми объектами. Можно удалить обрезанный объект вручную из изменяемого слоя.

Пример

Open Table "C:\MapInfo_data\TUT_USA\USA\STATES.TAB" Open Table "C:\MapInfo_data\TUT_USA\USA\US_HIWAY.TAB" Map from States, Us_hiway

select * from States where state = "NY" Set target On

select * from Us_hiway where highway = "I 90" Create Cutter Into Target

Справочник MapBasic

121

Оператор Create Cutter

Objects Split Into Target

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

Set Target

122

Справочник MapBasic

Функция CreateCircle( )

Функция CreateCircle( )

Назначение:

Возвращает объект "окружность".

Синтаксис:

CreateCircle(x, y, radius)

где

x – X-координата центра окружности (или широта), действительное число; y – Y-координата центра окружности (или долгота), действительное число; radius – действительное число, назначающее радиус окружности.

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

Величина типа Object.

Описание:

Функция CreateCircle(_) возвращает графический объект типа "окружность".

Параметры x и y задают координаты центра окружности в той координатной системе, которая была объявлена MapBasic ранее. (Смотрите описание оператора Set CoordSys.) Если система не объявлялась, то координаты будут принимать значения широты и долготы. При этом надо учесть, что MapBasic игнорирует координатную систему самого окна Карты.

Параметр radius назначается в тех единицах измерения, которые были назначены MapBasic до выполнения этой функции. (Смотрите описание оператора Set Distance Units.) Если единицы не были объявлены, то радиус будет измеряться в милях.

Линия и заливка создаваемой окружности будут создаваться в соответствии с выбором стилей линии и штриховки в операторе Set Style, который выполняется до функции CreateCircle(_). Вы можете также воспользоваться для создания объекта типа "окружность" оператором Create Ellipse, в котором могут быть предложения Pen и Brush, для определения стилей линии и штриховки.

Графический объект, созданный функцией CreateCircle(_), может быть присвоен объектной переменной, которая задает значение для уже существующей строки таблицы (оператор Update) или вновь созданной (оператор Insert).

Замечание: Перед созданием объекта в окне Отчета не забудьте выполнить оператор Set CoordSys Layout.

Ошибки:

Функция вернет код ошибки ERR_FCN_ARG_RANGE, если значение аргумента выходит за пределы, заданные при его определении.

Пример 1:

В примере используется оператор Insert для создания новой строки в таблице SITIES. Функция CreateCircle(_) используется в теле оператора Insert для создания объекта "окружность", данные которого будут помещены в этой строке.

Open Table "sities.tab"

Insert Into sities (obj)

Values ( CreateCircle( 72.5, 42.4, 20) )

Справочник MapBasic

123

Функция CreateCircle( )

Пример 2:

В следующем примере используется таблица TOWERS, которая имеет три колонки: "Xcoord", "Ycoord" и "Radius". Колонки "Xcoord" и "Ycoord" содержат значения долготы и широты, где находятся радиостанции, а колонка "Radius" – значения радиусов областей их вещания.

Оператор Update использует функцию CreateCircle(_) для построения окружностей для каждой строки таблицы. После выполнения оператора каждой строке таблицы TOWERS будет присоединен соответствующий объект.

Open Table "towers"

Update towers

Set obj = CreateCircle(xcoord, ycoord, radius)

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

Create Ellipse, Insert, Update

124

Справочник MapBasic

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