| Version 8 (modified by , 8 days ago) ( diff ) |
|---|
Advanced Topic
Краток опис на напредната тема (PostGIS)
Како напредна тема за овој проект го избравме PostGIS и QGIS, бидејќи претставуваат најсоодветно решение за функционалностите што системот ги нуди. Уште од самиот почеток, системот беше замислен да работи со локациите на работниците и објавите на корисниците, особено во делот каде што работниците можат да изберат дали сакаат да работат на далечина (remote) или само во рамки на одредена оддалеченост од нивната моментална локација која ја имаат внесено во системот.
Поради ова, PostGIS се покажа како најсоодветна напредна тема, бидејќи, со негова помош, секој мајстор може лесно да ги разгледува понудите што се наоѓаат во негова близина доколку не работи на далечина, додека на корисниците кои бараат мајстори им се препорачуваат оние што се наоѓаат во нивна близина или нудат услуги на далечина.
Пример
На следната слика е прикажана мапа по извршување на функциите fn_draw_worker_location, fn_draw_active_posts_in_worker_region, fn_draw_worker_to_post_lines и fn_draw_worker_notRemote_region за работник кој не работи на далечина.
На следната слика е прикажано како пример реална апликација би изледала со овие функционалности
Функционалности
Во рамките на напредната тема беа имплементирани неколку дополнителни функционалности, и тоа:
fn_suggest_posts_for_worker(p_worker_id, p_limit default 10)
Оваа функција служи за предлагање на соодветни постови за одреден работник врз основа на неговите специјалности и локација. Најпрво се проверува дали работникот е означен како достапен за работа на далечина (works_remote). Потоа се враќаат само активни постови за кои работникот поседува барем една од потребните специјалности. Доколку работникот не работи на далечина, дополнително се применува просторен филтер со ST_DWithin, кој ги ограничува резултатите на постови во радиус од 1500 метри. За секој резултат се пресметува растојание со ST_Distance и резултатите се подредуваат според најблиските огласи. Оваа функција би се користела во делот каде ќе се прикажува и мапата (QGis) за да се прикажат постовите како картички.
fn_application_workers_for_post(p_post_id, p_limit)
Оваа функција враќа листа на работници кои аплицирале за одреден пост. За секој работник се враќаат основни информации и растојанието од локацијата на постот. Дополнително се применува филтер за специјалности и радиус од 1500 метри доколку работникот не работи од далечина. Резултатите се подредуваат според најблиските работници до локацијата на постот. Оваа функција би се користела во делот каде ќе се прикажува и мапата (QGis) за да се прикажат мајсторите како картички.
fn_draw_worker_location(p_worker_id)
Оваа функција ја враќа точната географска локација на одреден работник. Се користи за визуелизација на работникот на мапа, при што се враќа неговиот worker_id и координатите (geom) од табелата location. Се користи во QGis.
fn_draw_active_posts_in_worker_region(p_worker_id, p_limit)
Оваа функција ги прикажува сите активни постови во регионот на одреден работник. Се филтрираат само постови за кои работникот ги исполнува потребните специјалности. Доколку работникот не работи од далечина, се применува просторен филтер со радиус од 1500 метри. Се користи во QGis.
fn_draw_worker_to_post_lines(p_worker_id, p_limit)
Оваа функција креира линии помеѓу работникот и постовите на кои одговара. Се користат само активни постови и се применува филтер за специјалности. Ако работникот не работи од далечина, се применува ограничување на растојание од 1500 метри. За секој пост се враќа линија (ST_MakeLine) и растојание помеѓу работникот и постот. Се користи во QGis.
fn_draw_worker_notRemote_region(p_worker_id)
Оваа функција ја прикажува работната зона на работникот кој не работи на далечина. Ако работникот не е remote, се креира кружна зона околу неговата локација со радиус од 1500 метри користејќи ST_Buffer. Ако работникот е remote, функцијата не враќа резултат. Се користи во QGis.
fn_draw_post_location(p_post_id)
Оваа функција ја враќа точната локација на одреден пост. Се користи за визуелизација на мапа и враќа post_id, наслов и геометрија на постот. Се користи во QGis.
fn_draw_workers_applied_to_post(p_post_id, p_limit)
Оваа функција ги прикажува сите работници кои аплицирале за одреден пост. За секој работник се враќа неговата локација и растојанието до постот. Резултатите се подредуваат според најблиските работници. Се користи во QGis.
fn_draw_post_to_applicant_lines(p_post_id, p_limit)
Оваа функција креира линии помеѓу постот и сите работници кои аплицирале за него. Се користи за визуелизација на поврзаноста помеѓу огласите и кандидатите. За секоја врска се враќа линија и растојание помеѓу постот и работникот. Се користи во QGis.
Скрипта
[]
Attachments (4)
- Example_worker_not_remote.png (407.4 KB ) - added by 8 days ago.
- Example_application.jpg (55.7 KB ) - added by 8 days ago.
- MajStore_PostGis.sql (9.1 KB ) - added by 6 days ago.
- MajStore_PostGis_refactored.sql (7.6 KB ) - added by 6 days ago.
Download all attachments as: .zip


