![](/user_photo/2706_HbeT2.jpg)
65SUPRU
.pdf![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_291x1.jpg)
Оператор 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_292x1.jpg)
Оператор 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_293x1.jpg)
Оператор 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_294x1.jpg)
Функция 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_295x1.jpg)
Функция 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_296x1.jpg)
Функция 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
Новые функции обработки объектов
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_298x1.jpg)
Оператор 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_299x1.jpg)
Оператор 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
![](/html/2706/631/html_xdojkd2u7P._zMG/htmlconvd-uRjnN_300x1.jpg)
Оператор 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