Kartais gali pasirodyti, kad visos žemėlapių įdomybės yra tik stambiausiame mastelyje, kad smulkesniuose tiesiog rodome mažiau duomenų. Bet ne viskas taip paprasta. Štai kaip atrodo geležinkeliai 11 mastelyje:
Plika akimi matosi, kad geležinkelis nubraižytas su problemomis. Padidinkime šį piešinį:
Kai kuriose vietose matome netvarkingus geležinkelio „punktyrus“ (apibrėžta raudonai). Kitose vietose matome, kad buvo bandyta braižyti visas esamas geležinkelio linijas, o tokiame mastelyje jos netelpa, todėl gavosi makalynė (apibrėžta mėlynai).
Abi šios problemos atsiranda dėl to, kad kuo smulkesnis mastelis, tuo labiau objektų mastelis neatitinka žemėlapio mastelio: jei mastelis yra 1:50000, tai 3 metrų pločio geležinkelio linija žemėlapyje turėtų būti 0,06mm pločio! Geležinkelį tenka braižyti žymiai platesniu, kad jis apskritai matytųsi žemėlapyje. Realiame gyvenime šalia esančias geležinkelio linijas tenka braižyti vieną ant kitos. Todėl ir gauname košę-makalošę.
Tai taipogi reiškia, kad vektorinėse kaladėlėse yra daugiau informacijos, nei jos realiai reikia: dėl to ilgiau užtrunka kaladėlių kūrimas, daugiau kilobaitų reikia persiųsti internetu ir naršyklės daugiau laiko užtrunka braižydamos informaciją žemėlapyje.
Generalizacija
Tokios problemos sprendžiamos naudojant kartografinę generalizaciją. Generalizacija – tai procesas, kurio metu geoobjektai pašalinami, paryškinami, pastumiami ar pan. tam, kad smulkesnio mastelio žemėlapyje vis tiek būtų įmanoma perduoti norimą informaciją ir žemėlapis neatrodytų kaip košė. Generalizacija daryta nuo senų laikų, bet formaliai ją aprašinėti pradėta XIXa. Šiuo metu, kai išplito GIS naudojimas, automatinė generalizacija yra viena iš įdomiausių sričių, nes reikia matematiškai, algoritmais apibrėžti tai, ką dalis kartografų laiko ne mokslu, o menu. Kas norite daugiau informacijos apie generalizaciją, galite jos rasti internete, kad ir šitoje kiek senstelėjusioje, bet vis dar tinkančioje GITTA medžiagoje.
Sprendimas
Tokios kelių koncentracijos generalizavimo sprendimas yra vienas iš paprastesnių:
- Pradiniai duomenys – geležinkelių keliai (imame tik pagrindinius bėgius, išmetame šalutinius, atsišakojimus ir pan.) – mėlyni vektoriai.
- Aplink visus geležinkelius paišome buferį (tarkim 40 metrų) ir visų geležinkelių buferius sujungiame į vieną diiiiiidelį poligoną – žalias poligonas.
- Tada randame tokio gauto žalio poligono apytiksles vidurio linijas – juodi vektoriai (piešinyje jie šiek tiek kampuoti, nes matomi duomenys dar ir papildomai supaprastinti tiek, kiek užtenka smulkesniame mastelyje).
Visa ši operacija su visais Lietuvos geležinkeliais neužtrunka nei minutės.
Rezultatas toks:
Kiti elementai
Tokios pačios problemos yra su automobilių keliais (tarkime A1, A2 ir kai kurių kitų kelių atkarpos yra dvigubos). Taip pat generalizuoti reikėtų ir plotus. Tikriausiai sudėtingiausias darbas – generalizuoti namus (pradžioje supaprastinti jų geometriją, tada juos praretinti ar sujungti, galiausiai apjungti į didesnius pastatų plotus). Tokiems dalykams vien standartinių PostGIS funkcijų jau neužteks. Bet čia jau užsiėmimas ateičiai.