Algoritam za crtanje kartograma
Glavni cilj CartoDraw algoritma za crtanje kartograma je brza generacija kartograma prihvatljive kvalitete. Zbog činjenice da ulazne karte često imaju više vrhova nego što je potrebno da se izračunaju dobri kartogrami, prvi je korak inteligentno odbacivanje točaka. Zatim slijedi određivanje linija uzorkovanja preko kojih se iterativno izvršava algoritam. One mogu biti određene automatski (horizontalne i vertikalne linije) ili mogu biti interaktivno unošene ljudskom rukom. Tada slijedi CartoDraw algoritam. U svakom koraku algoritma se oblik modificirane poligonalne mreže kontrolira funkcijom pogreške oblika.
Algoritam linije uzorkovanja
Ključ CartoDraw algoritma je heuristički algoritam linije uzorkovanja koji inkrementalno pomiče vrhove u odnosu na linije uzorkovanja. Linija uzorkovanja je linijski segment proizvoljne pozicije i duljine i podijeljena je u
dijelova
Točke odlomaka
definiraju
područja djelovanja poligonalne mreže, koja su okomita na liniju uzorkovanja (vidi sliku 1 lijevo).

Slika 1: Primjer algoritma linije uzorkovanja. Lijevo je područje djelovanja

a desno ograničeno područje djelovanja.
U jednom koraku algoritma linije uzorkovanja se svi vrhovi unutar određene udaljenosti (
) od
razmatraju za inkrementalno pomicanje (vidi sliku 1 lijevo). Neka
bude skup poligona koji ima barem jedan vrh u području djelovanja
. Faktor skaliranja
određuje se prema površinskoj pogrešci svih poligona
u području
:
![]() |
(1) |
Preostaje još odrediti smjer u kojem će se pomicati vrh i djelovati faktorom skaliranja
kako bi pomaknuli vrh. Pomicanje se može obaviti ili u smjeru linije uzorkovanja ili u smjeru linije odlomka
. Algoritam je prikazan algoritmom 1. Područja djelovanja linije uzorkovanja uvijek razapinju cijelo područje okomito na liniju uzorkovanja. Po želji se promjene mogu ograničiti tako da budu lokalne u oba smjera. Poligoni koji se promatraju mogu se opcionalno ograničiti na one koji su blizu linije uzorkovanja (vidi sliku 1 desno). Ta opcija neće utjecati na algoritam prikazan algoritmom 1.

Algoritam 1: Algoritam linije uzorkovanja za pomicanje vrhova poligona.
Glavni CartoDraw algoritam
Algoritam pretpostavlja za ulaz skup poligona P (regije karte), vektor za skaliranje željenim statističkim parametrom i skup linija uzorkovanja
koje mogu biti određene automatski ili ručno. Izlaz je modificirani skup poligona P koji predstavlja kartogram. Algoritam radi na slijedeći način (vidi algoritam 2). Za svaku liniju uzorkovanja algoritam djeluje transformacijom pomoću linije uzorkovanja i provjerava rezultate. Ako je površinska pogreška
do koje se došlo radi transformacije linijom uzorkovanja ispod određene postavljene granice
i ako je distorzija oblika ispod određene granice
tada se promjene zadržavaju, a u suprotnom se odbacuju. Algoritam nastavlja s idućom linijom uzorkovanja sve dok nisu sve linije uzorkovanja djelovale na isti način. Nakon toga algoritam provjerava da li se, pri djelovanju svih linija uzorkovanja, poboljšala površinska pogreška i u slučaju da je, algoritam djeluje sa svim linijama uzorkovanja ponovo i ponavlja proceduru dok se god dolazi do poboljšanja (površinska pogreška ispod
). Budući da poboljšanje površinske pogreške mora biti pozitivno i iznad granice
u svakoj iteraciji, površinska pogreška se ujednačeno smanjuje i kraj algoritma je osiguran. Može se primijetiti da se, pri djelovanju individualne linije uzorkovanja, dopušta algoritmu da poveća površinsku pogrešku kako bi se izbjegao lokalni optimum.

Algoritam 2: CartoDraw algoritam.