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

Оператор Create Menu Bar

Оператор Create Menu Bar

Назначение:

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

Синтаксис (вариант 1):

Create Menu Bar As

{ menu_name | ID menu_number }

[ , { menu_name | ID menu_number } ... ]

Синтаксис (вариант 2)

Create Menu Bar As Default

где

menu_name – заголовок стандартного для MapInfo меню или заголовок специально определенного меню, которое было ранее создано при помощи оператора Create Menu;

menu_number – номер стандартного меню (например, 1 для меню ФАЙЛ).

Описание:

Оператор Create Menu Bar говорит MapInfo, какие меню должны быть помещены в строку меню и в каком порядке. Если оператор задает не полный список стандартных меню, то результатом будет строка меню с сокращенным списком. Если в список меню включено одно или несколько специально определенных имен меню (они создаются при помощи оператора Create Menu), то результатом будет строка меню с расширенным списком.

Меню может задаваться именем (например, "Файл"), как стандартное меню, так и специально определенное. Каждое стандартное меню также имеет номер (идентификатор), который может использоваться при задании. Например, меню ФАЙЛ имеет идентификатор 1.

Список стандартных имен меню MapInfo приводится в описании оператора Alter Menu.

После того как система меню была изменена, Вы можете вернуть ее к стандартному виду оператором:

Create Menu Bar As Default

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

При формировании своей строки меню существует строгая рекомендация: первым определять меню ФАЙЛ, а вторым меню ПРАВКА. Эти два меню являются стандартным элементом интерфейса Windows, отсутствие этих меню может дезориентировать работу пользователя. Также желательно самым правым меню ставить меню СПРАВКА.

Пример 1:

Строка меню сокращается до четырех заголовков: "Файл", "Правка", "Анализ" и меню, соответствующее открытому окну ("Карта", "График" и т. п.).

Create Menu Bar As

"Файл", "Правка", "Анализ", "WinSpecific"

Пример 2:

В стандартной строке меню такие меню как КАРТА и СПИСОК не показываются, если окна Карты или Списка соответственно не являются активными. Следующий оператор помещает эти меню в строку

146

Справочник MapBasic

Оператор Create Menu Bar

меню так, что они не зависят от того, есть ли на экране окна Карты и Списка. Но при этом, если пользователь откроет меню КАРТА, когда на экране нет активного окна Карты, то он увидит, что все команды этого меню недоступны (показаны серым шрифтом). Аналогично работает меню СПИСОК.

Create Menu Bar As

"Файл", "Правка", "Запрос", "Карта", "Список"

Пример 3:

В следующем фрагменте оператор Create Menu создает пользовательское меню ДАННЫЕ, которое можно будет использовать в операторе Create Menu Bar.

Declare Sub AddSub

Declare Sub EditSub

Declare Sub DelSub

Create Menu "Данные" As "Добавить" Calling addsub, "Правка" Calling editsub, "Удалить" Calling delsub

Create Menu Bar As

"Файл", "Правка", "Данные"

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

Alter Menu Bar, Create Menu, Menu Bar

Справочник MapBasic

147

Оператор Create MultiPoint

Оператор Create MultiPoint

Назначение

Объединяет множество точек в один объект. Все точки имеют один и тот же символ. Объект Multipoint отображается в окне Списка как одна запись.

Синтаксис:

Create Multipoint

[ Into { Window window_id | Variable var_name } ] [ num_points ]

( x1, y1) ( x2, y2) [ ... ] [ Symbol . . . ]

window_id - идентификатор окна

var_name - имя переменной объекта

x y - координаты точки

Предложение Symbol определяет стиль объекта. Внимание: один символ используется для всех точек, содержащихся в объекте Multipoint.

num_points - число точек в объекте Multipoint.

В настоящее время MapInfo Professional использует четыре варианта синтаксиса для определения символа, используемого для точек. Необходима поддержка всех этих типов для объектов Multipoint:

Синтаксис 1 (Синтаксис MapInfo 3.0 Symbol)

Symbol ( shape, color, size )

shape - целое, имеющее значение 31 или более, определяющее, какой символ используется из стандартного набора символов MapInfo. Для создания невидимого символа используйте значение 31. Стандартный набор символов включает символы от 31 до 67, но пользователь может настроить свой собственный набор символов, используя приложение Symbol.

color - целое, значение цвета RGB; смотрите функцию RGB( ).

size - целое, размер символа в пунктах (точках), от 1 до 48.

Синтаксис 2 (Синтаксис TrueType Font)

Symbol ( shape, color, size, fontname, fontstyle, rotation )

shape - целое, имеющее значение 31 или больше, определяющее, какой символ из шрифтов TrueType используется. Для создания невидимого символа используйте значение 31.

color - это целое, значение цвета RGB; смотрите функцию RGB( ).

size целое, размер символа в пунктах (точках), от 1 до 48.

fontname строка, имя шрифта TrueType (например, "Wingdings").

fontstyle - целое, код, контролирующий атрибуты, например, курсив.

rotation - вещественное, угол поворота символа, в градусах.

Синтаксис 3 (Синтаксис Custom Bitmap File)

Symbol ( filename, color, size, customstyle )

filename строка длиной до 31 символа, имя файла bitmap. Файл должен находиться в папке CUSTSYMB (если не применен оператор Reload Symbols для указания другой папки).

color целое, цвет RGB; смотрите функцию RGB( ).

148

Справочник MapBasic

Оператор Create MultiPoint

size - целое, размер символа в пунктах (точках), от 1 до 48.

customstyle целочисленный код, контролирующий цвет и атрибуты фона. См. таблицу ниже.

Синтаксис 4

Symbol symbol_expr

symbol_expr это выражение для Symbol, которое может быть или именем переменной символа или функцией, которая возвращает значение символа, например, MakeSymbol.

Пример

Create Multipoint 7 (0,0) (1,1) (2,2) (3,4) ( 1,1) (3, 2) (4,3)

Справочник MapBasic

149

Оператор Create Object

Оператор Create Object

Назначение:

Создает один или более регионов при использовании операторов Buffer, Merge, Intersect, Union или Voronoi.

Синтаксис:

Create Object As { Buffer | Union | Intersect | Merge | ConvexHull } From fromtable

[ Into { Table intotable | Variable varname } ] [ Width bufferwidth [ Units unitname ] ]

[ Resolution smoothness ]

[ Data column = expression [, column = expression ... ] ] [ Group By column | RowID } ] ]

где

fromtable – имя открытой таблицы, содержащей один или более графических объектов; intotable – имя открытой таблицы, в которую помещается новый объект (или объекты); varname – имя объектной переменной;

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

unitname – имя единицы измерения расстояния (например, "km" – километры);

smoothness – число сегментов для окружности, задающих гладкость границы буферной зоны, число от 2 до 100;

column – имя колонки в таблице.

Описание:

Create Object As { Buffer | Union | Intersect | Merge | ConvexHull | Voronoi } From fromtable

[ Into { Table intotable | Variable varname } ]

[ Width bufferwidth [ Units unitname ] ] ] [Type { Spherical | Cartesian } ] ] [ Resolution smoothness ]

[ Data column = expression [ , column = expression . . . ] ] [ Group By { column | RowID } ]

fromtable имя открытой таблицы, содержащей один или более графических объектов

intotable имя открытой таблицы, где будут храниться новые объекты

varname имя переменной Object где будет храниться новый объект

bufferwidth число, определяющее смещение (ширину), используемое в операции Buffer; если число отрицательное, и если исходный объект замкнутый, то результирующий буфер будет меньше чем исходный объект. Если ширина отрицательна и объект линейный (линия, полилиния, дуга) или точка, то будет использоваться абсолютная величина ширины для создания положительного буфера.

unitname имя единиц измерения расстояния (например, “km” для километров)

smoothness целое, от 2 до 100, определяющее число сегментов в окружности для операции Buffer

column имя колонки в таблице

Оператор Create Object создает один или более новых объектов регионов, при применении

150

Справочник MapBasic

Оператор Create Object

географических операций (Buffer, Merge, Intersect, Union , ConvexHull или Voronoi ) к одному или большему числу существующих объектов.

Предложение Into определяет, где будут храниться результаты. Для сохранения результатов в таблице, укажите Into Table. Для сохранения результатов в переменной Object, укажите Into Vari able. Если пропущено предложение Into, результаты сохранятся в исходной таблице. Внимание: если используется предложение Group By чтобы объединить данные, то надо сохранить результаты в таблице раньше чем в переменной.

Ключевое слово, которое следует за ключевым словом As определяет, какой тип объектов будет создан. Укажите Buffer для генерации буферных регионов; подробности смотрите в тексте ниже. Укажите Intersect для создания объекта, представляющего пересечение других объектов (например, если два региона пересекаются, то пересечение - это область, покрывающая сразу эти два объекта).

Укажите Merge для создания объекта, представляющего комбинированную площадь из объектовисточников. Операция Merge создает результирующий объект, который содержит все полигоны, относящиеся к исходным объектам. Если исходные объекты перекрываются, то операция слияния (merge) не удаляет перекрытия. Таким образом, если объединяются два перекрывающихся региона (каждый из которых содержит один полигон), то окончательный результат будет в виде одного региона, состоящего из двух перекрывающихся полигонов. Вообще-то в этом случае можно вместо этого оператора использовать Union.

Укажите Union для осуществления операции комбинирования, которая удаляет любые области перекрытия. Если осуществляется операция объединения (union) двух перекрывающихся регионов (каждый из которых содержит один полигон), то результат будет в виде объекта-региона, содержащего один полигон.

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

Оператор Create Objects As Union похож на оператор Objects Combine. Objects Combine будет удалять исходные объекты и вставлять новый комбинированный объект. Create Objects As Union будет только вставлять новый комбинированный объект, не стирая исходные объекты. Комбинирование с использованием оператора Target и различных таблиц возможно только при применении Objects Combine. Оператор Combine Objects использующий функциональность Column допустим только при использовании Create Objects As Union вместе с предложением Group By.

Если оператор Create Object As Union не включает в себя предложение Group By, MapInfo Professional создает один комбинированный объект для всех объектов в таблице. Если этот оператор включает в себя предложение Group By, то должно быть задано имя колонки в таблице, что позволит MI Pro сгруппировать исходные объекты в соответствии с содержанием колонки и создать комбинированный объект для каждой группы объектов.

Если Вы определяете предложение Group By, MI Pro сгруппирует все записи имеющие одинаковые значения и осуществит операцию (слияния) в группу.

Если Вы определяете предложение Data, MI Pro осуществит объединение данных. Например, если осуществляется слияние или объединение, может возникнуть желание использовать предложение Data, чтобы присвоить значение данным основываясь на функциях объединения Sum( ) или Avg( ).

Справочник MapBasic

151

Оператор Create Object

Используйте Type для определения метода, по которому подсчитывается ширина буферной зоны вокруг объекта. Значение может быть Spherical или Cartesian. Обратите внимание, что если Coordsys в таблице это NonEarth, то вычисления будут осуществлены на плоскости, независимо от того, какие настройки сделаны, и если Coordsys в таблице это Долгота/Широта, то вычисления будут осуществлены на сфере, независимо от того, какие настройки сделаны.

Операция Convex Hull для оператора Create Object

Create Object As { Buffer |Union | Intersect | Merge | ConvexHull }

Оператор Create Object создает один или более новых объектов-регионов при выполнении географических операций (Buffer, Merge, Intersect, Union или ConvexHull) на одном или большем числе существующих объектов.

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

Точки, используемые для оконтуривающего региона могут быть любыми узлами их Regions, Polylines или Points в таблице From. Если оператор Create Object As ConvexHull не включает в себя предложение Group By, MI Pro создаст один оконтуривающий полигон. Если оператор включает в себя предложение Group By указывающее имя колонки в таблице, то MI Pro группирует исходные объекты исходя из содержания указанной колонки, затем создаст оконтуривающий полигон для каждой группы объектов. Если оператор включает в себя предложение Group By RowID, то MI Pro создаст один оконтуривающий полигон для каждого объекта в исходной таблице.

Создание буферных зон

Если оператор Create Object осуществляет операцию Buffer, то он может включать в себя предложения Width и Resolution. Предложение Width определяет ширину буферной зоны. Добавочное подпредложение Units позволяет указать имя единиц измерения расстояния (например, “km” для километров) относящихся к предложению Width. Если предложение Width не включает в себя подпредложение Units, то ширина буферной зоны будет интерпретироваться в MapBasic в текущих единицах измерения. По умолчанию, MapBasic использует мили для измерения расстояний; чтобы изменить стандартные единицы измерения, смотрите описание оператора Set Distance Units.

Дополнительное подпредложение Type позволяет указать тип алгоритма вычисления расстояний при создании буферной зоны. Если используется тип алгоритма Spherical, то вычисления будут на сфере, а данные должны быть в Долготе/Широте. Если используется тип алгоритма Cartesian (декартовый), то измерения расстояний производятся на плоскости. Если предложение Width не включает в себя подпредложение Type, то по умолчанию используется алгоритм типа Spherical (подсчет расстояний на сфере). Если данные в проекции Долгота/Широта, то используется подсчет расстояний на сфере, независимо от подпредложения Type. Если данные в картографических проекциях, то используются декартовые вычисления на плоскости, независимо от установок подпредложения Type.

Параметр smoothness позволяет определить число сегментов из которых состоит каждая окружность на концах буферной зоны. Стандартное значение smoothness равно 12. Если задать величину smooth

152

Справочник MapBasic

Оператор Create Object

ness большую чем 12, то получится более сглаженная буферная зона. Обратите внимание, что чем больше значение smoothness, тем дольше работает оператор Create Object, и больше дискового простренства занимает результат.

Если оператор Create Object As Buffer не включает в себя предложение Group By, то MI Pro создаст один буферный регион. Если оператор включает в себя предложение Group By, которое является именем колонки в таблице, MI Pro сгруппирует исходные объекты в соответствии с содержанием колонки, затем создаст по одному буферному региону для каждой группы объектов. Если оператор включает в себя предложение Group By RowID, то MI Pro создаст по одному буферному региону для каждого объекта в исходной таблице.

Полигоны Вороного, предложение Voronoi

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

Пример

Следующий пример показывает слияние объектов-регионов из таблицы Parcels и хранит результирующие регионы в таблице Zones. Если оператор Create Object включает в себя предложение Group By, то MapBasic сгруппирует регионы таблицы Parcel, а затем произведет слияние для каждой группы. Таким образом, таблица Zones будет иметь по одному объекту-региону для каждой группы объектов в таблице Parcels. Каждая группа будет состоять из тех частей, которые имеют одинаковые значения в колонке zone_id.

Следующая за оператором Create Object колонка, подсчитывающая число однородных объектов в таблице Zones будет показывать сколько элементов сливаются вместе, образую одну зону. Колонка zonevalue в таблице Zones будет показывать сумму элементов, которые включает в себя эта зона.

Open Table ”PARCELS”

Open Table ”ZONES” Create Object As Merge

From PARCELS Into Table ZONES Data parcelcount=Count(*),zonevalue=Sum(parcelvalue) Group By zone_id

Следующий пример создает объект-регион, представляющий зону шириной в четверть мили вокруг выбранных объектов. Объект-буфер хранится в переменной Object corridor. Последующие операторы Update или Insert могут затем копировать объект в таблицу.

Dim corridor As Object Create Object As Buffer

From Selection

Into Variable corridor Width 0.25 Units ”mi”

Resolution 60

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

create object as convex hull from state_caps into table dump_table

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

Buffer( ), Objects Combine, Objects Erase, Objects Intersect, ConvexHull( )

Справочник MapBasic

153

Оператор Create Pline

Оператор Create Pline

Назначение:

Создает объект типа "полилиния".

Синтаксис:

Create Pline

[ Into { Window window_id | Variable var_name } ] num_points

(x1, y1) (x2, y2) [ ... ] [ Pen... ]

[ Smooth ]

где

window_id – идентификатор окна, целое число; var_name – имя объектной переменной;

num_points – определяет число узлов для полилинии; x, y – координаты для одного узла.

Слово Pen начинает стандартное предложение для назначения стиля линии объекта.

Описание:

Результатом действия оператора Create Pline является новый объект типа "полилиния". Вы можете сразу задать в операторе Create Pline все узлы полилинии. Вы можете также

использовать двухшаговую тактику: сначала постройте объект без узлов оператором Create Pline, и далее, используя оператор Alter Object, задайте все необходимые атрибуты полилинии.

Если оператор Create Pline использует предложение Into Variable, то созданный объект "полилиния" присваивается объектной переменной. Если после слов Into Window указывается окно, объект помещается на подготовленное место в окне (например, на изменяемый слой). Если предложения Into вообще нет в операторе, MapBasic попробует создать полилинию в активном окне; если это невозможно (например, поверх всех окон лежит окно Графика), то объект не будет создан. Параметры x и y являются координатами в той системе координат, которая была объявлена до оператора Create Pline. (Смотрите описание оператора Set CoordSys.) Если система не объявлялась, то координаты будут принимать значения широты и долготы. При этом надо учесть, что MapBasic игнорирует координатную систему самого окна Карты.

Если объект создается для окна Отчета, параметры x и y интерпретируются как координаты на листе в объявленных ранее единицах измерения листа. (Смотрите описание оператора Set Paper Units.) Так X-координата – это расстояние от левого края листа до точки, а Y-координата – расстояние от верхнего края листа.

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

Если в операторе не участвует предложение Pen, то оператор Create Arc использует установку соответствующего режима для стиля линии в MapInfo (стиль линии можно изменить командой НАСТРОЙКА > СТИЛЬ ЛИНИЙ).

Одна полилиния может состоять как из одной ломаной, так и из нескольких фрагментов. Однофрагментный объект типа "полилиния" может содержать до 32 763 узлов. Для многофрагментных объектов лимит узлов меньше: на каждую ломаную линию надо убавлять по три узла.

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

Alter Object, Insert, Pen, Update

154

Справочник MapBasic

Функция CreatePoint( )

Функция CreatePoint( )

Назначение:

Возвращает объект типа "точка".

Синтаксис:

CreatePoint(x, y)

где

x – X-координата точки (или широта), вещественное число; y – Y-координата точки (или долгота), вещественное число.

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

Точка. Величина типа Object.

Описание:

Функция CreatePoint(_) возвращает объект типа "точка".

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

Точечный объект будет создаваться в соответствии с установкой стиля символа для точечных объектов в операторе Set Style, который надо выполнить до функции CreatePoint(_). Вы можете также воспользоваться для создания объекта оператором Create Point, в котором используется предложение Symbol для определения стиля символа точки.

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

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

Пример 1:

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

Open Table "sites.tab"

Insert Into sites (obj)

Values ( CreatePoint( 72.5, 42.4) )

Пример 2:

В следующем фрагменте используются колонки "Xcoord" и "Ycoord" таблицы SITES, как содержащие координаты для точечных объектов, которые с помощью оператора Update и функции CreatePoint(_) будут присоединены к таблице SITES: каждый к соответствующей строке.

Open Table "sites"

Update sites

Set obj = CreatePoint(xcoord, ycoord)

Справочник MapBasic

155

Функция CreatePoint( )

Пример 3:

В приведенном выше примере подразумевается, что колонки "Xcoord" и "Ycoord" содержат значения широты и долготы. Файлы точек MapInfo для DOS содержат координаты в миллионных долях градуса, а не в целых градусах. Кроме того, в большинстве файлов точек MapInfo для DOS принято направление отсчета долгот с Востока на Запад. Поэтому, чтобы оператор Update мог корректно преобразовать файл точек из DOS в Windows, нужно разделить обе координаты на миллион и умножить "Xcoord" на минус единицу:

Update sites

Set obj = CreatePoint( xcoord/1000000,ycoord/1000000)

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

Create Point, Insert, Update

156

Справочник MapBasic

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