Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

65SUPRU

.pdf
Скачиваний:
13
Добавлен:
13.02.2015
Размер:
6.17 Mб
Скачать

Оператор Create PrismMap

Описание

Оператор Create PrismMap создает окно Карты(призмы. С помощью карты(призмы можно отображать несколько переменных для одного объекта. Например, цвет, ассоциированный с полигоном, может иметь тематическое значение одной колонки, а высота призмы может отражать значение другой колонки. Оператор Create PrismMap соответствует команде КАРТА > СОЗДАТЬ КАРТУ(ПРИЗМУ.

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

Дополнительное предложение window_id определяет, какая карта послужит основой Карты(призмы; если предложение window_id отсутствует, MapBasic создаст призмы для самого верхнего окна Карты. Â îператорå Create PrismMap указываетñÿ, какой слой надо использовать, даже если окно Карты имеет только один слой. Слой может быть иäåнтифицирован по номеру (layer_id), где самый верхний слой карты имеет layer_id, равный 1, следующий слой имеет layer_id, равный 2, и т.д. В то же время оператор Create PrismMap может идентифицировать слой карты по имени (например, “world”).

Каждый оператор Create PrismMap должен определять предложение выражения expr. MapInfo оценивает это выражение для каждого объекта в таблице, из которой строятся призмы; обрабатывая действия оператора Create PrismMap, MapInfo выбирает стиль отображения каждого объекта, основываясь на значении записи expr. Выражение обычно включает в себя имя одной или более колонок из таблицы.

Пример

Open Table "STATES.TAB" Interactive

Map From STATES

Create PrismMap From Window FrontWindow() STATES With

Pop_1980 Background RGB(192,192,192)

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

Функция PrismMapInfo() Оператор Set PrismMap

287

Оператор Set PrismMap

Оператор Set PrismMap

Назначение

Изменяет настройки существующего окна Карты(призмы.

Синтаксис

Set PrismMap

[Window window_id ]

[ Camera [ Zoom factor | Pitch angle | Roll angle | Yaw angle | Elevation angle Position (x,y,z) | FocalPoint (x,y,z) ] ]

[ Light [ Position (x,y,z) | Color lightcolor ] ] [ Scale grid_scale ]

[ Background backgroundcolor ] [ Label With infotips_expr ]

[ Refresh ]

window_id ( идентификатор окна карты, которое содержит слой поверхности. Если такой слой не найден, появится сообщение об ошибке.

mapper_creation_string определяет командную строку, в которой задается текстура поверхности.

Camera определяет позицию и ориентацию камеры.

angle ( угол в градусах. Горизонтальный угол (измеряется в диапазоне 0(360 градусов) определяет вращение карты вокруг центральной точки поверхности. Вертикальный угол изменяется в диапазоне 0(90 и измеряет наклон карты от начальной точки.

Pitch настраивает вращение камеры вокруг оси X, при этом точкой вращения считается центральная (начальная) точка камеры.

Roll настраивает вращение камеры вокруг оси Z, при этом точкой вращения считается центральная (начальная) точка камеры.

Yaw настраивает вращение камеры вокруг оси Y, при этом точкой вращения считается центральная (начальная) точка камеры.

Elevation настраивает вращение карты вокруг оси X, при этом точкой вращения считается фокальная точка камеры.

Position определяет позицию камеры или источника света

FocalPoint определяет фокальную точку камеры или источника света

Orientation определяет для камеры значение параметров ViewUp, ViewPlane и Clipping Range (используется для инерции зрительного восприятия). backgroundcolor ( цвет, используемый для фона и он определяемый функцией RGB.

infotips_expr G выражение, используемое для всплывающей подсказки InfoTips.

Refresh восстанавливает текстуру из исходных таблиц.

Описание

Изменяет настройки уже созданной карты(призмы.

Пример

Здесь мы изменим разрешение окна карты(призмы по осям X и Y, масштаб по оси Z (< 1) и изменим цвет фона на желтый.

288

Оператор Set PrismMap

Dim win3D as Integer

Create PrismMap Resolution(75,75) Resolution(100,100) Scale 2 Background RGB(255,0,0)

win3D = FrontWindow()

Set PrismMap Window win3D Resolution(150,100) Scale 0.75 Background RGB(255,255,0)

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

Оператор Create PrismMap

Функция PrismMapInfo()

289

Функция PrismMapInfo( )

Функция PrismMapInfo( )

Назначение

Возвращает настройки окна Карты(призмы.

Синтаксис

PrismMapInfo( window_id , attribute ) window_id ( целое, идентификатор окна.

attribute ( целочисленный код, определяющий тип возвращаемых данных.

Возвращаемые значения

Вещественные, логические или строковые в зависимости от параметра атрибута.

Описание

Функция PrismMapInfo() возвращает информацию об окне Карты(призмы.

Параметр window_id определяет, какое окно Карты(призмы обрабатывается функцией. Чтобы получить идентификатор окна, вызовите функцию

FrontWindow() сразу же после открытия окна или вызовите функцию WindowID() в любой момент после создания окна.

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

коды определены в файле MAPBASIC.DEF. 1

Атрибут

Возвращаемое значение

PRISMMAP_INFO_SCALE

Вещественное, масштабный

 

фактор Карты(призмы.

PRISMMAP_INFO_BACKGROUND

Целое, цвет фона (см. функцию

 

RGB).

PRISMMAP_INFO_LIGHT_X

Вещественное, координата X

 

источника освещения.

PRISMMAP_INFO_LIGHT_Y

Вещественное, координата Y

 

источника освещения.

PRISMMAP_INFO_LIGHT_Z

Вещественное, координата Z

 

источника освещения.

PRISMMAP_INFO_LIGHT_COLOR

Целое, цвет источника освещения

 

(см. функцию RGB).

PRISMMAP_INFO_CAMERA_X

Вещественное, координата X

 

камеры.

PRISMMAP_INFO_CAMERA_Y

Вещественное, координата Y

 

камеры.

PRISMMAP_INFO_CAMERA_Z

Вещественное, координата Z

 

камеры.

290

Функция PrismMapInfo( )

PRISMMAP_INFO_CAMERA_FOCAL_X

Вещественное, координата X

 

фокальной точки камеры.

PRISMMAP_INFO_CAMERA_FOCAL_Y

Вещественное, координата Y

 

фокальной точки камеры.

PRISMMAP_INFO_CAMERA_FOCAL_Z

Вещественное, координата Z

 

фокальной точки камеры.

PRISMMAP_INFO_CAMERA_VU_1

Вещественное, первое значение

 

параметра ViewUp.

PRISMMAP_INFO_CAMERA_VU_2

Вещественное, второе значение

 

параметра ViewUp.

PRISMMAP_INFO_CAMERA_VU_3

Вещественное, третье значение

 

параметра ViewUp.

PRISMMAP_INFO_CAMERA_VPN_1

Вещественное, первое значение

 

параметра ViewPlane.

PRISMMAP_INFO_CAMERA_VPN_2

Вещественное, второе значение

 

ViewPlane.

PRISMMAP_INFO_CAMERA_VPN_3

Вещественное, третье значение

 

параметра ViewPlane.

PRISMMAP_INFO_CAMERA_CLIP_NEAR

Вещественное, ближняя режущая

 

плоскость камеры.

PRISMMAP_INFO_CAMERA_CLIP_FAR

Вещественное, дальняя режущая

 

плоскость камеры.

Пример

Распечатываем все стандартные переменные, определенные для окна Карты( призмы:

include "Mapbasic.def"

Print "PRISMMAP_INFO_SCALE: " + PrismMapInfo(FrontWindow(), PRISMMAP_INFO_SCALE)

Print "PRISMMAP_INFO_BACKGROUND: " + PrismMapInfo(FrontWindow(), PRISMMAP_INFO_BACKGROUND)

Print "PRISMMAP_INFO_UNITS: " + PrismMapInfo(FrontWindow(), PRISMMAP_INFO_UNITS)

Print "PRISMMAP_INFO_LIGHT_X : " + PrismMapInfo(FrontWindow(), PRISMMAP_INFO_LIGHT_X )

Print "PRISMMAP_INFO_LIGHT_Y : " + PrismMapInfo(FrontWindow(),

PRISMMAP_INFO_LIGHT_Y )

Print "PRISMMAP_INFO_LIGHT_Z: " + PrismMapInfo(FrontWindow(),

PRISMMAP_INFO_LIGHT_Z)

Print "PRISMMAP_INFO_LIGHT_COLOR: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_LIGHT_COLOR)

291

Функция PrismMapInfo( )

Print "PRISMMAP_INFO_CAMERA_X: " + PrismMapInfo(FrontWindow(),

PRISMMAP_INFO_CAMERA_X)

Print "PRISMMAP_INFO_CAMERA_Y : " + PrismMapInfo(FrontWindow(),

PRISMMAP_INFO_CAMERA_Y )

Print "PRISMMAP_INFO_CAMERA_Z : " + PrismMapInfo(FrontWindow(),

PRISMMAP_INFO_CAMERA_Z )

Print "PRISMMAP_INFO_CAMERA_FOCAL_X: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_FOCAL_X)

Print "PRISMMAP_INFO_CAMERA_FOCAL_Y: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_FOCAL_Y)

Print "PRISMMAP_INFO_CAMERA_FOCAL_Z: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_FOCAL_Z)

Print "PRISMMAP_INFO_CAMERA_VU_1: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_VU_1)

Print "PRISMMAP_INFO_CAMERA_VU_2: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_VU_2)

Print "PRISMMAP_INFO_CAMERA_VU_3: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_VU_3)

Print "PRISMMAP_INFO_CAMERA_VPN_1: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_VPN_1)

Print "PRISMMAP_INFO_CAMERA_VPN_2: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_VPN_2)

Print "PRISMMAP_INFO_CAMERA_VPN_3: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_VPN_3)

Print "PRISMMAP_INFO_CAMERA_CLIP_NEAR: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_CLIP_NEAR)

Print "PRISMMAP_INFO_CAMERA_CLIP_FAR: " +

PrismMapInfo(FrontWindow(), PRISMMAP_INFO_CAMERA_CLIP_FAR)

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

Оператор Create PrismMap

Оператор Set PrismMap

292

Новые функции обработки объектов

Оператор Objects Disaggregate

Оператор Objects Disaggregate

Назначение

Разбивает объект на составные части.

Синтаксис

Objects Disaggregate [IntoTable name] [ All | Collection ]

[ Data column_name = expression ]

[ , column_name = expression ... ] ]

Описание

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

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

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

Если коллекция содержит регион, то в зависимости от переключателя All будут созданы новые объекты(полигоны; если она включает сложные полилинии, то из каждой отдельной полилинии будет создан отдельный объект; если в коллекции содержится группа точек, то будут созданы новые объекты(точки, по одной точке для каждого узла из группы. Все другие типы объектов, включая точки, линии, дуги, прямоугольники, скругленные прямоугольники и эллипсы, которые уже являются простыми объектами, этой операцией не изменяются.

Если регион содержит единственный полигон, то на выходе он останется без изменений. Если сложная полилиния содержит одну полилинию, то на выходе она останется без изменений. Если группа точек содержит единственный узел, то выходящий объект преобразуется в точечный объект, содержащий этот узел. Дуги, прямоугольники, скругленные прямоугольники, эллипсы на выходе остаются без изменений. Другие типы объектов (например, текстовые) не обрабатываются командой Objects Disaggregate, при попытке это сделать выдается сообщение об ошибке.

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

294

Оператор Objects Disaggregate

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

Если не задается Into Table, то в качестве таблицы для выходящих данных используется текущая редактируемая таблица. Входящие для обработки командой объекты берутся из текущей выборки.

Дополнительное предложение Data определяет, какие значения хранятся в колонках изменяемых объектов. Предложение Data может содержать список присваèваемых значений, разделенных точкой с запятой. Все значения, которые могут быть присвоены, описаны в таблице ниже:

Выражение

Действие

col_name = col_name

Не изменяет величины, хранящиеся в

 

колонке.

col_name = column_value

Хранит указанные величины в колонке.

 

Если колонка строковая, то значение тоже

 

будет строковым; если колонка числовая, то

 

значение будет числовым.

col_name = Proportion( col_name )

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

Предложение Data может содержать назначения для каждой колонки в таблице. Если предложение Data содержит назначения только для части колонок, пустые значения будут присвоены тем колонкам, которые не поименованы в предложении

Data.

Если Вы пропускаете предложение Data целиком, все колонки будут пустыми, содержащими нулевые значения для числовых колонок и пустые значения для строковых колонок.

Пример

Open Table "STATES.TAB" Interactive Map From STATES

Set Map Layer 1 Editable On select * from STATES

Objects Disaggregate Into Table STATES

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

Оператор ObjectsCreate

295

Оператор Objects Snap

Оператор Objects Snap

Назначение

Выполняет коррекцию объектов из данной таблицы и осуществляет различные топологические операции над объектами, включая совмещение узлов разных объектов, прилегающих друг к другу и генерализацию/разреживание узлов. Таблица может быть и Selection. Все объекты, подвергающиеся действию оператора, должны быть или все линейными (то есть, полилинии или дуги) или все замкнутые (то есть, полигоны, прямоугольники, скругленные прямоугольники или эллипсы). Смешанные линейные и замкнутые объекты не могут обрабатываться этим оператором, будет выдано сообщение об ошибке.

Синтаксис

Objects Snap From tablename

[Tolerance [Node node_distance] [Vector vector_distance] [Units unit_string] ]

[Thin [Bend bend_distance] [Distance spacing_distance] [Units unit_string] ] [Cull Area cull_area [Units unit_string] ] ]

Описание

Объекты из исходной таблицы tablename проверяются на предмет различных проблем и несоответствий, таких, как самопересечения. Самопересекающиеся полигоны в форме "восьмерки" будут превращаться в два полигона, соприкасающиеся в одной точке. Полигоны, содержащие острые выступы, будут обработаны так, что эти шипы будут удалены. Результирующий, исправленный объект помещается вместо исходного объекта. Если существуют наложения полигонов друг на друга, то такие наложения будут удалены. Удаление наложений состоит в удалении наложенной части. Эта часть ( "избыточный полигон" ( образует с одним из двух исходных объектов регион. Такой регион составлен из "избыточного полигона" и непересекающейся части исходного полигона.

Значения Node и Vector Tolerances предназначены для совмещения узлов из разных близлежащих объектов и удаляют мелкие пустоты и мелкие пустоты между двумя объектами. Субпредложение Units предложения Tolerances позволяет задать единицы измерения расстояния (например, "km" для километров), применяемых к значениям Node и Vector. Если субпредложение Units отсутствует, то значения Node и Vector будут интерпретироваться в текущих значениях измерения расстояния MapBasic. По умолчанию MapBasic использует мили; для изменения единиц измерения смотрите оператор Set Distance Units.

Node ( это радиус вокруг конечных узлов полилиний. Если узлы из других объектов попадают в этот радиус, то один или два узла перемещаются так, что попадают в одну точку (т.е. они совмещаются). Vector ( это радиус, используемый для промежуточных точек полилиний. Его назначение тоже, что и у радиуса Node, кроме того, что он используется только для промежуточных точек полилиний. Обратите внимание, что для полигонов не определено понятие конечных точек (значение Node не используется) ввиду их замкнутости. Для них используется только величина Vector, которая применяется ко всем узлам объекта. Для полилиний значение Node должно быть больше или равно значению Vector. Значения Bend и Distance могут использоваться для удобства операций разреживания узлов и обобщения контуров. Они уменьшают число узлов,

296

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