Changes between Version 4 and Version 5 of AdvancedTopics


Ignore:
Timestamp:
05/20/26 12:47:43 (6 days ago)
Author:
231044
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedTopics

    v4 v5  
    11= Напредна тема: Имплементација на PostGIS =
    22
    3 == 1. Вовед ==
    4 
    5 PostGIS е екстензија за PostgreSQL која ѝ овозможува на базата на податоци да складира, индексира и обработува геопросторни (geospatial) податоци. Со неа, базата може да работи со точки, линии, полигони и други геометриски објекти како native типови на податоци, и да извршува просторни прашалници (пресметка на растојание, проверка дали една геометрија се содржи во друга, наоѓање најблиски објекти итн.) директно во SQL.
    6 
    7 За овој проект, PostGIS претставува природен избор бидејќи доменот на авиокомпанија е инхерентно геопросторен — секој аеродром е точка на површината на Земјата, секој лет е траектoрија помеѓу две точки, а голем дел од оперативните и аналитичките прашалници на авиокомпанијата (растојанија, рути, најблиски аеродроми, локација на авион во моментот) се суштински просторни.
    8 
    9 За имплементација на напредна тема за нашиот проект избравме PostGIS кој овозможува надградување на базата на податоци да управува со географски информации. Во реалните системи на светските авиокомпании овозможено е следење на летови, нивните рути како и самите авиони употребувајќи GPS технологии и калкулации на рути. Со цел пореалистично моделирање на проектот сметаме дека оваа тема би дала малку поголема прецизност на дел од податоците
    10 ----
    11 
    12 == 2. Зошто го избравме овој топик? ==
    13 
    14 Постојаат повеќе причини зошто го избравме PostGIS како напредна тема за нашиот проект:
    15 
    16 '''Природна интеграција со постоечкиот модел.''' Нашиот проект веќе содржи табели каде што геопросторната природа е очигледна (Airport, Flight, !ScheduledFlight). До оваа фаза, тие беа моделирани со текстуални имиња и кодови, но без вистинска географска информација. Воведувањето на PostGIS не претставува „вештачко" додавање на функционалност — туку логично продолжение и обогатување на она што веќе постои.
    17 
    18 '''Замена на синтетички податоци со реални вредности.''' Во Фаза 2Б, колоната {{{ScheduledFlight.Distance}}} беше пополнета со псевдо-случајни вредности генерирани преку формулата {{{duration * 13 + noise}}}. Со PostGIS можеме да ја пресметаме вистинската географска дистанца помеѓу аеродромите (great-circle distance). Тоа автоматски прави повеќе постоечки делови од системот да станат „вистински" — на пример, тригерот {{{AwardMilePoints}}} од Фаза 4 веќе ги доделува миљните поени на патниците врз основа на реална географска дистанца.
    19 
    20 '''Демонстрација на просторно индексирање.''' PostGIS ги воведе GIST (Generalized Search Tree) индексите, кои овозможуваат брза просторна претрага врз милиони редици. Ова е природно продолжение на Фаза 3 (оптимизација) — освен B-tree индексите кои ги видовме таму, сега работиме и со просторни индекси.
    21 
    22 '''Визуелизација и интеграција со надворешни алатки.''' PostGIS овозможува директна интеграција со QGIS — индустриски стандарден GIS алат. Тоа ни овозможи визуелно да го прикажеме целиот мрежен систем на авиокомпанијата (мапа на сите аеродроми, рутна мрежа, локации на летови) што е невозможно со чист релациски модел.
    23 
    24 '''Реалистичен случај на употреба.''' Сите вистински авиокомпании во светот користат геопросторни бази на податоци за оперативни цели — следење на летови, барање на алтернативни аеродроми, координација со контрола на летање. Имплементацијата на PostGIS го прави нашиот проект многу поблиску до реален систем.
    25 
    26 ----
     3За имплементација на напредна тема за нашиот проект избравме PostGIS кој овозможува надградување на базата на податоци да управува со географски информации. Во реалните системи на светските авиокомпании овозможено е следење на летови, нивните рути како и самите авиони употребувајќи GPS технологии и калкулации на рути. Со цел пореалистично моделирање на проектот сметаме дека оваа тема би дала малку поголема прецизност на дел од податоците.
     4
     5Пред имплементаицја на оваа тема, во табелата !ScheduledFlight која претставува закажан лет (урнек), колоната Distance беше генерирана на рандомизиран начин односно според времето на полетување и слетување, што не претставува реален податок. Проблем се јавува при употреба на оваа вредност во калкулациите на цена на авионски билети како и додавање на поени за летање на патниците. Со воведување на PostGIS, податоците се реални и употребливи во бизнис логиката на апликацијата. Исто така овозможено е имплементирање на дополнителни функционалности присутни во реални системи.
     6
     7== Инсталација на PostGIS
     8
     9За воведување на PostGIS во нашата база на податоци потребно беше локална инсталација на алатката и нејзино вклучување во базата преку извршување на командата
     10
     11{{{
     12#!sql
     13create extension postgis;
     14}}}
     15
     16
     17== Пормена на таблеата Airport
     18
     19За успешно имплементирање на PostGIS потребно беше да се направи промена во табелата Airport. За да можеме да пресметаме растојание помеѓу аеродромите (километража на лет) потрбено беше додавање на колони Longitude (географска должина) и Latitude (географска ширина). Со додавање на овие две колони овозможено е одредување на реалните координати на аеродромот.
     20
     21{{{
     22#!sql
     23alter table airport
     24add column longitude numeric;
     25
     26alter table airport
     27add column latitude numeric;
     28}}}
     29
    2730
    2831== 3. Каде е интегриран PostGIS? ==