🚀 Вийди на новий рівень крипто-торгівлі!
Easy Trade Bot — автоматизуй свій прибуток уже зараз!

Ми пропонуємо перелік перевірених прибуткових стратегій на такі пари як BTC, DOT, TRX, AAVE, ETH, LINK та інші. Ви можете підключити автоматичну торгівлю на своєму акаунті Binance або отримувати торгові рекомендації на email у режимі реального часу. Також можемо створити бота для обраної вами монети.

Всі результати торгів ботів доступні для перегляду у зручних таблицях на головній сторінці. Швидко, динамічно та прозоро!

Перейти до бота + 30$ бонус

Методика виконання оверлейних операцій в середовищі ГІС MapInfо та їх програмування з допомогою мови розширення MapBasic

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра фотограмметрії та геоінформатики

Інформація про роботу

Рік:
2006
Тип роботи:
Інші
Предмет:
Інші
Група:
К

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" кафедра фотограмметрії та геоінформатики К у р с о в а р о б о т а на тему: “Методика виконання оверлейних операцій в середовищі ГІС MapInfо та їх програмування з допомогою мови розширення MapBasic” Зміст Вступ. Методика застосування оверлейних операцій для аналізу даних в середовищі MapInfo. Накладання «точка-на-полігон». Накладання «лінія-на-полігон». Накладання «полігон-на-полігон». 2. Опис операторів MapBasic. 2.1 Оператори для створення меню. 2.2 Оператори для створення діалогів. 2.3 Оператори MapBasic, які використовувались для написання програми. Вступ Одними з найпотужніших і найпоширеніших функцій географічного аналізу є оверлейні операції, які використовуються під час обробки як векторних, так і растрових моделей даних. Оверлей (overlay) – це операція накладання одного шару (карти) на інший для створення нового шару (карти) з генерацією похідних об’єктів, які виникають при їх геометричному перекритті і комбінуванні атрибутів обох шарів. Існує три типи оверлейних операцій: Накладання «точка-на-полігон» (point-in-polygon). - точкові об’єкти одного шару накладаються на полігональні об’єкти іншого шару. Результатом цього оверлея є набір точкових об’єктів із додатковими атрибутами, що визначають полігони, у яких вони лежать. Накладання «лінії-на-полігон» (line-in-poligon). - дуги одного шару накладаються на полігональні об’єкти іншого шару. Результатом будуть нові дуги, що мають додаткові атрибути полігонів, з якими вони перетинаються. Накладання «полігон-на-полігон» (polygon-on-polygon). Накладання полігонів – це просторова операція, коли одне полігональне покриття накладається на інше для створення нового полігонального покриття з комбінуванням або об’єднанням атрибутивної інформації. Саме полігональний оверлей набув найбільш широкого застосування. Виконуються такі основні операції при накладанні полігонів: об’єднання (union) – об’єкти й атрибутивні дані обох шарів зберігаються. Атрибутивні дані результуючого шару вміщують атрибути об’єктів, як вихідного, так і того покриття, що накладається. перетин (intersect) – результуючий шар зберігає лише частини об’єктів, які потрапляють у загальну область (в зону перетину об’єктів). Атрибутивні дані об’єктів обох шарів об’єднуються (комбінуються) в результативному шарі. тотожність (identity) – результуючий шар містить тільки ті об’єкти першого шару, які розташовані всередині другого шару. Атрибутивні дані об’єктів обох шарів об’єднуються (комбінуються) в результативному шарі. 1. Методика застосування оверлейних операцій для аналізу даних в середовищі MapInfo Для виконання оверлейних операцій потрібно використати один з географічних операторів у діалозі SQL-запрос. Вони визначають взаємне розміщення об’єктів на карті. Ці оператори застосовуються до виразів типу Object і повертають значення True або False. Нижче подано опис цих операторів (табл. 1): Оператор Повертає True, якщо Приклад  Contains перший об’єкт містить центроїд другого об’єкту If a Contains b Then…  Contains Part перший об’єкт містить частину другого об’єкту If a Contains Part b Then…  Contains Entire перший об’єкт повністю містить другий об’єкт If a Contains Entire b Then…  Within другий об’єкт містить центроїд першого об’єкту If a Within b Then…  Partly Within другий об’єкт містить частину першого об’єкту If a Partly Within b Then…  Entirely Within другий об’єкт повністю містить перший об’єкт If a Entirely Within b Then…  Intersects два об’єкти мають спільну точку If a Intersects b Then…  Табл. 1. Географічні оператори. 1.1 Накладання «точка-на-полігон» Алгоритм виконання: відкрити таблицю точкових та полігональних об’єктів (наприклад City_1K та States з каталогу DATA); виконати команду меню Запрос/SQL-запрос... ; діалог SQL-запрос заповнити так (рис. 1):  Рис. 1. Після натиснення кнопки ОК програма додасть до атрибутів точкового шару атрибути полігонів, в яких вони знаходяться. Вікно КАРТА буде містити точкові об’єкти (рис. 2):  Рис. 2. 1.2 Накладання «лінія-на-полігон» Але не всі операції можна виконати за один крок. В результаті накладання «лінія-на-полігон» не тільки об’єднуються атрибути вихідних таблиць, а й відбувається зміна об’єктів лінійного шару. На перетині з полігонами лінії розділяються на відрізки. Команда SQL-запрос не змінює об’єктів таблиці. Тому попередньо треба застосувати команду меню Объекты/Разрезать для того, щоб розділити лінії. Алгоритм виконання оверлейної операції типу накладання «лінія-на-полігон»: відкрити таблиці з лінійними та полігональними об’єктами; зробити шар ліній редагованим (Карта/Управление слоями...); вибрати весь шар ліній; виконати команду меню Объекты/Выбрать изменяемый объект; вибрати весь шар полігонів; виконати команду меню Объекты/Разрезать; в діалозі (який з’явиться) Разобщение данных (рис. 3) вибрати бажаний спосіб зміни атрибутів шару ліній:  Рис. 3. пусто – значення поля обнулиться; значение – значення не зміниться; пропорции – значення змінюється пропорційно до площі об’єкту, що знаходиться в полігоні; без данных – всі поля будуть мати нульові та пусті значення. Після цього ми маємо шар ліній, які розділені полігонами, а їхні атрибутивні дані змінені відповідним чином. Тепер треба об’єднати атрибути двох шарів, використовуючи команду SQL-запрос (рис. 4):  Рис. 4. Результуюча таблиця Line_In_Polygon буде містити розділені об’єкти шару ліній та об’єднані атрибути вихідних таблиць (рис. 5):  Рис. 5. Накладання «полігон-на-полігон» об’єднання – цей тип операцій з графічними об’єктами ніяких змін не робить. Потрібно тільки об’єднати атрибути таблиць. Алгоритм виконання операції: відкрити дві таблиці з полігональними об’єктами (рис. 6):  Рис. 6. виконати команду меню Запрос/SQL-запрос... ; діалог SQL-запрос заповнити так (рис. 7):  Рис. 7. Результуюча таблиця Union буде містити об’єкти першого шару, вказаного в полі из таблиц діалогу SQL-запрос (рис. 7), та атрибути вихідних шарів. перетин - результуючий шар має містити тільки зону перетину (накладання) полігональних шарів. Тому потрібно спочатку виділити цю зону, а вже потім використати команду меню Запрос/SQL-запрос... Алгоритм виконання операції: відкрити дві таблиці з полігональними об’єктами (рис. 6); зробити перший шар редагованим (Карта/Управление слоями...); вибрати весь перший шар; виконати команду меню Объекты/Выбрать изменяемый объект; вибрати весь другий шар; виконати команду меню Объекты/Удалить внешнюю часть; в діалозі Разобщение данных вибрати бажаний спосіб зміни атрибутів першого шару; зробити другий шар редагованим (Карта/Управление слоями...); вибрати весь другий шар; виконати команду меню Объекты/Выбрать изменяемый объект; вибрати весь перший шар; виконати команду меню Объекты/Удалить внешнюю часть; в діалозі Разобщение данных вибрати бажаний спосіб зміни атрибутів другого шару. Тепер таблиці містять графічні об’єкти тільки в зоні перетину. Для об’єднання атрибутивних даних вихідних таблиць викличемо діалог SQL-запрос (рис. 8):  Рис. 8. Результуюча таблиця Intersects (рис. 9) буде містити тільки ті об’єкти першого шару (вказаного в полі из таблиц діалогу SQL-запрос (рис. 8)), які потрапили в зону перекриття. Атрибути вихідних шарів об’єднаються.  Рис. 9. тотожність - результуючий шар має містити тільки ті об’єкти першого шару, які знаходяться всередині другого шару. Тому потрібно спочатку виділити ці об’єкти: відкрити дві таблиці з полігональними об’єктами (рис. 6); зробити шар POLIGON редагованим (Карта/Управление слоями...); вибрати весь шар POLIGON; виконати команду меню Объекты/Выбрать изменяемый объект; вибрати весь шар STATES; виконати команду меню Объекты/Удалить внешнюю часть; в діалозі Разобщение данных вибрати бажаний спосіб зміни атрибутів шару POLIGON. Вікно КАРТА виглядає так (рис. 10):  Рис. 10. З рис. 10 бачимо, що з об’єктів шару POLIGON лишилась тільки та їх частина, яка знаходиться всередині полігонів шару STATES. Об’єднаємо атрибути вихідних шарів, заповнивши діалог SQL-запрос наступним чином (рис. 11):  Рис. 11. Результуюча таблиця Identity буде містити тільки ті об’єкти першого шару (вказаного в полі из таблиц діалогу SQL-запрос (рис. 11)), які знаходяться всередині другого шару. Атрибути вихідних шарів об’єднаються. Вище були розглянуті алгоритми виконання оверлейних операцій наявними засобами ГІС MapInfo. Але їх виконання вимагає від користувача певного рівня підготовки. Потрібно знати теорію оверлейних операцій, оператори, які застосовуються для їх виконання. Більшість операцій не можна виконати за один крок. Тому, доцільним буде створення програмного модуля з допомогою мови програмування MapBasic, який би полегшував виконання оверлейних операцій. 2. Опис операторів MapBasic, які використовувались для написання програми. 2.1 Оператори для створення меню. Оператори MapBasic дозволяють створювати нові меню або додавати нові команди в систему меню MapInfo та видаляти існуючі. В програмі Overlay було додано нові команди до меню Карта (рис. 11):  Рис. 11. Створювати нові команди меню можна з допомогою оператора Create Menu. Синтаксис оператора: Create Menu ім’я_нового_меню As ім’я_пункту_меню1 Calling ім’я_процедури1 ім’я_пункту_меню2 Calling ім’я_процедури2 ім’я_пункту_меню3 As ім’я_підменю Фрагмент програми Overlay.mbx, де використовується цей оператор: ... Create Menu "Poligon Na Poligon" As "Objednannia" Calling Objednannia, "Peretyn" Calling Peretyn, "Totognist" Calling Totognist Create Menu "Overleyni Operacii" As "Tochka Na Poligon" Calling Point_in_Polygon, "Linija Na Poligon" Calling Line_in_Polygon, "Poligon Na Poligon" As "Poligon Na Poligon" ... Але після створення нового меню оператором Create Menu, воно автоматично не відобразиться у стрічці меню MapInfo. Для цього можна скористатись оператором Alter Menu, який додає (видаляє) елемент одного з існуючих пунктів меню. Синтаксис оператора: Alter Menu ID номер Add новий_елемент_меню1 Calling ім’я_процедури1 новий_елемент_меню2 As ім’я_підменю Фрагмент програми з використанням цього оператора: ... Alter Menu ID 9 Add "(-", "Overleyni Operacii" As "Overleyni Operacii" ... Ідентифікатор ID 9 – це номер меню. Значення номеру від 1 до 16 відповідає стандартним меню MapInfo. Наприклад, ID 1 відповідає меню Файл, ID 2 – меню Правка і т.д. Ідентифікатори стандартних пунктів меню можна знайти у текстовому файлі MapInfow.MNU, який знаходиться в одній директорії з файлами програми MapInfo. ID 9 відповідає меню Карта. Отже, до меню Карта буде додано нове підменю (рис. 11). При натисненні користувача на пункт меню, будуть викликатись відповідні їм процедури-обробники, вказані в реченні Calling. 2.2 Оператори для створення діалогів. Оператор Note показує повідомлення в простому діалоговому вікні, яке має одну кнопку ОК. Синтаксис: Note повідомлення Повідомленням може бути не тільки стрічка символів, а і вираз, значення якого вираховується в процесі виконання програми. В нашій програмі з’являється повідомлення після вибору одного з пунктів меню (рис. 12), якщо на момент вибору відкрито тільки одну таблицю. Тому що, для виконання оверлейної операції потрібно щоб були відкриті дві таблиці.  Рис. 12. Оператор Dialog створює нові діалогові вікна. Синтаксис: Dialog Title заголовок_діалогу Width ширина_вікна Height висота_вікна Position x,y Calling процедура Control опис_елемента_діалогу1 Control опис_елемента_діалогу2 Використання всіх параметрів опису діалогу не є обов’язковим. В програмі Overlay створено діалог для вибору таблиць, які будуть використовуватись в оверлейній операції (рис. 13):  Рис. 13. Фрагмент програми, який описує діалог: ... Dialog Title "Vyberit tablyci dlia overlejnoi operacii" Control StaticText Title "vyberit tablycu iz linijnymy objektamy" Position 4, 40 Control PopupMenu Position 180, 36 Title From Variable table Into i_line_table Control StaticText Title "vyberit tablycu iz poligonalnymy objektamy" Position 4, 64 Control PopupMenu Position 180, 60 Title From Variable table Into i_polyg_table Control OKButton Position 4, 100 Control CancelButton Position 188, 100 ... Все, що може знаходитись всередині діалогу, називається елементом діалогу. Кожен елемент описується окремим реченням Control в операторі Dialog. Наш діалог складається з 6-ти елементів: два елементи StaticText (текст), два елементи PopupMenu (вспливаючий список), OKButton (кнопка ОК), CancelButton (кнопка Cancel). Приклад опису елементу PopupMenu: Control PopupMenu Position 180, 60 Title From Variable table Into i_polyg_table Речення Position вказує розміщення елемента в діалозі. За точку відліку приймається лівий верхній кут діалогу, який має координати 0,0. Перша цифра – позиція по горизонталі, друга – по вертикалі. Горизонтальна одиниця рівна 1/4 ширині системного шрифту, а вертикальна – 1/8. Речення Title From Variable вказує, що значення списку будуть взяті із змінної table (ця змінна містить назви відкритих таблиць). Речення Into розміщує номер вибраного пункту зі списку у змінну i_polyg_table. Після натиснення на кнопку OKButton відбувається закриття діалогу із збереженням всіх встановлених значень в діалозі. Кнопка CancelButton також закриває діалог, але значення не зберігаються. 2.3 Оператори MapBasic, які використовувались для написання програми. NumTables() – повертає число відкритих на даний момент таблиць. Результатом функції є ціле число. SelectionInfo(атрибут) – повертає інформацію про тимчасову таблицю Selection. Атрибут – це цілочисельний код. В файлі стандартних визначень MapBasic MAPBASIC.DEF визначені імена для всіх кодів, які можна використовувати в подібних функціях. Результат функції залежить від атрибуту: - SelectionInfo(SEL_INFO_NROWS) – повертає ціле число – кількість вибраних стрічок в таблиці. Якщо нічого не вибрано, то поверне 0. TableInfo(ім’я_або_номер_таблиці_або_0, атрибут) – повертає інформацію про відкриту таблицю: TableInfo(table, TAB_INFO_NAME) – повертає стрічку, ім’я таблиці; TableInfo(table, TAB_INFO_MAPPABLE) – логічна величина. True, якщо записам таблиці можна співставляти графічні об’єкти; TableInfo(table, TAB_INFO_NAME) – повертає стрічку, яка містить повне ім’я файлу таблиці, включаючи DOS-маршрут. Пуста стрічка повертається для таблиці запиту. CommandInfo(атрибут) – повертає інформацію про останні внутрішньосистемні події: CommandInfo(CMD_INFO_DLG_OK) – величина типу Logical. True – якщо в діалоговому вікні була вибрана кнопка OkButton, False – якщо користувач відмінив діалог,натиснувши на кнопку CancelButton або на клавішу ESC. Цей код функції призначений для інформації про діалогові вікна, викликаних оператором Dialog. PathToDirectory$(повний_шлях_до_файлу) – вилучає з повної специфікації файла ім’я каталогу. Commit Table – зберігає останню редакцію таблиці на диску або зберігає її копію. Open Table – відкриває таблицю MapInfo. Add Map – додає шар в вікно Карти. Set Map – змінює налаштування відображення об’єктів в вікні Карти: Set Map Redraw On/Off – автоматично керує перерисовкою карти в вікні. Якщо програма виконала оператор Set Map Redraw Off то оператори, що змінюють карту, будуть виконуватись без автоматичного оновлення відображення в вікні Карти; Set Map Layer номер_або_ім’я_ шару Editable ON/OFF – встановлює режим редагування тільки для одного шару. Якщо шар є редагованим, то він автоматично стає доступним для вибору. Set Target ON/OFF – призначає змінюваний об’єкт. Деякі операції в MapInfo вимагають попередньо призначити об’єкт, який буде змінюватись. Run Menu Command командний_код_або_ID_номер_команди – дозволяє викликати стандартну команду MapInfo так, якби ми вибрали її з меню. Всі команди меню описані у текстовому файлі cтандартних визначень MENU.DEF: Run Menu Command M_OBJECTS_SPLIT – відповідає команді меню Объекты/Разрезать; Run Menu Command M_OBJECTS_ERASE_OUT - відповідає команді меню Объекты/Удалить внешнюю часть. Select – оператор застосовується для вибору окремих стрічок і колонок з однієї і більше таблиць, для об’єднання таблиць, для сортування і обчислення проміжних сум. Оператору відповідає команда меню Запрос/SQL-запрос. Синтаксис оператора може змінюватись залежно від задач, які виконуються. Висновок: оверлейні операції є одним з найпотужніших засобів географічного аналізу. Вони дають можливість визначати взаємне розміщення об’єктів та відповідно об’єднувати (комбінувати) атрибутивні дані вихідних таблиць. Однак, в середовищі MapInfo їх виконання є непрозорим для користувача. Тому з допомогою мови розширення MapBasic була написана програма OVERLAY, яка дозволяє виконати операцію накладання, вибравши тільки одну команду меню.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!