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

MI6UGRU

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

Глава 24: Использование окна MapBasic

Оператор Set Distance Units

Назначение:

Устанавливает единицы измерения расстояний, используемые в (гео)графических операциях.

Синтаксис:

Set Distance Units unit_name

ãäå

unit_name – имя единицы линейных измерений (например, "m" для метров).

Описание:

Оператор Set Distance Units устанавливает единицы линейных измерений. По умолчанию MapBasic использует мили ("mi"), то есть, если в Вашей программе нет оператора Set Distance Units, единицами измерения расстояния будут мили.

В следующих операторах и функциях будет использоваться установленная единица измерения расстояний, если единицы измерения специально не определяются в самих операторах или функциях. Например, в предложении Width оператора Create Object Вы можете задавать или не задавать единицы измерения ширины объекта. Если не зададите, оператор Create Object использует текущую установку единиц измерения расстояний.

Параметр unit_name должен иметь строковые значения, список которых приведен в таблице:

Значение

Единицы измерения расстояний

unit_name

 

"cm"

сантиметр;

 

"ft"

фут (также называется международным футом; один

международный фут примерно равен 30.48 сантиметрам);

 

"in"

äþéì;

 

"km"

километр;

 

"m"

ìåòð;

 

"mi"

ìèëÿ;

 

"mm"

миллиметр;

 

"nmi"

морские мили (1 морская миля равна 1852 метрам);

 

"survey ft"

топографический фут в США (использовался при обмере

территории США в 1927; один топографический фут примерно

 

 

равен 30.48006 сантиметрам);

“yd"

топографический фут в США (использовался при обмере

территории США в 1927; один топографический фут примерно

 

 

равен 30.48006 сантиметрам);

В MapInfo также используются единицы измерения "perch", "rood", "rod", "chain" и "link", не применяемые в России.

557

Глава 24: Использование окна MapBasic

Пример:

Set Distance Units "km"

Оператор Set Map

Назначение:

Изменяет настройки отображения объектов в окне Карты.

Синтаксис:

Основная часть оператора Set Map имеет следующий синтаксис:

Set Map

[ Window window_id ]

[ Center (longitude, latitude) [ Smart Redraw ] ] [ Clipping { Object clipper | Off | On } ]

[ Zoom { zoom_distance [ Units dist_unit ] | Entire [ Layer layer_id ] } ] [ Preserve { Scale | Zoom } ]

[ Display { Scale | Position | Zoom } ]

[ Order layer_id, layer_id [, layer_id ... ] ]

[ Pan pan_distance [ Units dist_unit ] { North | South | East | West } [ Smart Redraw ] ]

[ CoordSys ... ]

[ Area Units area_unit ]

[ Distance Units dist_unit ] [ XY Units xy_unit ]

[ Scale screen_dist [ Units dist_unit ] For map_dist [ Units dist_unit ] ] [ Redraw { On | Off } ]

LAYERCLAUSE

LAYERCLAUSE ...

ãäå

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

clipper – объектное выражение, определяющее фрагмент-врезку; zoom_distance – размер фрагмента, показанного в окне Карты;

layer_id – идентификатор слоя на Карте, число типа Smallint или строка с именем таблицы, соответствующей слою Карты;

pan_distance – сдвиг Карты;

area_unit – строка, задающая единицу измерения площади (список единиц смотрите в описании оператора Set Area Units);

paper_unit – строка, задающая "бумажную" единицу измерения (список единиц смотрите в описании оператора Set Paper Units);

distance_unit – строка, задающая единицу измерения расстояния (список единиц смотрите в описании оператора Set Distance Units);

xy_unit – строка, задающая единицу измерения X/Y-координат (например, "m" – метр или "degree" – градус);

558

Глава 24: Использование окна MapBasic

screen_dist è map_dist – задают масштаб Карты (например, screen_dist = 1 mm, map_dist = 1 km).

Предложение CoordSys задает координатную систему.

LAYERCLAUSE соответствует одному слою Карты и имеет следующий синтаксис:

[ Layer layer_id

[ Editable { On | Off } ]

[ Selectable { On | Off } ]

[ Zoom (min_zoom, max_zoom) [ Units dist_unit ] [ { On | Off } ] ] [ Arrows { On | Off } ]

[ Centroids { On | Off } ]

[ Default Zoom ]

[ Nodes { On | Off }] LABELCLAUSE

[ Display { Off | Graphic | Global } ]

[ Global Line... ]

[ Global Pen... ]

[ Global Brush... ]

[ Global Symbol... ]

[ Global Font... ]

]

ãäå

layer_id – идентификатор слоя Карты, число типа Smallint или строка с именем таблицы, соответствующей слою Карты;

min_zoom – минимальное значение для масштабного эффекта слоя; max_zoom – максимальное значение для масштабного эффекта слоя.

Предложение Line определяет стиль объектов "линия" и "полилиния".

Предложение Brush определяет стиль штриховки.

Предложение Pen определяет стиль линии контуров заштрихованных объектов.

Предложение Symbol определяет стиль символа.

Предложение Font определяет стиль шрифта текстовых объектов.

LABELCLAUSE задает настройку подписей слоя и имеет следущий синтаксис:

[ Label [ Line { Simple | Arrow | None } ]

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

[ Font... ]

[ Pen... ]

[ With label_expr ]

[ Parallel { On | Off } ] ]

[ Visibility { On | Off | Zoom(min_vis, max_vis ) [Units dist_unit ] } ] [ Auto [ { On | Off } ] ]

[ Overlap [ { On | Off } ] ]

[ Duplicates [ { On | Off } ] ]

559

Глава 24: Использование окна MapBasic

[ Max [ number_of_labels ] ] [ Offset offset_amount ]

[ Default ]

[ Object ID

[ Table alias ]

[ Visibility { On | Off } ]

[ Anchor (anchor_x, anchor_y ) ]

Text text_string

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

[ Font ... ]

[ Pen ... ]

[ Line { Simple | Arrow | None } ] [ Angle text_angle ]

[ Offset offset_amount ]

[ Callout (callout_x, callout_y ) ] } [ Object ... ]

]

ãäå

label_expr – выражение, используемое для подписывания объекта;

min_vis, max_vis – минимальное и максимальное значения для масштабного эффекта подписи;

dist_unit – строка с именем единицы измерения (например, “mi” для миль, “m” для метров; см. описание оператора Set Distance Units);

number_of_labels – целое число типа Integer, представляющее максимальное количество подписей, которое может MapInfo показать на слое (по умолчанию лимита нет);

offset_amount – целое число от 0 до 50, расстояние в точках от подписи до точки привязки на подписываемом объекте;

ID – целочисленный идентификатор изменяемой подписи (идентификатор подписи равен идентификатору строки, к которой присоединен подписываемый объект (это предложение генерируется автоматически при сохранении Рабочего Набора);

alias – псевдоним таблицы-компонента сшитой Карты (предложение Table alias порождает ошибку, если слой не является компонентом сшитой Карты).; anchor_x è anchor_y – координаты, задающие закрепленное положение подписи; text_string – строка с текстом подписи;

text_angle – угол поворота подписи в градусах;

callout_x è callout_y – координаты, определяеют конец указки при подписи.

Описание:

Оператор Set Map задает настройки для окна Карта. Этот оператор позволяет программе управлять отображением слоев Карты так же, как это может делать пользователь при

помощи команд MAPINFO ÊÀÐÒÀ > ÓПРАВЛЕНИЕ СЛОЯМИ, ÊÀÐÒÀ > ÏОКАЗАТЬ ПО-ДРУГОМУ,

ÊÀÐÒÀ > ÐЕЖИМЫ. Если параметр window_id не задан, то действие команды распространяется на самое верхнее окно Карты.

560

Глава 24: Использование окна MapBasic

Заметим, что оператор управляет Set Map настройками в окне Карты. Для изменения таких атрибутов, как размер окна и его расположение на экране, используется оператор Set Window.

Оператор Set Map может использоваться в файле Рабочего Набора, если в нем есть хотя бы одно окно Карты. Для примера Вы можете открыть окно Карты и сохранить Рабочий Набор (например, под именем MAPPER.WOR). Теперь откройте файл Рабочего Набора в любом текстовом редакторе и Вы увидите оператор Set Map, задающий те настройки, которые были ранее установлены в окне Карты.

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

Изменение изображения в окне Карты

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

Center

Предложение задает центр карты в окне. Например, город Нью-Йорк расположен приблизительно на 74 долготе и 41 широте. Следующий оператор Set Map помещает Нью-Йорк в центр окна Карты:

Set Map Center (-74.0, 41.0)

При этом широта и долгота должны задаваться в десятичных единицах, а не в градусах, минутах и секундах.

Выполнение оператора Set Map...Center ведет к полной перерисовке окна Карты, если в оператор не включено предложение Smart Redraw. Детали о предложении Smart Redraw смотрите ниже.

Pan

Предложение перемещает окно карты в заданном направлении. Например, следующий оператор перемещает Карту на 100 километров к северу:

Set Map Pan 100 Units ”km” North

Обычно, после выполнения оператора Set Map ... Pan изображение в окне Карты перерисовывается полностью. Если в оператор включено предложение Smart Redraw, то MapInfo будет обновлять только ту часть изображения, которая этого требует (обновление изображения в окне Карты будет происходить так, как, если бы пользователь использовал в окне инструмент Ладошка).

Set Map Pan 100 Units ”km” North Smart Redraw

Внимание: если используется предложение Smart Redraw, окно Карты передвигается шагами, кратными восьми пикселам. Из-за этого Карта может показываться не совсем так, как ожидалось. Например, передвигая Карту на Север на 100 км, Вы добьетесь только передвижения на 80 километров, из-за того, что 20 километров на экране занимают более восьми пикселов.

Scale

Изменяет маштаб показа Карты в окне. Например, следующий оператор изменяет увеличение Карты так, чтобы в 1 дюйме изображения было показано 10 миль Карты:

561

Глава 24: Использование окна MapBasic

Set Map Scale 1 Units ”in” For 10 Units ”mi”

Zoom

Определяет размер в ширину фрагмента Карты, показанного в окне. Например, следующий оператор Set Map показывает участок шириной в 100 километров (если текущими единицами расстояний в MapBasic сейчас являются "km"):

Set Map Zoom 100 Units ”km”

Предложение Zoom Entire Layer layer_id является эквивалентом команды

ÊÀÐÒÀ > ÏОКАЗАТЬ СЛОЙ ПОЛНОСТЬЮ в MapInfo. Если опустить из этого предложения слово "Layer", то будут полностью показаны все слои Карты.

Set

Map

Zoom

Entire Layer

2 '

Полностью

показать

2 ñëîé

Set

Map

Zoom

Entire

'

Полностью

показать

всю карту

Управление поведением Карты в окне

Следующие предложения определяют поведение Карты в окне.

Area Units

Предложение задает единицы измерения площади. Список возможных единиц приведен в описании оператора Set Area Units.

Set Map Area Units ”sq km”

Clipping

Предложение задает фрагмент-врезку в окне Карты. Операция соответствует действию в MapInfo команды КÀÐÒÀ > ÂЫБРАТЬ ОБЛАСТЬ ВРЕЗКИ. После назначения области врезки Вы можете управлять показом фрагмента-врезки операторами Clipping On или Clipping Off.

Set Map Clipping Object obj_variable_name

CoordSys...

Стандартное предложение задает в окне Карты систему координат и проекцию. Синтаксис смотирте в описании стандартного предложения CoordSys.

Замечание: Если оператор Set Map снабжен предложением CoordSys, то координатная система, установленная для прикладной программы, автоматически переназначается.

Display

Предложение Display выбирает, что показывать в левом нижнем углу активного окна Карты: размер (Display Zoom), масштаб (Display Scale) или положение курсора в десятичных единицах координат широта/долгота (Display Position).

Set Map Display Position

Distance Units

Предложение задает единицы измерения расстояний в окне "Линейка". Список единиц приведен в описании оператора Set Distance Units.

Set Map Distance Units ”km”

Preserve

Предложение определяет поведение Карты при изменении пользователем размеров окна. Предложение Preserve Scale задает показ Карты всегда в одном масштабе, независимо от изменений размеров окна. И, наоборот, Preserve Zoom задает увеличение или уменьшение масштаба карты в зависимости от увеличения или уменьшения окна,

562

Глава 24: Использование окна MapBasic

сохраняя в окне Карты фрагмент постоянного размера. Установки этого предложения такие же, как соответствующие режимы в диалоге, вызываемом командой КÀÐÒÀ >

ÏОКАЗАТЬ.

Redraw

Предложение управляет автоматической перерисовкой Карты в окне. Если программа выполнила оператор Set Map Redraw Off, то следующие операторы, изменяющие карту (такие как Set Map, Add Map Layer, Remove Map Layer), будут выполняться без автоматического обновления изображения в окне Карты. Теперь, после некоторых изменений, выполним оператор Set Map Redraw On, восстанавливающий режим автоматической перерисовки окна. В окне отобразятся все изменения, которые были выполнены "вслепую". Смотрите также описание оператора Set Event Processing.

XY Units

Предложение задает координатные единицы положения курсора, показываемые в левом нижнем углу окна Карты. Единицами могут быть градусы ("degree") для измерения широты и долготы или единицы измерения расстояния, например, метры ("m"):

Set Map XY Units ”m”

Изменение порядка слоев

Предложение Order задает порядок прорисовки слоев Карты на экране. Каждый параметр layer_num – номер слоя Карты. Единица соответствует самому верхнему слою Карты (который рисуется последним, поверх остальных). Косметический слой является специальным слоем и имеет номер слоя, равный 0 (нулю). Он рисуется всегда последним и его не нужно задавать в предложении Order. В следующем примере первый (верхний) слой Карты и второй (находящийся под ним) меняются местами. Косметический слой остается самым верхним.

Set Map Order 2, 1, 3, 4

Изменение поведения отдельного слоя

Предложение Layer управляет настройкой одного слоя. Так как окно карты обычно содержит несколько слоев, то и предложений Layer может быть несколько. Все другие предложения, стоящие в операторе Set Map за предложением Layer layer_id (до следующего Layer) являются подпредложениями, задающими настройки слоя layer_id.

Editable

В предложении Layer предложение Editable может установить режим изменяемости только для одного слоя. Если слой становится изменяемым, то он автоматически становится и доступным. Следующий оператор Set Map делает изменяемым только верхний некосметический слой:

Set Map

Layer 1 Editable On

Selectable

Предложение устанавливает для данного слоя режим доступности, т.е. разрешает выбирать на нем объекты такими инструментами как Стрелка. Доступными могут быть несколько слоев Карты. Следующий оператор Set Map делает доступным верхний некосметический слой, а следующие два – недоступными:

563

Глава 24: Использование окна MapBasic

Set Map

Layer 1 Selectable On

Layer 2 Selectable Off

Layer 3 Selectable Off

Zoom

Предложение задает пределы для масштабного эффекта, то есть режима показа слоя только в определенных пределах увеличения. Например, улицы города можно показывать только тогда, когда размер карты уменьшится до 10 км.

Set Map

Layer 1 Zoom (0, 10) Units ”km” On

Слово Zoom может содержать слово Off, отключающее масштабный эффект для слоя.

Изменение представления отдельного слоя

Arrows

Предложение управляет показом стрелок.

Centroids

Предложение управляет показом центроидов объектов.

Nodes

Предложение управляет показом узлов на объектах.

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

Set Map

Layer 1 Arrows On Centroids On Nodes On

Display

Предложение Display управляет показом слоя в окне Карты. Предложение Display Off отменяет показ слоя; Display Graphic показывает объекты слоя в собственном (сохраненным в таблице) оформлении; Display Global позволяет настраивать отдельные компоненты оформления объектов:

Global Line определяет стиль линейных объектов: линий и полилиний. Предложение Line имеет конструкцию, подобную Pen.

Global Pen задает стиль линий, окружающих замкнутые объекты. Global Brush задает стиль штриховки замкнутых объектов. Global Symbol задает стиль символов для точечных объектов. Global Font задает шрифт для текстовых объектов.

Следующий оператор разрешает показ объектов первого слоя в собственном стиле:

Set Map

Layer 1 Display Graphic

Следующий оператор устанавливает режим показа объектов первого слоя тонкими зелеными линиями, контурами и зеленой заливкой:

Set Map

Layer 1 Display Global

Global Line(1, 2, GREEN)

Global Pen (1, 2, GREEN)

Global Brush (2, GREEN, WHITE)

564

Глава 24: Использование окна MapBasic

Изменение режима подписывания отдельного слоя

Предложение Label задает режим подстановки и поведения подписей на слое. Предложение имеет следущие подпредложения:

Line

Определяет тип указки, которая сопровождает подпись при ее перемещении, или ее отсутствие. Вы можете задать Line Simple, Line Arrow или Line None. Например:

Set Map Layer 1

Label Line Arrow

Position

Управляет расположением подписи относительно центроида объекта, к которому она прикреплена. Например, следующий оператор располагает подписи сверху и справа от центроида:

Set Map Layer 1

Label Position Above Right

Font

Определяет шрифт подписи.

Pen

Задает стиль линии указки. Стиль линии указки имеет смысл для режимов Line Simple и Line Arrow, и когда пользователь сдвигает подпись с заданного положения:

Set Map Layer 1

Label Line Arrow

Pen( 2, 1, 255)

With

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

Set Map Layer 1

Label With Proper$(Cityname)

Parallel

Определяет, будет ли строка подписи линейного объекта параллельна подписываемой линии.

Set Map Layer 1

Label Parallel On

Visibility

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

Set Map Layer 1

Label Visibility Zoom (0, 2) Units ”km”

565

Глава 24: Использование окна MapBasic

Auto

Управляет автоматическим подписыванием. Предложение Auto Off отключает автоматические подписи, но остаются созданные вручную.

Overlap

Управляет режимом, разрешающим или запрещающим MapInfo рисовать пересекающиеся подписи.

Duplicates

Управляет режимом, разрешающим или запрещающим MapInfo дублировать подписи.

Max number_of_labels

Устанавливает максимальное число подписей, которое MapInfo может показать на этом слое. По умолчанию лимита нет.

Offset offset_amount

Задает отступ подписи от центроида. Параметр offset_amount может принимать значения от 0 до 50 шрифтовых точек. Если задать Offset 0, то подпись будет примыкать к центроиду. Если задать Offset 10, то подпись будет раполагаться на 10 точек в сторону. Отступ будет игнорирован, если расположение подписи будет задано в центре объекта (Position Center).

Следующий оператор задает расположение подписей справа и на 10 точек в сторону от центроида:

Set Map Layer 1

Label Overlap On Position Right Offset 10

Default

Восстанавливает все подписи на слое и удаляет все внесенные вручную подписи и изменения в автоматических. Пример:

Set Map Layer 1 Label Default

Object

Предложение позволяет задать отдельную подпись для индивидуального объекта. Например, если Вы изменили одну подпись в MapInfo и сохранили Рабочий Набор, то он будет содержать оператор Set Map со столькими предложениями Object, сколько подписей было индивидуально изменено.

Пример использования предложения Object Вы можете увидеть, если откроете такой Рабочий Набор в любом текстовом редакторе.

Настройки отдельного слоя, имеющие постоянный эффект

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

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

Если в операторе Set Map...Layer содержится предложение Default Zoom, MapInfo помещает в таблицу текущие значения увеличения и координат центральной точки.

566

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