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

MI6UGRU

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

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

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

Примеры:

Dim win_id As Integer Open Table ”world” Map From world

win_id = FrontWindow()

Set Window win_id Width 5 Height 3

Функция StyleAttr( )

Назначение:

Возвращает значение одной из компонент величины стиля оформления объекта.

Синтаксис:

StyleAttr( style , attribute )

ãäå

style – величина, выражающая стиль (величина типа Pen, Brush, Font или Symbol); attribute – целочисленный код, управляющий результатом функции

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

Целое число или строка, в зависимости от значения параметра attribute.

Description

Функция StyleAttr( ) извлекает из величины типа Pen, Brush, Font или Symbol определенную компоненту.

Все типы стилей в MapBasic являются сложносоставными, и величины этих типов состоят из определенных наборов чисел и строк, задающих номера видов линий, коды цвета, имена и размеры шрифтов и т. п. Именно эти компоненты возвращает функция StyleAttr( ).

Параметр attribute должен иметь значение одного из кодов, которые приведены ниже в таблице.

Если параметр style это Pen, то используйте одно из значений таблицы:

Значение StyleAttr( ) возвращает: attribute

1Целое число, указывающее номер стиля Brush.

2Целое число, указывающее код RGB цвета штриха Brush.

3Целое число, указывающее код RGB цвета фона штриха Brush, или –1 если есть прозрачность фона.

1Атрибут стиля Font, задающий строку с именем шрифта.

2Целое число (Integer) от 0 до 7, атрибут стиля Font, задающий номер стиля шрифта (жирный, курсив, ...).

3Целое число (Integer), атрибут стиля Font, задающий размер

577

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

шрифта в точках.

Замечание: Если текстовый объект принадлежит таблице, а не Отчету, то размер будет равен 0 и высота букв будет определяться текущим масштабом Карты.

4Целое число (Integer), атрибут стиля Font, задающий RGB-код цвета символов строки..

5Целое число (Integer), атрибут стиля Font, задающий RGB-код цвета фона строки или -1, если фон прозрачный. Если стиль шрифта включает кайму, то задает RGB-цвет каймы.

1Целое число (Integer), атрибут стиля Pen, задающий ширину линии в точках.

2Целое число (Integer), атрибут стиля Pen, задающий номер вида линии.

4Целое число (Integer), атрибут стиля Pen, задающий RGB-код цвета линии.

7Целое число (Integer), тип символа: 1 – символ MapInfo версии 3.0; 2 – символ шрифта TrueType; 3 – символ из растрового файла.

1Целое число (Integer), атрибут стиля Symbol, задающий номер символа. Используется для типа символа версии 3.0 и TrueType.

2Целое число (Integer), атрибут стиля Symbol, задающий RGBкод цвета символа.

3Целое число (Integer) от 1 до 48, атрибут стиля Symbol, задающий размер символа в пунктах.

5Строка (String), имя шрифта TrueType, который используется как библиотека символов.

6Целое число (Integer), задающее написание символа TrueType (0 – нормальное написание, 1 – жирное и т. д.). Смотрите описание предложения Symbol.

4Действительное число (Float), угол поворота символа TrueType.

8Строка (String), имя растрового файла.

9Целое число (Integer), задающее стиль для растрового символа (0 – нормальное, 1 – показать фон и т. д.). Смотрите описание Symbol.

Оператор Update

Назначение:

Изменяет одну или более строк в таблице.

Синтаксис:

578

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

Update table

Set column = expr [, column = expr, ... ]

[Where RowID = idnum ]

ãäå

table – имя открытой таблицы; column – имя колонки в таблице; expr – выражение для колонки; idnum – номер строки в таблице.

Описание:

Оператор Update изменяет одну или более колонок в таблице. По умолчанию оператор обновляет все строки таблицы table. Если в операторе используется предложение Where RowID, обновляются только указанные строки. В предложении Set определяются сами изменения в полях заданной строки или строк.

Используя имя Obj для специальной колонки графических объектов, присоединенных к строкам таблицы, Вы можете присоединять новые графические объекты к записям. Смотрите третий пример.

Примеры:

Мы имеем данные о служащих. Каждая запись содержит отдел, в котором работает служащий, и его жалование. Теперь повысим жалование служащим отдела управления продажами, жалование которых было меньше $20000, на 7%. Для выбора записей о служащих, которым надо повысить жалованье, используем оператор Select.

Select * From employees

Where department ="отдел_управления_продаж" And salary < 20000

Update Selection

Set salary = salary * 1.07

Теперь повысим жалование служащего, данные которого находятся в десятой записи.

Update employees

Set salary = salary * 1.07

Where Rowid = 10

Создадим точечный объект и присоединим его к первой записи таблицы:

Update sites

Set Obj = CreatePoint(x, y)

Where Rowid = 1

Примеры

Преобразование из таблицы содержащей координаты в таблицу линий

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

579

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

(Start_X, Start_Y) и конечной (End_X, End_Y). Если графические объекты для данной

таблицы существуют, то они должны быть удаленны.

1.Выберете команду РÅÆÈÌ > ÏОКАЗАТЬ ÎÊÍÎ MAPBASIC . Окно MapBasic появится на экране.

2.Наберите следующую команду в окне:

update point_table set obj=createline(Start_X, Start_Y,End_X,End_Y)

Где point_table является копией Вашей исходной таблицы, Start_X колонка, содержащая координату начала линии по X, Start_Y колонка, содержащая координату начала линии по Y, End_X, колонка содержащая координату конца линии X, и End_Y колонка, содержащая координату конца линии Y.

MapInfo будет для каждой строки Вашей таблицы создавать линейные объекты на основе информации, содержащейся в данной строке. Вы не будете видеть изменений в Вашей таблице, пока не обновите окно карты или откроете новое окно Карты для данной таблицы.

Возможные проблемы

Перед выполнением выше описанных процедур убедитесь, что Ваша таблица имеет возможность хранить географические объекты. Для того, чтобы это проверить или сделать возможным хранение географических объектов, сделайте следующее: выберите ТАБЛИЦА > ÈЗМЕНИТЬ > ÏЕРЕСТРОИТЬ и проверьте, что данная таблица позволяет присоединять географические объекты.

Если Ваша карта имеет географическую проекцию, то объекты могут быть не созданы. Для того, чтобы понять данную ситуацию, смотрите функцию Set Coordsys для изменения координатной системы.

Создание окружностей вокруг точек используя окно MapBasic

Команда Сreatecircle может быть использована для преобразования таблицы точек в таблицу окружностей. Эта команда подобна созданию буферов на слое точек. Отличие от создание буферов состоит в том, что в данном случае точечные объекты преобразуются в окружности.. Предполагается, что все изменения делаются с копией таблицы. Если в окне карты существуют какие-либо объекты то они будут потерянны.

1. Выберите НАСТРОЙКИ > ÏОКАЗАТЬ ОКНО MAPBASIC.

580

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

2.Наберите следующую команду в окне: update tablename set

obj=createcircle(centroidx(obj),centroidy(obj),radius)

tablename - имя таблицы, в которую Вы сделали копию Вашей таблицы, и radius - это радиус окружности в текущей координатной системе.

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

Возможные проблемы

Данная команда модифицирует столбец объекта в Вашей таблицы. Команда заменяет объекты типа точки на объекты типа окружность. Если Вы хотите отметить операцию, выберете, ПРАВКА > ÎТМЕНИТЬ.

Последний параметр (radius) в данной команде может быть равен 10, это радиус создаваемой окружности в милях. Если, выполнив команду, Вы посчитаете, что радиус был слишком маленький или наоборот слишком большой, выполните ФÀÉË > ÂОССТАНОВИТЬ. Таблица восстановится на момент последнего сохранения. Выполните команду снова с другим радиусом.

Если Ваша карта имеет географическую проекцию, то объекты могут быть не созданы.

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

Update tablename set obj=createpoint(centroidx(obj),centroidy(obj))

Использование функции ObjectInfo для описания типа графического объекта

Команда Оbjectinfo используется для получения типа графического объекта, содержащегося в каждой строке таблицы. Каждый тип представляет собой число (small integer). MapInfo имеет 10 типов объектов. Все типы объектов приведены в описании функции objectinfo.

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

1.Выполните команду СВОЙСТВА > ÏОКАЗАТЬ ОКНО MAPBASIC. Окно MapBasic появится на экране.

2.Введите следующую команду SQL-запроса:

581

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

Select ObjectInfo (obj,1) from tablename

Где obj ссылка на графические объекты соответствующие строке таблицы, 1 это

код определяющий, что вернуть требуется тип объекта, и tablename имя Вашей

таблицы.

3.Выполните команду ОÊÍÎ > ÍОВЫЙ СПИСОК. Выберете для списка таблицу с именем selection. В списке будут содержатся числовые коды для каждого типа объектов Вашей таблицы.

Выбор всех записей с заданным типом объектов

1.Выполните команду СВОЙСТВА > ÏОКАЗАТЬ ÎÊÍÎ MAPBASIC.

2.Наберите следующий SQL-запрос:

Select * from tablename where str$(obj)=”objecttype

Где tablename - имя Вашей таблицы и objecttype - тип объекта, который Вы хотите выбрать. Для определения типа объекта дважды щелкните мышью на требуемый объект. В диалоге будет показан тип объекта.

3.Выберите Список или Карту для того, чтобы увидеть выбранные объекты. Типы объектов которые Вы можете выбрать для поиска region, arc, line, ellipse, rectangle, point, or polyline..

Выбор улицы по цвету используя SQL запрос

Для того, чтобы выбрать все улицы из таблицы StreetInfo или Streetworks с отрезками

линий, имеющих определенную ширину, тип и цвет, сделайте следующее:

1.После того как файл street открыт, выполните команду СВОЙСТВА > ÏОКАЗАТЬ ОКНО MAPBASIC. Окно MapBasic появится на экране.

2.Для выбора линий красного цвета наберите следующую команду

Str$(ObjectInfo(obj,2))=”Pen(2,2,16711680)”

Параметры отображения

Особенности

Описание объектов

Параметры графического

дорог

 

объекта Pen (width, pattern,

 

 

color)

Главные

Тонкая красная линия

Pen (2,2,16711680)

автомагистрали

 

 

Все другие дороги

Тонкая черная линия

Pen (1,2,0)

Железные дороги

Тонкая черная

Pen (1,26,0)

 

железнодорожная линия

 

Толщина линии всегда число (1-7). Единица это самая тонкая линия, а 7 - самая широкая. Эти номера соответствуют тому порядку, в котором Вы их можете увидеть в меню СÒÈËÜ ËÈÍÈÉ->ÒОЛЩИНА.

582

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

Тип линий - это номера от 1 до 77. Эти номера соответствуют тому, что Вы увидите выполнив команду СВОЙСТВА > ÑÒÈËÜ ËÈÍÈÉ > ÑÒÈËÜ.

Нахождение угла от горизонтали

В данной процедуре определяется угол (угол А) между линией, которая соединяет две точки и горизонтальной линией. Для этого создадим прямоугольный треугольник, у которого гипотенуза - это линия, соединяющая две точки, а основание это - горизонтальная линия, соединяющая первую точку с перпендикуляром, опущенным из второй точки. После того, как найдем гипотенузу, соответствующую расстоянию между двумя точками, можно найти угол.

Данные точки будем называть начальной и конечной. Начальная точка находится на горизонтальной линии. В рассматриваемом примере, Hartford - это начальная точка. Boston -конечная точка. Гипотенуза - это расстояние от Hartford до Boston.

1.Выберем СВОЙСТВА > ÏОКАЗАТЬ ОКНО MAPBASIC и откроем окно MapBasic.

2.Дважды нажмите на начальную точку (Hartford). MapInfo откроет окно Точечный объект, в котором будет показана информация о координатах объекта. Запишем координаты X и Y. Эти значения будем использовать как OriginX и OriginY.

3.Дважды нажмите на конечную точку (Boston). MapInfo откроет окно Точечный объект, в котором будет показана информация о координатах объекта. Запишем координаты X и Y. Эти значения будем использовать как DestX и DestY.

4.В окне MapBasic наберем следующую команду:

583

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

Print Distance(OriginX, OriginY, DestX, DestY, ”mi”)

Подставим значения, полученные на шаге 2 и 3, вместо OriginX, OriginY, DestX

èDestY. MapInfo напечатает расстояние между начальной и конечной точками в окне Сообщений. Это значение будет гипотенузой(Hypotenuse) треугольника.

5.В окне MapBasic наберите следующую команду:

Print Distance(OriginX, OriginY, DestX, OriginY, ”mi”)

Подставьте значения, найденные на шаге 2 и 3, вместо OriginX, OriginY, DestX

èDestY. MapInfo напечатает расстояние (Adjacent) между начальной точкой и точкой лежащей на пересечении перпендикуляра, опущенного из конечной точки (Boston), с горизонтальной линией проведенной из начальной точки. Это значение будет соответствовать основанию треугольника.

6.Что бы найти угол, наберите следующую команду MapBasic:

Print(ACOS(Adjacent/Hypotenuse)*57.2958)

Подставляя значения найденные на шаге 4 и 5, вместо adjacent и hypotenuse, MapInfo вернет угол в градусах, и это значение будет напечатано в окне Сообщений.

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

Print(ACOS(Adjacent/Hypotenuse))

Если вместо двух точек Вы имеете линию, которая имеет начальную и конечную точку, то для нахождения угла к горизонтали требуется внести соответствующие изменения на шаге 2 и 3:

Дважды нажмите на линейный объект, MapInfo откроет окно Линия, в котором отобразит координатную информацию, записав значения X и Y координат начальной и конечной точек.

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

Продолжим начиная с шага 4.

584

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

Поиск плавающих окон

Плавающие окна - это специальные окна MapInfo, которые располагаются поверх окон Карт, Списко, Графика и Отчета. Это окно информации, пенал, линейка и окно сообщений. Вы можете сдвинуть эти окна за пределы экрана, и соответственно они будут не видны. Используя окно MapBasic, Вы можете легко вернуть эти окна в центр экрана. В качестве примера используем окно информации. Список других специальных окон приведен в описании команды Set Window в данной главе.

1.Выберите СВОЙСТВА > ÏОКАЗАТЬ ÎÊÍÎ MAPBASIC. Окно MapBasic появится на Вашем экране.

2.Наберите следующую команду в окне:

Set Window Info Position (1.5,2.0) Units ”in”

Окно Информации переместится в центр экрана.

Установка стандартного масштаба Карты

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

Например, если Вы открываете карту мира из поставки MapInfo, она отобразится в таком масштабе, что будет видна целиком. Можно увеличить изображение так, что будет показана только Европа. Для изменения стандартного масштаба, сделайте следующее:

1.Выполните команду НАСТРОЙКИ > ÏОКАЗАТЬ ОКНО MAPBASIC. На экране появится окно MapBasic.

2.Откройте карту мира.

3.Установите такой масштаб и позицию, чтобы в окне была только Европа Europe.

4.В окне MapBasic, введите следующую команду:

Set Map Layer 1 Default Zoom

5.Закройте таблицу World.

6.Снова откройте таблицу World. Она откроется в новом масштабе.

585

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

Операторы сохранения запросов SQL

Просто выберите операторы, которые легко воспроизвести. Бывают сложные составные запросы, с большим количеством логических операторов. Используя окно MapBasic, Вы можете сохранить операторы Вашего SQL запроса в виде текстового файла и использовать их в последующих сеансах MapInfo.

Используйте следующие шаги для сохранения сложных запросов:

1.Выполните команду НАСТРОЙКИ > ÎТКРЫТЬ ОКНО MAPBASIC. Откроется окно MapBasic.

2.Откройте таблицу World.

3.Выполните команду ЗАПРОС > SQL ÇАПРОС. Заполните диалог, как показано ниже.

4.Убедитесь, что все операторы запроса записаны в окне MapBasic. В окне MapBasic, выделите оператор и скопируйте его в буфер.

5.Выполните команду ПРАВКА СТАВИТЬ.

6.Откройте текстовый редактор типа Notepad, и вставьте выделенный оператор.

586

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