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

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Работа с окном MapBasic

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

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

Справочник MapBasic в виде PDF файла находится на диске MapInfo Professional. В этом справочнике находится много полезной информации об операторах, которые рассматриваются в этой главе. Можете посмотреть список дефиниций MapBasic (MAPBASIC.DEF) в Приложении C Руководства пользователя MapBasic.

Доступ к окну MapBasic

Для получения доступа к окну MapBasic выполните команду НАСТРОЙКИ > ПОКАЗАТЬ ОКНО MAPBASIC. Окно MapBasic отобразится у Вас на экране. В этом окне Вы можете вводить команды MapBasic или видеть коды MapBasic, генерируемые MapInfo. Например, посмотрим, какие коды MapBasic создает MapInfo вовремя открытия таблицы и выполнения запроса. Выполните команду НАСТРОЙКИ > ПОКАЗАТЬ ОКНО MAPBASIC и откройте таблицу "World". Выполните следующий запрос: “выбрать все, где Pop_1994 > 1000000, и показать результат запроса. Когда запрос будет выполнен, в окне MapBasic Вы увидите следующее :

Open Table ”C:\MAPINFO\DATA\WORLD\World.tab” Interactive Map From World

select * from World where Pop_1994 > 1000000 into Selection browse * from Selection

Первая строка - открытие таблицы с именем "World". Вторая строка создается автоматически и обозначает отображение таблицы "World" в виде карты. Третья строка отображает выполняемый Вами запрос. В четвертой строке - требование показать результат запроса в виде списка.

Вы можете вводить команды MapBasic в специальном окне MapBasic. Наберите в окне MapBasic следующую команду:

Map from Selection

Нажмите ENTER в конце строки, и команда выполнится. Все выбранные объекты отобразятся в окне Карты.

Основная цель создания окна MapBasic – помощь разработчикам приложений на языке MapBаsic. В окне MapBasic Вы можете использовать следующие операторы и функции, такие как Buffer( ) и др.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

519

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Справочник MapBasic в формате PDF находится на диске MapInfo Professional. В нем подробно описан синтаксис функций и операторов, что облегчает процесс программирования.

Примеры программ MapBasic

В этом разделе рассматриваются примеры программ 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 - колонка, содержащая долготу начальной точки, Start_Y - колонка, содержащая широту начальной точки, End_X - колонка, содержащая долготу конечной точки линии, End_Y - колонка, содержащая широту конечной точки линии.

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

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

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

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

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

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

1. Выполните НАСТРОЙКИ > ПОКАЗАТЬ ОКНО MAPBASIC.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

520

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

update tablename set obj=createcircle(centroidx(obj),centroidy(obj),radius)

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

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

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

Данная команда видоизменяет столбец "obj" в Вашей таблицы. Команда заменяет объекты типа "точка" на объекты типа "окружность". Если Вы хотите отметить операцию, выполните,

ПРАВКА > ОТМЕНИТЬ.

Последний параметр (Radius) в данной команде представляет собой некоторое число - это радиус создаваемой окружности. Если, выполнив команду, Вы посчитаете, что радиус был слишком маленький или наоборот слишком большой, выполните ФАЙЛ > ВОССТАНОВИТЬ.

Таблица восстановится на момент последнего сохранения. Выполните команду снова с другим радиусом.

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

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

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

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

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

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

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

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

Select ObjectInfo (obj,1) from tablename

Obj - ссылка на графические объекты, соответствующие строке таблицы, 1 - код, определяющий, что вернуть требуется тип объекта, Tablename - имя Вашей таблицы.

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

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

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

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

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

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

521

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

3.Полученный результат можно просмотреть в окне Списка или Карты.

Типы объектов, которые Вы можете выбрать: полигон, дуга, линия, эллипс, прямоугольник, символ, полилиния.

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

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

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

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

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

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

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

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

до Boston.

.

1. Выполните НАСТРОЙКИ > ПОКАЗАТЬ ОКНО MAPBASIC и откройте окно MapBasic.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

522

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

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

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

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

Подставим значения, полученные в пунктах 2 и 3, вместо OriginX, OriginY, DestX и DestY. MapInfo рассчитает расстояние между начальной и конечной точками и поместит это значение в окно Сообщений. Это и будет гипотенуза треугольника.

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

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

Подставьте значения, полученные в пунктах 2 и 3, вместо OriginX, OriginY, DestX и DestY. MapInfo вычислит длину основания треугольника.

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

Print(ACOS(Adjacent/Hypotenuse)*57.2958)

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

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

Print(ACOS(Adjacent/Hypotenuse))

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

Дважды нажмите на линейный объект - MapInfo откроет окно "Линия", в котором отобразит информацию о координатах (X, Y) начальной и конечной точек.

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

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

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

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

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

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

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

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

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

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

523

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

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

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

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

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

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

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

Set Map Layer 1 Default Zoom

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

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

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

Особенности дорог

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

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

объекта Pen (ширина, тип

 

 

 

 

заливки, цвет)

 

 

 

Главные автомагистрали

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

Pen (2,2,16711680)

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

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

Pen (1,2,0)

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

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

Pen (1,26,0)

 

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

 

 

 

 

Толщина линии обозначается целым числом от 1 до 7. В выпадающем списке Пиксел раздела Толщина в диалоге "Стиль линии" Вы можете увидеть, что 1 соответствует самой тонкой линии, а 7 - самой толстой.

В этом же диалоге в разделе Стиль показаны 77 типов линий.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

524

MI_UG.PDF

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