Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programová rozšíření funkcionality tvorby popisů v ArcGIS Ivan MATĚJČEK UP v Olomouci Katedra geoinformatiky Olomouc 2008.

Podobné prezentace


Prezentace na téma: "Programová rozšíření funkcionality tvorby popisů v ArcGIS Ivan MATĚJČEK UP v Olomouci Katedra geoinformatiky Olomouc 2008."— Transkript prezentace:

1 Programová rozšíření funkcionality tvorby popisů v ArcGIS Ivan MATĚJČEK UP v Olomouci Katedra geoinformatiky Olomouc 2008

2 více atributů více atributů Rozšířené popisy atributy z více tabulek (1:N) atributy z více tabulek (1:N) více řádkové popisy více řádkové popisy

3 Použitý software ArcGIS 9.2 ArcGIS 9.2 ArcGIS 9.1 ArcGIS 9.1 Microsoft Visual Basic 6.3 Microsoft Visual Basic 6.3 ArcGIS Desktop Help for VB6 developers ArcGIS Desktop Help for VB6 developers VBA Developers Help VBA Developers Help

4 Způsob tvorby dialogové okno (VBScript) dialogové okno (VBScript) externí skript (MS Visual Basic 6.3) externí skript (MS Visual Basic 6.3) Uložení: soubor s koncovkou.lxp Uložení: soubor s koncovkou.bas další možné:.cls,.txt

5 Dialogové okno Základní syntaxe Vytvoří jednoduchý (klasický) popis Function FindLabel ( [atribut]) FindLabel = [atribut] End Function Vytvoří pokročilé popisy Function FindLabel ( [atribut1], [atribut2] ) Dim Prom1, Prom2 Prom1 = [atribut1] Prom2 = [atribut2] FindLabel = Prom1 & Prom2 End Function

6 Dialogové okno 1. Popis silnic popisuje silnice 1. a 2. třídy, dálnice a rychlostní kom. třída silnice a její číslo pro lepší čitelnost popisu přidán callout (zpomaluje vykreslování) Function FindLabel ( [CISLO_SIL], [TRIDA_SIL]) 'define variable for Road type RoadClass = [TRIDA_SIL] 'define variable for Road number RoadNo = [CISLO_SIL] 'make color lable according to road type if ( RoadClass ="1") then FindLabel =" "&" "& "I/"& RoadNo&" " &" " end if if ( RoadClass ="2") then FindLabel =" "&" "& "II/"& RoadNo&" "&" " end if if ( RoadClass ="R") then FindLabel = " "&" "&"R"& RoadNo&" " &" " end if if ( RoadClass ="D") then FindLabel = " "&" "&RoadNo&" " &" " end if End Function

7 Dialogové okno 2. Popis omezení na mostech zobrazuje nosnost nebo výšku mostu hlavně pro popisování map nákladní dopravy popíše hodnotou atributu a dopíše jednotky pomocí vytvořeného stylu je udělán zákaz vjezdu Function FindLabel ( [LIMITATION],[TYPE] ) If ( [TYPE] ="under") Then FindLabel = [LIMITATION] & "m" ElseIf ( [TYPE] ="over") then FindLabel = [LIMITATION] & "t" end If End Function

8 Dialogové okno 3. Popis katastrální mapy popis (znak využití + číslo parcely) z dvou atributů znak fontem ZABAGED (v atributové tab. jen ARIAL) Function FindLabel ( [PARCELA], [ZNACKA]) 'define variable for field with parcel Number ParcNo = [PARCELA] 'define variable for field with parcel symbol (prepare for font ZABAGED) ParcUse = [ZNACKA] 'Choose Parcels with "r" for font ARIAL (arable) If ( ParcUse="r" or ParcUse="||") then FindLabel = " " & ParcUse & " " & vbNewLine & ParcNo 'Choose Parcels with "." for font ARIAL (groundplot) ElseIf ( ParcUse=".") then FindLabel = " " & ParcUse & " " & ParcNo 'Other Parcels for font ZABAGED (Arial symbols: 1,2,3,4,5,6,7,8,9,0) Else FindLabel = " " & ParcUse & " " & vbNewLine & ParcNo end if End Function

9 Dialogové okno 4. Popis vrcholů popisuje vrcholy názvem, výškou a jednotkou části popisů se dají zaměňovat a měnit v nich text Function FindLabel ( [NAZEV], [VYSKA] ) Dim name, height, PointSize, Unit 'define variable for field with name of mountain name = [NAZEV] 'define variable for field with height of mountain height = [VYSKA] 'define variable for size of symbol (symbology) PointSize = 18 'define variable for text behind mountain height Unit = " m n. m." FindLabel = name & vbNewLine & " " &"" & " " & vbNewLine &height&Unit End Function

10 Dialogové okno 5. Popis adresy nesplňuje 1. normální formu (atribut je dále dělitelný) z atributu vytvoří více řádkový popis Function FindLabel ( [ADRESS] ) Dim adr, newS, i, j, Div_M 'define variable for field with atribut not in 3rd normal form adr = [ADRESS] Div_M = "," i = 1 Do While i <= Len(adr) j = 1 ' check if previous char is a space If InStr(1, Mid(adr, i, 1), Div_M, vbTextCompare) > 0 Then ' space found newS = newS&vbNewLine & (Mid(adr, i+1, 1)) Else newS = newS & (Mid(adr, i, 1)) End If i = i + 1 Loop FindLabel = newS End Function

11 Dialogové okno 6. Pravopis v názvech obcí v atributové tabulce špatně psaná velká a malá pís. v popise už gramaticky správně Function FindLabel ( [Name] ) newS = UCase(Mid(name, 1, 1)) 'Upcase 1st char i = 2 Do While i <= Len(name) hlp = "" j = 1 If InStr(1, Mid(name, i - 1, 1), " ", vbTextCompare) > 0 Then ' space found ' find other space and letters between spaces enter to variable "hlp" Do While InStr(1, Mid(name, i - 1 +j, 1), " ", vbTextCompare) = 0 hlp = hlp & LCase(Mid(name, i-1+j, 1)) j = j + 1 If j = 4 Then exit Do 'max. lenght of preposition Loop If hlp = upon or hlp = under Then newS = newS & LCase(Mid(name, i, 1)) ElseIf hlp = Ain or hlp = by Then newS = newS & LCase(Mid(name, i, 1)) Else newS = newS & UCase(Mid(name, i, 1)) End If ' second and other letters are lower case Else newS = newS & LCase(Mid(name, i, 1)) End If i = i + 1 Loop FindLabel = NewS End Function

12 Dialogové okno 7. Popsání průmyslu ve městě různé způsoby zapisování prům. do atributové tab. nutno vytvořit nové pole s kódy průmyslu v tabulce název města, druhý řádek symboly průmyslu (font) Function FindLabel ( [Industry], [Name] ) Dim ind, name, L_Ind, i, j, Div_M, hlp ind = [Industry] name = [Name] L_Ind="" Div_M = "," L_Ind = (Mid(ind, 1, 1)) i = 1 Do While i <= Len(ind) j = 1 ' check if previous char is a space If InStr(1,,Div_M, vbTextCompare) > 0 Then hlp = (Mid(ind, i+1, 1)) Select Case hlp Case "1" L_Ind = L_Ind&" " & (Mid(ind, i+1, 1)) Case "2" L_Ind = L_Ind&" " & (Mid(ind, i+1, 1)) Case "3" L_Ind = L_Ind&" " & (Mid(ind, i+1, 1)) Case "4" L_Ind = L_Ind&" " & (Mid(ind, i+1, 1)) Case "5" L_Ind = L_Ind&" " & (Mid(ind, i+1, 1)) End Select End If hlp = "" i = i + 1 Loop FindLabel = name&vbNewLine&L_Ind End Function

13 Dialogové okno Výhody předdefinovaná funkce FindLabel() sama vkládá popisy do mapy rychlé formátování popisů možnost popisovat z více atributů ulehčená práce s popisy (tagy) Nevýhody možnost vepsat pouze jednu funkci použít jen dva atributy špatné psaní kódu (malé okno, které se nedá zvětšit)

14 1:N Externí skript 1. Popis geologických map tabulky v relaci 1:N (číselník hornin) popis v mapě podle číselníku a první písmeno ze stáří

15 Externí skript 2. Určení geometrie vrstvy skripty na esri.com jsou vždy určeny pro popis jednoho typu geometrie (bod, linie, polygon) Funkce – určí typ geometrie vrstvy – podle toho vloží popis – dá se zavolat z libovolného skriptu

16 Externí skript Výhody možnost vepsat více funkcí použít neomezeně atributů mnoho předdefinovaných objektů dobrá nápověda vložení skriptu do toolbaru pod vytvořený knoflík Nevýhody nutno doinstalovat nápovědu obtížné vkládání popisů do mapy (nová funkce) obtížně získaná hodnota atributů (přes více vlastností)

17 všechny soubory mají anglické názvy ve skriptech jsou proměnné anglicky v každém skriptu je srozumitelný anglický komentář ke každému skriptu je readme.txt - anglicky - obsahuje popis skriptu a návod k instalaci - v jaké verzi a licenci funguje (vyzkoušené ArcGIS 9.1 ArcView a ArcGIS 9.2) Komentáře a návody

18 stránky zip složka (skript + readme.txt) Vložení na web

19 DĚKUJI ZA POZORNOST


Stáhnout ppt "Programová rozšíření funkcionality tvorby popisů v ArcGIS Ivan MATĚJČEK UP v Olomouci Katedra geoinformatiky Olomouc 2008."

Podobné prezentace


Reklamy Google