Temat nr 3: ArcView: Bazy danych, budowanie zapytań SQL
Przebieg zajęć:
Ćwiczenia z ArcView.
Praca z tabelą „właściowści warstwy”.
Dodawanie tabeli do projektu.
Łączenie tabel (połączenia jeden do jednego, jednen do wielu, wiele do jednego).
Sortowanie danych.
Zapisywanie tabel a łączenie tabel.
Omówienie narzędzia do budowania zapytań do bazy danych (rodzaje pól, wartości, operatorów).
Budowanie zapytań w celu wyświetlenia szukanych elementów na mapie.
Praca z tabelą „właściwości warstwy”
Z każdą warstwą na mapie powiązana jest tabela atrybutów, w której zawarte są dane tekstowe na temat obiektów tej warstwy. Według tych danych możemy później klasyfikować obiekty na mapie, lub wyszukiwać interesujące nas elementy mapy. Jeżeli w tabeli właściwości warstwy nie mamy interesujących nas danych musimy te dane pobrać z innej tabeli, a następnie połączyć ze sobą dwie tabele.
Ćwiczenie: Korzystając z istniejącego projektu c:\esri\av_gis30\avtutor\arcview\qstart.apr i tabeli c:\esri\av_gis30\avtutor\arcview\qstart\sales.dbf zróżnicować na mapie United States, stany w zależności od wartości sprzedaży w danym stanie za poprzedni rok, zawartej w kolumnie total w tabeli sales.dbf.
Po otwarciu projektu, mapy United States i tabeli atrybutów warstwy US States widać, że w tej tabeli nie mamy żadnych informacji na temat sprzedaży za poprzedni rok. Dane te znajdują się w innym pliku na dysku twardym.
Dodawanie tabel do projektu
Aby dodać tabelę do projektu, w oknie projektu wybieramy ikonkę tables i przycisk Add. Otwieramy tabelę c:\esri\av_gis30\avtutor\arcview\qstart\sales.dbf. Otworzona tabela nie jest jeszcze powiązana z mapą i nie możemy na razie używać jej do analiz. Musimy powiązać tabelę z tabelą atrybutów odpowiedniej warstwy.
Łączenie tabel.
Aby połączyć dwie tabele ze sobą muszą one posiadać kolumny o takich samych wartościach. W naszym przypadku łączenia tabel możemy dokonać na podstawie dwuliterowego skrótu nazwy stanu. Nazwa kolumny nie ma w tym przypadku znaczenia (nie musi być identyczna w obydwu tabelach). W tabeli źródłowej (tej, którą chcemy dołączyć) zaznaczamy kolumnę według której będziemy dokonywać połączenia. W naszym przypadku jest to kolumna state z tabeli sales.dbf. Następnie otwieramy tabelę atrybutów warstwy US States i również zaznaczamy kolumnę według której dokonamy łączenia( state_abbr). Następnie wybieramy ikonkę połącz (join)
. Pola z tabeli sales.dbf zostały przeniesione do tabeli atrybutów warstwy i możemy ich teraz użyć do analizy. Aby dokończyć ćwiczenie musimy dokonać końcowych ustawień w edytorze legendy.
Rozróżniamy kilka rodzajów łączenia tabel. W opisanym wyżej ćwiczeniu mieliśmy do czynienia z łączeniem typu jeden do jednego, gdzie jednemu wierszowi z jednej tabeli odpowiadał dokładnie jeden wiersz w drugiej tabeli. Jest to tak zwane łącznie jeden do jednego. Drugi rodzaj łączenia to tzw. łączenie wiele do jednego. Z łączeniem takim mamy do czynienia np. w przypadku gdy chcemy do każdego z miast dodać dane na temat województwa, w którym znajduję się miasto. W tabeli źródłowej mamy tyle wierszy ile województw, a w tabeli przeznaczenia mamy więcej wierszy(tyle ile miast). W tym przypadku proces łączenia nie różni się niczym od wcześniej przedstawionego. Program sam rozpoznaje czy to jest łączenie jeden do jednego czy wiele do jednego.
Ćwiczenie. Skorzystaj z projektu c:\esri\av_gis30\avtutor\arcview\qstart.apri warstwy c:\esri\av_gis30\avtutor\arcview\qstart\uscities.shp i tabeli c:\esri\av_gis30\avtutor\arcview\qstart\states.dbf. Na mapie Stanów Zjednoczonych w tabeli atrybutów dotyczącej miast dodaj do każdego miasta informację na temat stanu, w którym dane miasto się znajduję.
Trzecią relacją między tabelami jest relacja jeden do wielu. Mamy z nią do czynienia np. gdy chcemy połączyć tabelę z listą lokatorów z tabelą zawierającą adresy i numery budynków (w jednym budynku mieszka kilku lokatorów). Jeżeli łączenia dokonamy w sposób przedstawiony powyżej program do każdego z budynków przypisze tylko pierwszego lokatora, odpowiadającego danemu adresowi budynku, którego napotka w tabeli źródłowej. Aby temu zapobiec należy zamiast łączenia tabel dokonać tzw. wiązania.
Ćwiczenie. Korzystając z projektu c:\esri\av_gis30\avtutor\arcview\qstart.apr, mapy Stanów Zjednoczonych, pliku c:\esri\av_gis30\avtutor\arcview\qstart\uscities oblicz ile mieszkańców jest w każdym ze stanów.
Aby policzyć sumę mieszkańców w poszczególnych stanach, z tabelą atrybutów warstwy US States musimy powiązać tabelę uscities.dbf. W tabeli źródłowej (uscities.dbf) zaznaczamy kolumnę state_name. Następnie zaznaczamy kolumną o tej samej nazwie w tabeli docelowej. Z menu table wybieramy Link. Po takim powiązaniu tabel, gdy zaznaczymy dowolną nazwę stanu w tabeli przeznaczenia, w tabeli źródłowej zaznaczą się automatycznie wszystkie miasta, które leżą w danym stanie. Aby zsumować liczbę mieszkańców w poszczególnych stanach zaznaczamy w tabeli uscities.dbf kolumnę, według której chcemy zrobić podsumowanie (state name). Naciskamy przcisk sumowania (Summarize). W otwartym okienku w polu Field wybieramy nazwę kolumny, z której wartości chcemy sumować( Pop1990). W polu Summarize wybieramy wartość Sum, naciskamy przycisk dodaj (Add) i OK. Powstanie nowa tabelka, w której mamy zsumowane liczby mieszkańców i liczbę miast (zawartych w tabeli)w poszczególnych stanach. Jeżeli w tabelce, na podstawie której dokonywaliśmy sumowania były zaznaczone jakieś wiersze, to do sumowania są brane pod uwagę tylko te zaznaczone wiersze. Dane w tabeli możemy posortować. Żeby zobaczyć stany z największą liczbą mieszkańców zaznaczamy kolumnę według której chcemy sortować (Sum_Pop1990) a następnie naciskamy przycisk sortuj malejąco (Sort Descending).
Zapisywanie a łączenie tabel.
Kiedy zapisujemy projekt, w którym połączyliśmy tabele, program nie zapisuje nowoutworzonych tabel tylko każdą tabelę oddzielnie i sposób ich połączenia. Dzięki temu wszystkie zmiany jakich dokonamy zarówno w tabeli źródłowej jak i wynikowej są automatycznie widoczne w otwieranym projekcie.
Narzędzie do budowania zapytań do bazy danych (query builder).
Program ArcView dostarcza narzędzia pozwalające na budowanie zapytań logicznych w celu wyszukania interesujących nas informacji. Aby zbudować takie zapytanie musimy nacisnąć ikonkę query builder
. W otwartym okienku możemy zbudować wyrażenie przy pomocy klikania na interesujące nas nazwy pól, wartości czy operatorów. Te same efekty możemy uzyskać przy pomocy ręcznego wpisywania zapytania.
Ćwiczenie: Korzystając z projektu c:\esri\av_gis30\avtutor\arcview\qstart.apr i mapy świata znajdź państwa o populacji powyżej 10 milionów i średniej długości życia większej od 65.
Po otworzeniu projektu i mapy świata otwieramy tabelę atrybutów warstwy Life Expectancy i naciskamy ikonkę query builder
. W otwartym okienku, z listy pól po lewej stronie wybieramy przez dwukrotne kliknięcie pole Pr_pop2000 określające populację. Następnie z operatorów wybieramy przycisk „>”większe niż i na koniec wpisujemy ręcznie 10000000. Następnie wybieramy operator „And” tak aby zaznaczył nam te wartości które spełniają obydwa warunki. W drugiej części wyrażenia najpierw wybieramy pole Life_exp, potem znak większy niż „>” i znowu ręcznie wpisujemy wartość 65. Na koniec naciskamy przycisk New Set. W tabeli i na mapie zostaną zaznaczone wszystkie państwa spełniające wpisane przez nas warunki. Jeżeli wystarczy aby jeden z warunków był spełniony zamiast operatora „And” należy użyć operatora „Or”. Zamiast pisać bardzo złożone zapytania możemy skorzystać z trzech przycisków do wyboru (New set, Add to set, Select from set)
New Set (nowy zestaw). Po wpisaniu zapytania i naciśnięciu tego przycisku usuwa dotychczasowe zaznaczenie wszystkich obiektów i podświetla wyłącznie obiekty spełniające ostatnio wpisany warunek.
Add to set (Dadaj do zestawu). W tym przypadku program dodaje warunki spełniające ten warunek do wcześniej zaznaczonych obiektów. Opcję tą można porównać z operatorem „and”, służy do rozszerzenia selekcji.
Select from set (Wybierz z zestawu). Po naciśnięciu tego przycisku z wcześniej zaznaczonych obiektów są wybierane te, które spełniają wpisany warunek. Jest to opcja przydatna do zawężania selekcji.
Ćwiczenie: Korzystając z poprzedniej mapy wyszukać państwa o populacji mniejszej od 5 milionów i o średniej długości życia mniejszej od 50 lat.
Ćwiczenie: Na mapie Atlanty znaleźć klientów o parametrach:
Rodzaj klienta - magazyn i sprzedaż większa od 60000 (Type = store i sales > 60000),
Rodzaj klienta - magazyn lub sprzedaż większa od 60000 Type = store lub sales > 60000,
Sprzedaż większa od 55000 i rodzaj klienta magazyn, restauracja albo kaiwarnia (Sales > 55000 i type = store lub restaurant lub cafe).
Aby rozpocząć selekcję należy najpierw otworzyć tabelę c:\esri\av_gis30\avtutor\arcview\qstart\customrs.dbf. Następnie w procesie geokodowania trzeba dodać nową warstwę, przedstawiającą klientów z tej tabeli na mapie Atlanty. Po wybraniu View/Geocode Addresses w następnym okienku w polu Address table wybieramy nazwę naszej tabeli (customrs.dbf) i naciskamy przycisk Batch Match. Program informuje nas o pomyślnym zakończeniu procesu geokodowania. Możemy teraz otworzyć tabelkę atrybutów nowopowstałej warstwy klientów i przystąpić do selekcji.