Tvorba kartodiagramov v GeoMedii
GeoMedia, kartodiagram | 10.05.2011
V sekcii tipy a triky Vám prinášame ďalšiu zaujímavú tému – tvorbu kartodiagramov v GeoMedii. Na prvý pohľad sa Vám môže zdať, že uvedený postup je zložitejší, ale na druhej strane tvorba kartodiagramov pomocou funkčných atribútov ponúka širokú paletu možností ako svoj výstup upravovať a modifikovať, čo je v prípade profesionálneho nasadenia kľúčové. Intergraph ponúka riešenie, ktoré nie je striktne ohraničené funkcionalitou softvéru, a tým ponúka oveľa viac možností prispôsobenia.
V prostredí Geomedia je možné jednoduchý “koláčový” kartodiagram vytvoriť pomocou symbolu, ktorého veľkosť je založená na hodnote atribútu. Nastavenie sa vytvára cez Properties (vlastnosti) symbolu a záložku Advanced, kde je možné definovať veľkosť symbolu na základe hodnoty atribútu, pričom je možné definovať aj zložitejšie matematické operácie na určenie veľkosti symbolu.
Ďalším typom najčastejšie používaného kartodiagramu je stĺpcový kartodiagram. V prostredí Geomedia je možné ho vytvoriť pomocou funkčných atribútov. Uvádzame stručný postup ako ho vytvoriť.
- Vytvoríme tri funkčné atribúty pre požadovaný plošný objekt
- Prvý funkčný atribút (A) predstavuje prvý stĺpec kartodiagramu. Každý stĺpec má presne definovanú šírku a premennú výšku, ktorá závisí na troch atribútoch (A, B, C). Pre prvý stĺpec má výraz funkčného atribútu, ktorý udáva jeho výšku tvar A/(A+B+C). Pre druhý stĺpec B/(A+B+C) a pre tretí C/(A+B+C).
- Pre lepšiu vizualizáciu jednotlivých stĺpcov je dôležité stanoviť vhodnú hodnotu šírky a faktora zväčšenia pre ich výšku. Ako príklad môžeme stanoviť šírku na hodnotu 50 jednotiek a faktor na prevýšenia na hodnotu 1000.
- Každý stĺpec kartodiagramu definujeme pomocou piatich lomových bodov (Prvý = Piaty). V tomto prípade súradnice prvého bodu umiestnime do centroidu danej plochy. Ostatné súradnice vypočítame na základe posunov voči prvému bodu.
- Pre lepšie pochopenie celého procesu tvorby, uvádzame posuny aj pre prvé, počiatočné body kartodiagramu
- Funkčný atribút A pre prvý stĺpec má hodnotu (jeden riadok reprezentuje jeden lomový bod)
- Pre druhý stĺpec B potrebujeme do hodnoty prvého lomového bodu premietnuť šírku stĺpca:
- Pre tretí stĺpec musíme pridať dvojnásobnú šírku stĺpca vzhľadom na prvý lomový bod:
- Pre lepšiu čitateľnosť môžeme uvedené výrazy nahradiť nasledovnými funkčnými atribútmi:
- Finálny výraz na vytvorenie stĺpcového kartodiagramu bude mať nasledovný tvar:
CREATEPOLYGON(
MOVE(CENTERPOINT(Input.Geometry1), 0*50, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 0*50, Input.A/(Input.A+Input.B+Input.C)*1000, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*50, Input.A/(Input.A+Input.B+Input.C)*1000, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*50, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 0*50, 0, 0, 1))
CREATEPOLYGON(
MOVE(CENTERPOINT(Input.Geometry1), 1*50, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*50, Input.A/(Input.A+Input.B+Input.C)*1000, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*50, Input.A/(Input.A+Input.B+Input.C)*1000, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*50, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*50, 0, 0, 1))
CREATEPOLYGON(
MOVE(CENTERPOINT(Input.Geometry1), 2*50, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*50, Input.A/(Input.A+Input.B+Input.C)*1000, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 3*50, Input.A/(Input.A+Input.B+Input.C)*1000, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 3*50, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*50, 0, 0, 1))
Height = 10
Width = 50
Total = Input.A + Input.B + Input.C
Perc_A = ROUND(Input.A / Output.Total, 5) * 100
Perc_B = ROUND(Input.B / Output.Total, 5) * 100
Perc_C = ROUND(Input.C / Output.Total, 5) * 100
A = CREATEPOLYGON(
MOVE(CENTERPOINT(Input.Geometry1), 0*Output.Width, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 0*Output.Width, Output.Perc_A*Output.Height, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*Output.Width, Output.Perc_A*Output.Height, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*Output.Width, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 0*Output.Width, 0, 0, 1))
B = CREATEPOLYGON(
MOVE(CENTERPOINT(Input.Geometry1), 1*Output.Width, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*Output.Width, Output.Perc_B*Output.Height, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*Output.Width, Output.Perc_B*Output.Height, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*Output.Width, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 1*Output.Width, 0, 0, 1))
C = CREATEPOLYGON(
MOVE(CENTERPOINT(Input.Geometry1), 2*Output.Width, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*Output.Width, Output.Perc_C*Output.Height, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 3*Output.Width, Output.Perc_C*Output.Height, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 3*Output.Width, 0, 0, 1),
MOVE(CENTERPOINT(Input.Geometry1), 2*Output.Width, 0, 0, 1))
Pre vytvorenie kartodiagramu pre konkrétne účely je potrebné nastaviť si vlastné hodnoty funkčných atribútov Height a Width.
V prípade akýchkoľvek otázok nás neváhajte kontaktovať na info (zavináč) gbase (bodka) sk.







