dokumentace projekt - informatika 2 -...
Post on 16-Oct-2020
3 Views
Preview:
TRANSCRIPT
Ceske vysoke ucenı technicke v Praze
Fakulta stavebnı
Katedra mapovanı a kartografie
Dokumentace
Projekt - Informatika 2
Program pro praci s daty projektu OC10011
Vladimır Holubec
Nikola Nemcova
29. kvetna 2012
Obsah
1 Zadanı 3
2 Program PMView 3
2.1 Externı knihovny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Microsoft .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 WPF Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.4 Excel Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.5 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Tvorba GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Popis trıd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1 Trıda about win . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 Trıda DB conn win2 . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.3 Trıda Dotazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.4 Trıda MainWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.5 Trıda napln graf win . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.6 Trıda Prohlizec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.7 Trıda QueryBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.8 Trıda App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Vypis funkcı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Program PMView - uzivatelske rozhranı 27
3.1 Prace s databazı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.1 Pripojenı k databazi . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.2 SQL dotazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Prace s daty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Graf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Napoveda a podpora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2
3.5 Web browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Zaver 33
3
1 Zadanı
Cılem projektu bylo vytvorenı aplikace, kterou budou vyuzıvat studenti v ramci resenı
projektu tykajıcı se vyvoje urbannıch trıd. Dalsım cılem projektu bylo naucit se programo-
vat v jazyku C#, seznamit s moznostmi WPF. Prıpadne vyzkouset knihovny ArcObjects
pro .NET. Tento program byl zpracovavan jako soucast projektu OC10011 – Modelovanı
urbanizovanych uzemı s cılem snızit negativnı vlivy lidske cinnosti (2010–2012, MSM/OC),
jehoz hlavnım resitelem je doc. Ing. Lena Halounova CSc. Z FSv CVUT v Praze. Cely pro-
jekt se zabyva vyvojem funkcnıch ploch v 50-ti mestech CR od roku 1950 do soucasnosti.
Tato data byla jeste donedavna uchovavana v tabulkach Microsoft Excel a v databazi na
MS SQL Server 2008 R2 (dale jen Server). Vysledny program by mel slouzit studentum,
kterı zpracovavajı jednotliva mesta. Mel by jim umoznit pripojit se k tomuto serveru a
zıskat z nej potrebna data pro svou praci. Program by mel data zobrazovat ve forme ta-
bulky, dale je exportovat ( naprıklad do formatu XML, ci CSV) a vizualizovat nektera
data ve forme grafu. Program je psan v jazyce .NET (C#). Dotazovanı na Server probıha
pomocı jazyka T-SQL.
2 Program PMView
Tento program byl vytvoren jako nastroj pro praci s daty projektu COST (OC10011).
Slouzı jako databazovy klient, ktery na zaklade T-SQL dotazu zıska a vizualizuje data z
databaze. Zıskana data muze dale exportovat do formatu XML a XLS, a zobrazovat do
grafu. Exportovana data ve formatu XML umı dale zpetne nacıst, tedy je mozne tyto data
vizualizovat v grafu i bez staleho pripojenı k internetu.
SQL dotazy je mozne zadavat dvema zpusoby a to vybranım statickeho dotazu a
nebo sestavenım hlavnıho dotazu pomocı integrovaneho Query Builderu. Doplnkovymi
prvky programu je integrovany prohlızec pro webovou aplikaci projektu COST (autori
4
H.Kadlecova a J.Kratochvıl). Program je distribuovan ve dvou verzıch. Verze Pro ma pl-
nou funkcionalitu, vcetne betaverzı prvku, a verzi NoArc. Verze pro obsahuje oproti verzi
NoArc, prohlızec shapefilu, k jehoz spustenı je ale potreba mıt na pocıtaci nainstalovan
ArcGIS licence manager spolu s platnou licencı na ArcInfo, a emailoveho klienta, ktery je
teprve v rane fazi vyvoje.
Cely projekt byl naprogramovan v jazyce C# v prostredı Microsoft Visual Studio 2010.
Graficka cast byla navrzena na platforme Windows Presentation Foundation. Dotazy byly
psany v jazyku Microsoft T-SQL (Transact-SQL). Ve vysledku je program publikovan do
tzv. One-Click instalatoru, ktery program instaluje do slozky AppData (bez moznosti volby
uzivatele), nicmene je velmi jednoduchy na pouzitı a to vcetne moznosti online aktualizacı
programu z nastavene slozky.
Aktualnı verzi programu je mozne stahnout na strankach
http://geo1.fsv.cvut.cz/cost/actual release/.
Aplikace je vytvarena pod Microsoft Framework 4.0.
2.1 Externı knihovny
Pro vyvoj byly pouzity knihovny frameworku Microsoft .NET, dale knihovna WPF
Toolkit a knihovna ExcelLibrary.
2.1.1 Microsoft .NET
Srdcem platformy .NET je jadro nazvane .NET framework. Toto jadro se stara o tri
zakladnı ukoly:
• Je run-time prostredım pro beh aplikacı, tzn. ze, aplikace pro nej napsane jsou s nım
pevne spjaty a bez tohoto prostredı je nelze spustit.
5
• Poskytuje moznosti pro tvorbu ASP.NET stranek i webovych sluzeb.
• Obsahuje velmi sirokou radu knihoven, objektove orientovanych trıd usnadnujıcıch
radu ukolu (bezpecnost, komunikaci, prace s databazemi a datovymi zdroji).
.NET framework prinası vylepsene mechanismy spravy pameti – tzv. Garbage Collector
monitorujıcı pamet’ a zdroje, ktere jsou v aplikaci pouzity a dle potreb je vracı zpet systemu.
Toto osetrenı podstatne zlepsuje praci naprıklad se spatne napsanym kodem, kdy by nemelo
dojıt k totalnımu vycerpanı systemovych prostredku a naslednemu vyrazenı serveru.
2.1.2 WPF Toolkit
WPF Toolkit je sada ovladacıch prvku urcenych pro Windows Presentation Foundation,
ktere jsou zdarma dostupne, vcetne zdrojovych kodu. Jedna se o funkce ,ktere jsou kan-
didaty na to, stat se plnohodnotnymi funkcemi dalsı verze .NET Frameworku. Pro aplikaci
PMView - vykreslovanı grafu byl nainstalovan WPF Toolkit z stranek
http://wpf.codeplex.com/.
2.1.3 WPF
Windows Presentation Foundation (WPF) je podmnozinou .NET Frameworku od verze
3.0, ktery pouzıva znackovacı jazyk XAML pro vytvorenı uzivatelsky bohateho rozhranı
(RUI). Predchudcem Windows Presentation Foundation (WPF) jsou Windows Forms (Win-
Forms). WPF nabızı nove moznosti hlavne v oblasti grafickeho zpracovanı aplikace, ktere
naprıklad v jeho predchudci - WinForms nejsou mozne. WPF je zamereno na uzivatelsky
bohate aplikace. Uzivatel muze vyuzıt nasledujıcıch moznostı
• vektorove grafiky - umoznuje graficky bezestratovou zmenu velikosti prvku, barevne
gradienty, pouzıvanı geometrickych tvaru
6
• animace - casova nebo za pouzitı framu, rotace, prechod barev, 3D animace a mnoho
dalsıch
• multimedia - prace s audiem a videem (avi, mpeg, wmv)
• efekty - stıny, zare, rozostrenı, pruhlednost nebo zrcadlenı
• interaktivnı 3D aplikace - poskytuje podmnozinu funkcnı z Direct3D zamerenou na
multimedia, dokumenty a uzivatelske rozhranı
• DataBinding - provazanı dat v aplikaci
2.1.4 Excel Library
Cılem tohoto projektu je poskytnout puvodnı .NET resenı pro vytvarenı, ctenı a upravu
souboru Excel bez pouzitı COM interop nebo OLEDB connection. V soucasne dobe je
format .xls (BIFF8) implementovan, v budoucnu bude podporovan take format .xlsx (Excel
2007). Umı cıst listy v sesitu a bunky v listu. Dale umı cıst obsah bunek (text, cıslo, datum
nebo chyba) a format bunky (pısmo, zarovnanı, linestyle, pozadı atd.). Excel library umı
take zaregistrovat obrazky v souboru, zıskat informace o velikost obrazku, pozici, formatu.
Muze vytvorit sesit a ulozit do souboru.
2.1.5 XML
XML (Extensible Markup Language) je obecny znackovacı jazyk, ktery byl vyvinut a
standardizovaan konsorciem W3C. Jazyk je urcen predevsım pro vymenu dat mezi aplika-
cemi a pro publikovanı dokumentu, u kterych popisuje strukturu z hlediska vecneho obsahu
jednotlivych castı.
XML nenı zavisly na operacnım systemu. Syntaxe spocıva v pouzıvanı tagu (podobne
jako html). Prvky tagu jsou definovany slovnıky. Soubory XSD. Ty vlasttne zajist’ujı onu
7
velkou variabilitu. Tudız pouzitı jednoho slovnıku muze jazyk XML slouzit pro zapis po-
lohovych informacı - zjednodusena predstava o formatu GML, ci prave naopak o jazyku
XAML.
2.2 Tvorba GUI
Mimo klasickeho kodove tvorby uzivatelskeho rozhranı znameho jako WinForms dava
Microsoft vyvojaruv moznost vytvorit sva GUI na platforme Windows Presentation Foun-
dation (WPF) v jazyce XAML. A prave na nı byla zalozena graficka cast tohoto programu.
XAML je znackovacı jazyk vychazejı z jazyka XML. Microsoft prisel s prvnı verzi v roce
2003. Od te doby moznosti WPF znacne rozsıril naprıklad o Interaktivnı 3D, podpora vıce
dotykoveho ovladanı, nove prvky jako kalendar a, DataGrid atd. Dıky XAML je mozne
psat funkcnı graficke rozhranı programu bez nutnosti pouzıvat Visual Studio. To je patrne
v ukazce jednoducheho tlacıtka.
<Button xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation Content
=”OK”/>
Pokud bychom tento kod ulozili jako XAML a nacetli ho do Internet Explorer, zobrazı
se nam toto tlacıtko. Z prıkladu je videt, jak jednoduche tedy je vytvorit GUI pomocı
XAML, jedna se pouze o urcitou XML strukturu, kde jednotlive elementy jsou prvky GUI.
Dalsı velkou vyhodou je propojenı XAML a C# kodu, kdy muzeme u elementu XAML
napsat jeho udalost (naprıklad Click) a tu pak pouze rozepsat v C#.
<Button xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation Content
=”OK”Click=”button click”/>
Zakladem GUI je element Window, v prıpade tohoto programu RibbonWindow, jehoz
pod elementy jsou ruzne ”skupinove”prvky jako naprıklad Stack Panel, Grid, Wrap Paenl,
8
atd. , ve kterych jsou umısteny prvky jako je Combo Box, Buton aj.
Ukazka kodu:
<Window x:Class="PM$\_$view.about$\_$win"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="O Programu" Height="181" Width="614" ResizeMode="NoResize">
<Grid>
<TextBlock Height="23" Margin="133,12,134,0" Name="Program" ...
<TextBlock Margin="33,80,152,0" Name="Sestaveni" ...
</Grid>
</Window>
V ukazce nejprve definujeme prvek okna a jmeno trıdy, ktera ho v kodu reprezentuje
<Window x:Class=”PM view.about win”
Dale definujeme slovnıky XMAL
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
Zakladnı charakteristiky okna jako jmeno velikost a moznost zmeny velikosti:
Title=”O Programu”Height=”181”Width=”614”ResizeMode=”NoResize”>
Nakonec definujeme prvek, do ktereho budeme ovladacı prvky ukladat - zde se jedna o
GRID - <Grid>.
Uvnitr pole pak definujeme jednotlive prvky jako naprıkald zde textove pole <TextBlock
Height=”23”Margin=”133,12,134,0”Name=”Program”. . .
V ukazce je nastavovana velikost, odsazenı od jednotlivyhc kraju GRIDu a jmeno. Dale
9
zde muzeme nastavit naprıkald text, viditelnot, ci ruzne udalosti naprıklad udalost zmeny
Textu uvnitr pole - TextChange.
2.3 Popis trıd
Program se sklada z techto trıd (pokud je za nazvem trıdy uvedeno v zavorce W -
znamena to, ze trıda ma vlastnı okno definovane v souboru s prıponou XAML):
• about win (W)
• DB conn win2 (W)
• Dotazy
• MainWindow (W)
• napln graf win (W)
• Prohlizec (W)
• QueryBuilder (W)
• App (W)
2.3.1 Trıda about win
Trıda definuje Okno, ktere podava informace o programu – nazev, verze, datum sesta-
venı, kdo vytvoril. Dedı od trıdy Window.
Metody trıdy :
public about_win()
10
Konstruktor, ktery ma vypis informacı o programu na starosti. V bloku try catch je
osetrena moznost, kdy aplikace je z urciteho duvodu spoustena bez radne instalace. V te
chvıli se nezobrazuje verze programu.
2.3.2 Trıda DB conn win2
Trıda definujıcı okno slouzı k nastavenı pripojovacıho retezce k SQL serveru Dedı od
trıdy Window.
Metody trıdy :
public DB_conn_win2() { implicitnı kontruktor
pripoj_DB_Click(object sender, RoutedEventArgs e)
Udalost definujıcı chovanı po stisknutı tlacıtka pro nastavenı pripojenı k databazovemu
serveru.
private void local_radio_Checked(object sender, RoutedEventArgs e)
Udalost, ktera popisuje pripojenı, pokud je vybrano pripojenı k lokalnımu serveru. Nejprve
jsou lokalnı servery vyhledany. V prıpade, ze nenı zadny lokalnı server nalezen, metoda
tuto skutecnost zahlası a navratı se do stavu po inicializaci okna.
private void remote_radio_Checked(object sender, RoutedEventArgs e)
Udalost popisuje prıpad, kdy je vybrano pripojenı na MS SQL Server nainstalovany na
serveru FSv CVUT - geo1. Je zde osetreno, ze pokud nenı zadane zadne uzivatelske jmeno,
11
nenı mozne nastavit pripojenı.
private void other_remote_radio_Checked(object sender, RoutedEventArgs e)
Udalost popisuje prıpad, kdy je vybrano pripojenı na jiny vzdaleny MS SQL server. Je zde
osetreno pripojenı a to tak, ze nenı mozne do doby, nez jsou vyplneny polozky serveru a
prihlasovacıho jmena. Pokud je pole vymazano, zapis hesla, uzivatel a pripojenı k databazi
je opet zakazan.
private void name_of_user_TextChanged(object sender, TextChangedEventArgs e)
Udalost se zavola, pokud je zmenen text pole uzivatele. Povolı zapis hesla a zaroven je
povoleno tlacıtko pro potvrzenı vyberu volby MS SQL serveru Pokud je pole vymazano,
zapis hesla a pripojenı k databazi je opet zakazano (podmınka, ze delka textu uzivatele
musı byt ¿ 0).
private void local_servers_SelectionChanged(object sender,SelectionChangedEventArgs e)
Udalost, povolı tlacıtko pripojenı k lokalnımu serveru, pouze tehdy, je-li vybran nejaky
Server ze seznamu.
private void server_text_string_TextChanged(object sender, TextChangedEventArgs e)
Udalost, ktera pro pripojenı k libovolnemu MS SQL Serveru povolı vyplnenı polozky
uzivatele. Funkcionalita podobna udalosti - name of user TextChanged.
12
private void VycistPole()
Metoda, ktera v prıpade zmeny volby typu serveru (zmena volby radio buttonu) vycistı
textova pole a seznam lokalnıch serveru proto, aby zde pro prehlednost nezustavaly ele-
menty vyplnene v predeslem kroku.
2.3.3 Trıda Dotazy
Trıda definuje a zaroven obsahuje staticke SQL dotazy, ktere se zobrazujı v Combo-
Boxu hlavnıho okna.
Promenne trıdy :
Dictionary<string, string> SlovnikDotazu = new Dictionary<string, string>()
Slovnık definujıcı SQL dotaz pro Combo Box Prvnı string je hodnota, ktera se uzivateli
ukaze v Combo Boxu, jedna se o klıcovou hodnotu, nenı mozne jı zde mıt dvakrat. Nicmene
vzhledem k tomu, ze nenı mozne dotazy dynamicky pridavat, nahravat, nenı nutne tuto
skutecnost kontrolovat pomocı bloku Try Catch. Druhy string definuje vlastnı dotaz.
Metody trıdy :
public Dictionary<string, string> naplnslovnik()
Metoda, ktera po zavolanı vracı slovnık naplneny daty uvedenymi v tele.
Prıklad naplnenı:
SlovnikDotazu.Add("Vyber vse z roku 1965", @"SELECT * FROM
[COST_mesta].[dbo].[1965]");
13
2.3.4 Trıda MainWindow
Definuje trıdu MainWindow, ktera je odvozena od Ribbon Window. Tato trıda definuje
hlavnı okno programu.
Promenne trıdy :
string zbytek = "";
- promenna, do ktere se ukladajı data pro pripojovacı retezec k SQL serveru.
public Dictionary<string, int> data_paru = new Dictionary<string, int>();
- slovnık, do ktereho se kopırujı pary z okna pro nastavenı grafu.
public Dictionary<string, double> data_paru2 = new Dictionary<string, double>();
- slovnık paru, ktere se predavajı pro zobrazen grafu.
public List<string> nazev_sl = new List<string>();
- list nazvu sloupcu, ktere se pouzıvajı v metode pro zobrazenı grafu.
napln_graf_win okno_graf;
- deklarace okna grafu.
14
Prohlizec webProhlizec;
- deklarace weboveho prohlızece.
QueryBuilder query;
- deklarace okna query builderu.
Dotazy SQLdotaz = new Dotazy();
- deklarace trıdy dotazu.
DataSet dSet = new DataSet();
- deklarace datasetu, ktery je z SQL dotazu naplnen.
int pocet_sloupcu2 = 0;
int pocet_radku2 = 0;
- promenne, ktere hlıdajı, zda je okno grafu jiz necım naplnene nebo ne.
Metody trıdy :
public MainWindow()
15
Konstruktor hlavnıho okna. Pri inicializaci definuje napojenı trıdy Dotazu na prvek Com-
boBox pro vyber statickych dotazu. Inicializuje objekt okna pro zobrazenı grafu - iniciali-
zovan je zde z vykonnostnıch duvodu.
DataSet Pripojeni(string retezec_pripojeni, string dotaz)
Metoda provadejıcı pripojenı k databazi, vracejıcı naplneny dataset.
private void vizualizujData(DataSet data)
Metoda, ktera vraceny dataset z pripojenı vizualizuje v tabulce. Zobrazı pomocı Ellipse
fill cervene / zelene kolecka (semafor) signalizujıcıho, zda je dataSet naplnen nejakymi daty.
private void CB_dotazy_SelectionChanged(object sender, SelectionChangedEventArgs e)
Udalost, ktera provede dotaz na databazi, pri zmene ComboBoxu. Provede dotaz, jehoz
Alias je vybran.
private void Menu_ClearTab_Click(object sender, RoutedEventArgs e)
Udalost, ktera vymaze obsah tabulky. Nastavı semafor na cervenou. Zakaze sama sebe,
nactenı grafu a exporty do XLS a XML. Pokud je zobrazen graf vymaze ho.
private void create_XML_Click(object sender, RoutedEventArgs e)
16
Udalost stisknutı tlacıtka, ktera nasledne provede pro export tabulky do XML.
private void create_XLS_Click(object sender, RoutedEventArgs e)
Udalost stisknutı tlacıtka, ktera nasledne provede export tabulky do Excelu Pro export je
externı knihovna ExcelLibrary.dll.
public static void CreateWorkbook2(String filePath, DataSet dataset)
Metoda pro export do excelu – metoda, ktera se nachazı ve vyse zmınene knihovne, musela
byt opravena a explicitne napsana. Duvodem bylo osetrenı prıpadu pro DB NULL hodnoty.
private void spojeniDB()
Metoda, ktere zobrazı okno pro vyber typu pripojenı, z okna prebere argumenty a nastavı
promenna pripojenı (cestu, heslo, username). Je moznost 3 typu pripojenı na:
FSV server v GEO1
Lokalnı server
Libovolny jiny server.
private void zobraz_data(napln_graf_win okno_graf)
Metoda pro zobrazenı grafu. Prebıra hodnoty z okna grafu.
17
private void nacti_graf_Click(object sender, RoutedEventArgs e)
Udalost, ktera zobrazı okno pro tvorbu grafu grafu. Je zde varianta, ze pokud nenı v grafu
nic nacteno, projde cela tato procedura – to znamena, ze do tabulky moznych promennych
v okne grafu jsou nacteny prvky. V prıpade, ze jiz nejaka data nactena jsou, je predpoklad,
ze okno je jen schovano (HIDE), tudız je preskoceno nacıtanı obsahu a okno se jen zobrazı.
private void load_XML_Click(object sender, RoutedEventArgs e)
Udalost, ktera nacıta XML soubor. Otevre Dialog pro otevrenı souboru, nacteny XML sou-
bor se nacte do datasetu a zobrazı v tabulce. Dale se s daty muze pracovat jako v prıpade
vysledku z SQL dotazu. Je to zde z duvodu, pokud uzivatel chce pracovat s jiz jednou
generovanymi daty, ktere ma ulozeny na disku. Pro zobrazenı grafu nastavı promenne, aby
se graf nove otevrel.
private void smaz_graf_Click(object sender, RoutedEventArgs e)
Udalost stisknutı tlacıtka, ktera smaze vytvoreny graf.
private void check_tab_Checked(object sender, RoutedEventArgs e)
Udalost po zaskrtnutı zobrazı tabulku.
private void check_tab_Unchecked(object sender, RoutedEventArgs e)
Udalost po odskrtnutı se tabulka schova.
18
private void check_graf_Checked(object sender, RoutedEventArgs e)
Udalost po zaskrtnutı zobrazı graf.
private void check_graf_Unchecked(object sender, RoutedEventArgs e)
Udalost po odskrtnutı se graf schova.
private void export_graf_Click(object sender, RoutedEventArgs e)
Udalost,pokud je nejaky graf aktivnı, je po stisku exportovan do png Pokud je graf prazdny,
uzivatel je na to upozornen.
private void graf_export(int sirka, int vyska, string obr_cesta)
Metoda pro vlastnı export obrazku do png. Vstupuje zde rozmer obrazku a cesta k nemu.
private void check_web_Checked(object sender, RoutedEventArgs e)
Udalost ,po zaskrtnutı se objevı okno s webovou prohlızeckou nastavenou na projekt Ka-
dlecova Kratochvıl.
private void uncheck()
Metoda, ktera je pridana do prohlızece jako delegat, ktera rıka, ze po odskrtnutı se okno
weboveho prohlızece zavre.
19
private void QueryBuild_DB_win_Click(object sender, RoutedEventArgs e)
Udalost stisknutı tlacıtka, otevre okno Query Builderu.
private void Hlavni_okno_SizeChanged(object sender, SizeChangedEventArgs e)
Udalost, pri zmene rozmeru hlavnıho okna, ktera hlıda to, aby pri zapnutych grafech a
tabulce mely oba prvky maximalne polovinu celeho prostoru Udalost pocıta s ruznymi
eventualitami zaskrtnutych checkboxu.
private void About_Click(object sender, RoutedEventArgs e)
Udalost stisknutı tlacıtka, otevre okno a zobrazı informace o programu.
private void Help_Click(object sender, RoutedEventArgs e)
Udalost stisknutı tlacıtka, zobrazı okno napovedy.
2.3.5 Trıda napln graf win
Trıda, ktere definuje okno prvku pro vyber velicin a nastavenı, tvorbu a vizualizaci
grafu, dedı od trıdy Window.
Promenne trıdy :
20
private Dictionary<string, int> dvojice = new Dictionary<string, int>();
Prozatim je public, ale chce to nechat private a doplnit vlastnost.
private List<string> sloupce = new List<string>();
private int typgrafu;
Metody trıdy :
public napln_graf_win()
Hlavnı konstruktor trıdy, inicializuje okno a vycistı ho.
private Dictionary<string, int> dvojice = new Dictionary<string, int>();
private List<string> sloupce = new List<string>();
private int typgrafu;
Trıdı promenne, definujıcı vybrane dvojice do grafu, pomocna promenna sloupec grafu a
typ grafu.
public Dictionary<string, int> d
public List<string> s
public int t
Vlastnosti, ktere nastavujı public prıstup k clensky promennym trıdy - slovnıku dvojic,
listu sloupcu a typu grafu. Tyto vlastnosti dovolı jen hodnotu zıskat, a nikoliv nastavit,
coz mimo trıdu nepotrebujeme.
21
private void addPair_Click(object sender, RoutedEventArgs e)
Udalost stisku tlacıtka, ktera pridava dvojice do listboxu dvojic.
private void hotovo_close_Click(object sender, RoutedEventArgs e)
Udalost stisku tlacıtka, ktere jen zavre toto okno, cımz umoznı dobehnout volacı metodu
ze souboru MainWindow.cs. Dobehnutı je umozneno volanım ShowDialog, takto dojde k
zobrazenı grafu. V podmınce If je osetren prıpad, kdy nejsou vybrany zadne dvojice.
private void radio_hist_Checked(object sender, RoutedEventArgs e)
Vybranım tohoto radiobutton nastavı uzivatel typ grafu na histogram (vertikalnı sloupce).
private void radio_sl_Checked(object sender, RoutedEventArgs e)
Vybranım tohoto radiobutton nastavı uzivatel typ grafu na sloupcovy (horizontalnı sloupce).
private void radio_pie_Checked(object sender, RoutedEventArgs e)
Vybranım tohoto radiobutton nastavı uzivatel typ grafu na kolacovy.
private void radio_point_Checked(object sender, RoutedEventArgs e)
Vybranım tohoto radiobutton nastavı uzivatel typ grafu na bodovy.
22
private void radio_line_Checked(object sender, RoutedEventArgs e)
Vybranım tohoto radiobutton nastavı uzivatel typ grafu na liniovy.
private void radio_vypln_lin_Checked(object sender, RoutedEventArgs e)
Vybranım tohoto radiobutton nastavı uzivatel typ grafu na liniovy, s vyplnı pod liniı.
private void remove_all_Click(object sender, RoutedEventArgs e)
Udalost stisku tlacıtka, vymaze vsechny vybrane dvojice.
private void remove_pair_Click(object sender, RoutedEventArgs e)
Udalost stisku tlacıtka, odebere vybranou dvojici z ListBoxu dvojic. Pokud uzivatel stiskne
tlacıtko (v prıpade, ze nenı vybrana zadna dvojice), zobrazı se mu prıslusna varovna zprava.
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
Udalost, ktera umele vyradı zavıranı okna pri stisknutı krızku v pravem hornım rohu okna.
Pokud uzivatel okno zavre, tak ho ve skutecnosti jen schova, tudız je mozne po znovu
otevrenı pokracovat s jiz nastavenymi hodnotami.
2.3.6 Trıda Prohlizec
Tato trıda, ktera dedı od Window, neobsahuje zadny kod, jen v XAML kodu je de-
finovany Webovy prohlızec se staticky nastavenou URL, na projekt PIN 2 skupiny Bc.
23
Hany Kadlecove a Bc. Jirıho Kratochvıla. Nenı pro tento projekt nijak podstatny, jako
plan do budoucna, nicmene je zde ponechan jako zajımavost, kterak lze jednoduse vytvorit
Webovy broswer. Prozatım se zde mohou objevovat problemy s ArcGIS JavaScriptem! Z
vyse uvedenych duvodu neosetreno. Nicmene ani tak pouzitelnost nenı ovlivnena.
2.3.7 Trıda QueryBuilder
Definice okna pro sestavovanı uzivatelskych SQL dotazu. Uzivatel si muze vysledny
SQL dotaz upravit v okne Vysledny dotaz, nicmene to nenı doporucovano vzhledem k
tomu, ze zde nenı mozna validace SQL dotazu. Trıda dedı od Windows.
Metody trıdy :
public QueryBuilder()
- implicitnı kontruktor trıdy.
private void treeView1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
Udalost, ktera vybıra prvky, do SELECT a nebo WHERE boxu. Na prvek je nutne pro
vyber udelat dvou-klik! V prıpade, ze uzivatel klikne na jmeno tabulky, je tato vyjimka
zachycena v catch bloku.
private void aktualizace()
Tato metoda pri kazdem svem zavolanı zobrazı v prıslusnem poli aktualnı stav dotazu,
zaroven zmena povolı tlacıtko provedenı dotazu, nebot’ se predpoklada, ze nebude-li uzivatel
24
dotaz nijak upravovat, mel by byt platny.
private void button15_Click(object sender, RoutedEventArgs e)
Udalost stisknutı tlacıtka, zavre okno kontroluje zde je v dotazu nejaky text. Delka je
vybrana z toho duvodu, ze musı jıt minimalne o text: Select * From a, coze je prave ale-
spon 15 znaku. Do budoucna zde bude umısten validator.
private void checkBox1_Checked(object sender, RoutedEventArgs e)
Prepne vyber z tabulek z prvku SELECT na podmınku WHERE (jen v prıpade, ze je jiz
v SELECT nejaky prvek vybran, do te doby je tento checkbox zakazan).
private void delBtn_Click(object sender, RoutedEventArgs e)
Tlacıtko, ktere smaze vse a uvede okno do stavu jako pri spustenı.
private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
Pri odskrtnutı Where checkboxu, se smaze cela oblast podmınky Where , to jak z jeho
boxu, tak i z vysledneho dotazu, a vybrane prvky se budou opet zapisovat do SELECT.
Nakonec box sam sebe zakaze.
Dale je zde oblast popisujıcı 27 udalostı pro jednotliva tlacıtka, ktera jsou vstupem
pro zapisky podmınky Where. Jedna se o cısla 0-9, matematicke znaky +, - , =, , *, ¿, ¡,
25
slozene jednoduche zavorky () a dale pak operatory IS, NOT, NULL, BETWEEN, LIKE,
SUM, COUNT, AVG.
Udalosti jsou ve tvaru:
private void buttonPRVEK_ktery_ma_byt_zobrazen_Click(object sender, RoutedEventArgs e)
{
WhereBox.Text = WhereBox.Text + "PRVEK";
}
2.3.8 Trıda App
Jedna se tak trochu o specifickou trıdu. Generuje se automaticky s projektem. Dedı
od Application a je specificka z toho duvodu, ze neobsahuje zadne viditelne metody ani
promenne. Jedna se o jakysi startovacı bod programu. Pres tento soubor je mozne nastavit
chovanı programu. Metoda Main nalezı teto trıde, nicmene je do nı generovana az pri
samotne kompilaci.
2.4 Vypis funkcı
Zakladnı vypis funkcı programu PMView.
• pripojenı k databazi (lokalnı a vzdaleny server)
• provedenı dotazu
• zavrenı okna
• vycistenı tabulky a opetovne pripojenı
26
• dotaz z databaze lze exportovat do XML a XSL (zde pomocı externı knihovny Ex-
celLibrary).
• zobrazuje data z databaze na WPF DataGrid
• dataGRID je mozne zobrazit nebo zavrıt pomocı checkboxu, to same platı i pro graf
• moznost simultanıho zobrazenı grafu a tabulky
• volba dotazu v TextBoxu
• zakladnı kreslenı grafu
• kreslenı grafu - nekolik dvojic
• barevnym kruhem se znazornuje zda je dataset prazdny nebo ne
• exportuje graf do png
• ve verzi PRO si uzivatel muze nacıst a pracovat s MXD a Shapefily, pokud ma licenci
• internetovy prohlızec na webovou aplikaci projektu COST (prozatım jen mesto Jih-
lava)
• atraktivnı Ribbon Menu, s moznostı pouzitı klavesovych zkratek pres klavesu Alt
• automaticka aktualizace - pri kazdem spustenı se kontroluje na webu nova verze
• Query Builder
• import do datasetu z XML
• html Help
27
3 Program PMView - uzivatelske rozhranı
Po spustenı programu se otevre zakladnı okno, v nemz probıha nasledna veskera prace
s databazı.
Okno je rozdeleno na tri casti. V hornı casti se nachazı ribbon. Ribbon (cesky oznacovany
jako ”pas karet”) je panel obsahujıcı tlacıtka a ikony, ktery je umısteny v hornı casti okna
aplikace. Panel obsahuje veskere funkce, ktere program poskytuje, usporadane do zalozek.
Ribbon byl vytvoren hlavne proto, aby byly uzivateli jednotlive funkce aplikace snadneji
a rychleji prıstupne za pouzitı mensıho mnozstvı kliknutı. Tım, ze jsou vsechny funkce
a prıkazy aplikace slouceny do souvisejıcıch skupin a umısteny pouze v jednom, snadno
rozeznatelnem mıste, uzivatel uz nemusı prohledavat nekolikaurovnova menu a mnozstvı
nastrojovych list, aby nalezl pozadovany prıkaz. Menu ve forme ribbonu bylo vyuzito v
programu Office 2007.
Pod ribbonem se nachazı okno Stav dat, zobrazujıcı stav pripojenı k databazi, a okno
Zobraz, kde je mozne zvolit typy vystupu dat.
28
Ve spodnı casti se pak nachazı Zobrazovacı oblast, kde se vykreslı graf nebo tabulka.
3.1 Prace s databazı
Po zvolenı zalozky Prace s databazı se zobrazı menu, kde je mozne nastavit pripojenı
k SQL serveru ci vytvaret SQL dotazy.
3.1.1 Pripojenı k databazi
Pro jakoukoliv praci s daty je nutne se nejprve pripojit k databazi. Po kliknutı na
ikonu Nastavte pripojenı k SQL serveru se otevre okno Pripojenı k serveru. Uzivatel zvolı z
nabıdky znazornene pomocı radioboxu Lokalnı server, FSv server ci Jiny vzdaleny server.
Po zvolenı Lokalnıho serveru se aktivuje Seznam lokalnıch serveru, ve kterem jsou vypsany
vsechny dosazitelne servery. K pripojenı se k FSv serveru je nutne mıt prihlasovacı udaje,
ktere se zadajı do aktivovanych polı. V prıpade zvolenı Jineho vzdaleneho serveru se zada
adresa vzdaleneho serveru. Pro zvolenı jakehokoliv serveru je pak jiz nutne jenom stisknout
tlacıtko Pripoj k DB.
29
3.1.2 SQL dotazy
Pro zıskanı dat z databaze je mozne vybrat si jeden z predem formulovanych dotazu
nebo si vytvorit novy SQL dotaz pomocı Query Builderu. Zakladnı dotazy se vyberou z
comboboxu, pricemz se ve vedlejsım okne vypıse dany SQL dotaz.
Pro sestavenı vlastnıho SQL dotazu se stiskne na ikonu Vytvorte SQL dotaz, otevre se okno
QueryBuilder. V Seznamu tabulek a sloupcu se vyberou sloupce. V prıpade, ze chce uzivatel
30
zadat podmınku pro vyber, se zaskrtne checkbox Za podmınky, ktera aktivuje okno Zapis
podmınky, do ktere se zapıse podmınka. Cely dotaz se zobrazı do spodnıho okna Vysledny
dotaz. Stisknutım tlacıtka Proved’ dotaz se vypne okno QueryBuilder, vybrana data se
zobrazı v tabulce.
31
3.2 Prace s daty
Po zvolenı zalozky Prace s daty se objevı ikony, ktere umoznı exportovat ci importovat
data. Vybrana data je mozne exportovat do formatu .XLS a .XML. Import je mozne provest
z formatu .XML.
3.3 Graf
Vybrana data je mozne znazornit pomocı grafu. Sisknutım ikony Graf se otevre Okno
pro tvorbu grafu.
Z nabıdky si uzivatel vybere veliciny a mesto, pro ktere chce zobrazit hodnoty, dale
zvolı typ grafu (histogram, sloupcovy, kolacovy, bodovy, liniovy, liniovy s vyplnı). Vybrane
dvojice se po stisknutı tlacıtka Pridej dvojici vypısı ve spodnım okne, po ukoncenı vyberu
se stiskne tlacıtko Hotovo/Zobraz. V prave casti Zobrazovacı oblasti se vykreslı pozadovany
graf.
32
Graf je mozne exportovat do formatu .PNG stisknutım ikony Exportuj graf.
3.4 Napoveda a podpora
V zalozce Napoveda a podpora se nachazı ikony Napoveda a O programu. Ty slouzı
uzivateli k zıskanı informacı o programu a jeho uzıvanı.
3.5 Web browser
K dispozici je take webovy prohlızec dat projektu OC10011 – Modelovanı urbani-
zovanych uzemı s cılem snızit negativnı vlivy lidske cinnosti, v soucasne dobe jen pro
mesto Jihlava. Prohlızec slouzı k znazornenı dat Land Use pro Jihlavu, predevsım rozvoj
obytnych, vyrobnıch, dopravnıch, rekreacnıch a ostatnıch ploch od roku 1970 do roku 2010.
Mapy jsou zpracovany pro jadrove uzemı, zachycujı vyvoj hranic mesta a hlavne hranic in-
33
travilanu. Data byla zpracovana take statisticky a je mozne zobrazit kolacove grafy vyvoje
ploch.
4 Zaver
Cılem projektu bylo vytvorit program, ktery by vyuzıvali studenti pri zpracovavanı
svych bakalarskych a diplomovych pracı v ramci projektu OC10011 – Modelovanı urbani-
zovanych uzemı s cılem snızit negativnı vlivy lidske cinnosti (2010–2012, MSM/OC), jehoz
hlavnım resitelem je doc. Ing. Lena Halounova CSc. Aplikace pracuje s databazı na serveru
geo1.fsv.cvut.cz, je mozne zıskavat z nı potrebna data, zobrazuje zakladnı statistiku dat
ve forme grafu, exportuje tabulky do formatu .XLS a .XML, grafy do formatu .PNG. Na
webu geo1.fsv.cvut.cz je mozne stahnout z prıslusnych slozek odladene jednotlive Release
verze.
V aktualnı verzi PMView 1.0.0.0 se nachazı nekolik chyb, ktere budou postupne od-
straneny. Jedna z chyb nastava pri importu souboru ve formatu .XML, u nekterych souboru
se aplikace chova nestandartne. Tento nedostatek bude odstranen ve verzi 1.0.0.1. V planu
34
jsou pak jeste dalsı upravy. Aplikace by tak v budoucnu mela obsahovat animace, dale by
se mela zpracovavat statistika pomocı MS SQL Serveru.
V Praze dne 29. kvetna 2012
35
Reference
[1] Svet hostingu Co je .NET framework . [online]. 2012, [cit:2012-5-22]. Dostupne z
URL: http://svet-hostingu.cz/2009/10/12/co-je-net-framework/
[2] Wikipedie Windows Presentation Foundation. [online]. 2012, [cit:2012-5-22]. Do-
stupne z URL: http://cs.wikipedia.org/wiki/Windows_Presentation_Foundation
[3] STURALA, A. Zacıname s WPF . [online]. 2012, [cit:2012-5-22]. Dostupne z URL:
http://www.vyvojar.cz/Series/3-zaciname-s-wpf.aspx
[4] Wikipedie Extensible Markup Language. [online]. 2012, [cit:2012-5-22]. Dostupne z
URL: http://cs.wikipedia.org/wiki/Extensible_Markup_Language
[5] NATHAN, A. WPF 4 Unelashed . SAMS, 2011.[cit:2012-5-22]. ISBN-10 : 0-672-
33119-5
[6] MARES, A. 1001 tipu a triku C# 2010 .Computer Press , 2011. [cit:2012-5-22].
ISBN 978-80-251-3250-0.
[7] PRATT, S. Mistrovstvı v C++. Computer Press, 2007. [cit:2012-5-22]. EAN
9788025117491
[8] SHARP, J. Microsoft Visual C# 2008 . Computer Press, 2009. [cit:2012-5-22].
[9] AGARWAL, V. V., HUDDLESTON, J. Databaze v C# 2008: pruvodce pro-
gramatora. Computer Press, 2009.[cit:2012-5-22]. ISBN 9788025123096
[10] Stackoverflow.com Steps to construct WPF ribbon based ap-
plications . [online]. 2012, [cit:2012-5-22]. Dostupne z URL:
http://stackoverflow.com/questions/4766980/steps-to-construct-wpf-ribbon
-based-applications
36
top related