Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 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

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

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

Пример 1:

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

Create Menu Bar As

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

Пример 2:

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

138

Справочник 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

139

Оператор Create Object

Оператор Create Object

Назначение:

Создает один или несколько объектов типа "область", используя географические операции (Buffer,

Merge, Intersect и Union).

Синтаксис:

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 создает одну или более областей на базе уже существующих объектов, используя географические операции (Buffer, Merge, Intersect, Union и ConvexHull).

Предложение Into задает, куда будет помещен объект, полученный в результате. Предложение Into Table задает таблицу, в которой будет помещен результат, Into Variable – имя объектной переменной, которой будет присвоен результат после выполнения оператора. Если предложение Into опущено, то объект будет помещен в таблицу fromtable. Если Вы зададите в предложении Group By обобщение данных, то результат нужно помещать в таблицу, а не в переменную. Это необходимо потому, что переменная типа Object может иметь в качестве значения только один объект, тогда как в результате операции слияния может получиться несколько областей.

Следующее за словом As ключевое слово диктует тип географической операции. Со словом Buffer оператор создает буферную зону. Результат оператора со словом Intersect есть пересечение объектов.

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

140

Справочник MapBasic

Оператор Create Object

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

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

Если задано предложение Group By, то MapInfo группирует все записи по одинаковым значениям и применяет операцию объединения к группе.

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

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

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

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

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

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

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

Справочник MapBasic

141

Оператор Create Object

буферных областях. Стандартное значение параметра smoothness равно 12, то есть вместо окружности рисуется двенадцатиугольник. Увеличив значение параметра, Вы можете построить более близкий к окружности многоугольник, но в этом случае оператор Create Object будет дольше выполняться и результат его будет занимать большее место на диске.

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

Пример 1:

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

Open Table "PARCELS"

Open Table "ZONES"

Create Object As Merge

From PARCELS Into Table ZONES

Data участков=Count(*),общ_площадь=Sum(площадь_участка)

Group By номер_товарищества

Пример 2:

В следующем примере создается область, являющаяся буферной зоной шириной в четверть мили вокруг выбранных объектов. Буферный объект будет помещен в объектную переменную "corridor". Затем оператором Update или Insert объект можно поместить в таблицу.

Dim corridor As Object

Create Object As Buffer

From Selection

Into Variable corridor

Width 0.25 Units "mi"

Resolution 60

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

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

142

Справочник MapBasic

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