= GIS систем во телекомуникациската база GIS делот ја проширува постојната телекомуникациска база со просторни податоци. Со него може да се прикажат мрежните локации и зоните на покриеност на мапа, да се провери кои кориснички адреси се во одредена зона и да се процени влијанието на мрежен прекин. Врската меѓу локација, кула, сектор и зона останува преку постојните релации: network_sites -> cell_towers -> tower_sectors -> coverage_zones. == Измени во структурата на базата Додадена е екстензијата PostGIS. Од latitude и longitude автоматски се создава точка со координатен систем SRID во network_sites.location и customer_addresses.location. Во coverage_zones се додадени coverage_radius_m и coverage_area. Радиусот може да биде од 100 до 50 000 метри, а coverage_area е полигон што ја претставува приближната покриеност на секторот. Корисничката адреса не се врзува директно со една зона преку странски клуч. Просторната проверка ST_Covers утврдува дали точката на адресата лежи во полигонот на секторот. Затоа една адреса може да се појави во повеќе зони на покриеност. === Како се создава зона на покриеност Функцијата build_sector_coverage ги зема точката на мрежната локација, насоката на секторот (azimuth), ширината на зракот (beamwidth) и радиусот. Со ST_Project пресметува точки по надворешниот лак и од нив создава насочен полигон. Ако beamwidth е 360 степени, создава кружна зона со ST_Buffer. Пред зачувување на coverage_zones, тригер ја повикува set_coverage_zone_geometry и го пресметува полигонот. Ако недостигаат координати или параметри, полигонот останува NULL. Ова е поедноставен модел за планирана покриеност, а не мерење на вистинскиот радио сигнал. == GIS погледи Во GIS делот се додадени осум погледи. Тие ги поврзуваат просторните податоци со постојните податоци за корисници, сообраќај и мрежни прекини и може да се користат како слоеви во QGIS. === Network Site Points v_network_site_points ги прикажува мрежните локации како точки, со нивниот код, име, регион, тип и статус. Се користи како основен слој за приказ на инфраструктурата на мапа. [attachment:"01 Network site points.sql"] === Network Coverage Map v_network_coverage_map ги прикажува полигоните на зоните заедно со локацијата, кулата, секторот, технологијата, насоката, радиусот и оценката за квалитет. Се користи за визуелен преглед на планираната секторска покриеност. [attachment:"02 Network coverage map.sql"] === Site Coverage Summary v_site_coverage_summary ги сумира секторите и зоните за секоја мрежна локација. Ги прикажува просечниот квалитет, обединетата површина во km² и бројот на отворени прекини. Преклопените делови од зоните не се бројат двапати при пресметката на површината. [attachment:"03 Site coverage summary.sql"] === Customer Coverage Detail v_customer_coverage_detail ја споредува примарната адреса на активен корисник со активните секторски полигони. За секој сектор што ја покрива адресата ги прикажува технологијата, квалитетот и растојанието до мрежната локација. [attachment:"04 Customer coverage detail.sql"] === Open Outage Customer Impact v_open_outage_customer_impact ги поврзува отворените мрежни прекини со примарните адреси во зоните на засегнатата локација. Се користи за процена кои корисници потенцијално се засегнати; резултатот не потврдува прекин на услугата кај секој прикажан корисник. [attachment:"05 Open outage customer impact.sql"] === Sector Traffic Map v_sector_traffic_map ги сумира повиците, SMS пораките и интернет сесиите по сектор и ги поврзува резултатите со секторскиот полигон. Секој вид сообраќај се агрегира одделно за спојувањето на табелите да не го умножи бројот на настани. [attachment:"06 Sector traffic map.sql"] === Coverage Overlap Analysis v_coverage_overlap_analysis ја пресметува геометриската пресечна површина на зони од различни мрежни локации. Секој пар зони се прикажува еднаш. Погледот помага да се анализира каде се преклопува планираната покриеност. [attachment:"07 Coverage overlap analysis.sql"] === Uncovered Primary Addresses v_uncovered_primary_addresses ги наоѓа примарните адреси на активни корисници што не се во ниту една активна секторска зона. Се користи за откривање можни празнини во моделот на покриеност. [attachment:"08 Uncovered primary addresses.sql"] == GIS функции === Build Sector Coverage build_sector_coverage го создава секторскиот полигон од точка, насока, ширина и радиус. [attachment:"01 Build sector coverage.sql"] === Set Coverage Zone Geometry set_coverage_zone_geometry ја наоѓа локацијата и параметрите на секторот и ја поставува геометријата на зоната пред зачувување. [attachment:"02 Set coverage zone geometry.sql"] === Rebuild Coverage After Site Change rebuild_coverage_after_site_change ги обновува зоните кога се менуваат координатите на мрежната локација. [attachment:"03 Rebuild coverage after site change.sql"] === Rebuild Coverage After Sector Change rebuild_coverage_after_sector_change ја обновува зоната кога на секторот се менуваат кулата, azimuth или beamwidth. [attachment:"04 Rebuild coverage after sector change.sql"] === Rebuild Coverage After Tower Move rebuild_coverage_after_tower_move ги обновува зоните на секторите кога кулата се преместува на друга локација. [attachment:"05 Rebuild coverage after tower move.sql"] === Find Nearest Network Sites find_nearest_network_sites ги наоѓа најблиските активни мрежни локации до зададени координати и го враќа растојанието во метри. [attachment:"06 Find nearest network sites.sql"] === Get Customer Primary Address Coverage get_customer_primary_address_coverage ги наоѓа активните сектори што ја покриваат примарната адреса на даден корисник. [attachment:"07 Get customer primary address coverage.sql"] === Calculate Site Coverage Area calculate_site_coverage_area_sq_km ги обединува полигоните на една локација и ја пресметува нивната вкупна површина без двојно броење на преклопувањата. [attachment:"08 Calculate site coverage area.sql"] == GIS процедури === Update Coverage Radius proc_update_coverage_radius го менува радиусот на избрана зона по проверка дека таа постои и дека новата вредност е меѓу 100 и 50 000 метри. Промената го активира тригерот што го создава новиот полигон. [attachment:"01 Update coverage radius.sql"] === Relocate Network Site proc_relocate_network_site ги проверува координатите и ја преместува избраната мрежна локација. Новата точка се создава автоматски од координатите, а тригерот ги пресметува повторно зоните поврзани со локацијата. [attachment:"02 Relocate network site.sql"] === Refresh All Coverage Geometries proc_refresh_all_coverage_geometries иницира повторна пресметка на полигоните за сите зони. Таа е корисна по поставување на GIS модулот или кога треба целосно да се обноват геометриите од тековните координати, насоки и радиуси. [attachment:"03 Refresh all coverage geometries.sql"] == GIS тригери === Coverage Zone Geometry Trigger trg_coverage_zones_set_geometry се извршува пред INSERT или UPDATE на coverage_zones. Ја повикува set_coverage_zone_geometry за полигонот да одговара на тековната локација, сектор и радиус. [attachment:"01 Coverage zone geometry trigger.sql"] === Site Coordinate Rebuild Trigger trg_network_sites_rebuild_coverage се извршува по промена на latitude или longitude во network_sites и ги обновува полигоните на секторите поврзани со таа локација. [attachment:"02 Site coordinate rebuild trigger.sql"] === Sector Settings Rebuild Trigger trg_tower_sectors_rebuild_coverage се извршува по промена на tower_id, azimuth или beamwidth во tower_sectors и ја обновува засегнатата зона. [attachment:"03 Sector settings rebuild trigger.sql"] === Tower Move Rebuild Trigger trg_cell_towers_rebuild_coverage се извршува по промена на site_id во cell_towers. Ги обновува зоните на сите сектори на преместената кула. [attachment:"04 Tower move rebuild trigger.sql"] == Индекси и примена GIS модулот додава GiST просторни индекси за адресните точки, точките на мрежните локации, пребарувањето по географско растојание и полигоните на зоните, како и индекс за поврзување на зоните со секторите. Тие ги поддржуваат пребарувањата за покриеност, блиски локации и спојувањето со податоците за мрежата. Во QGIS може да се прикажат мрежните локации, секторските полигони, непокриените адреси, преклопувањата и потенцијално засегнатите корисници. Моделот не ги пресметува влијанието на теренот, зградите или реалната моќност на антените, па картата служи за демонстрација и почетна анализа на покриеноста.