Archive for the 'Projektowanie' Category

Published by Bolesław Maliszewski on 31 maja 2008

Projektowanie geobazy ESRI ArcGIS cz. 2 - Subtypes

Odrobina teorii

Witam w kolejnym artykule z cyklu “Projektowanie geobazy ESRI”. Dziś postaram się podjąć temat podtypów (ang. subtypes).

Do czego można użyć podtypu? Otóż, w systemach GIS występuje duża ilość różnych obiektów na mapie, które są ze sobą w różnych relacjach. Często zachodzi konieczność identyfikacji (np. z poziomu kodu aplikacji), z jakim obiektem mamy do czynienia. Proszę sobie wyobrazić listę obiektów w oknie aplikacji. Na każdym obiekcie z listy za pomoca funkcji z menu kontekstowego można wykonać jakąś operację. Naturalne jest, że na różnych obiektach wykonujemy różne od siebie operacje. To właśnie za pomocą identyfikacji podtypu, będziemy wiedzieli jaki to obiekt i co można z nim zrobić. Ponadto relacje w systemie ESRI są zakładane pomiędzy poszczególnymi podtypami obiektów. O samych relacjach dowiemy się więcej w kolejnym artykule.

W zasadzie tworząc geobazę, należy założyć, że każdy obiekt będzie posiadać przynajmniej jeden podtyp. Oczywiście każdy obiekt może posiadać wiele podtypów. Generalnie podtyp powienien rozróżniać obiekty o innych właściwościach lub innych połączeniach logicznych. Na postawie podtypu można również określić np. wygląd symbolu obiektu na mapie.

Zakładając, że obiekt na mapie to tak naprawdę rekord w bazie danych, można określić, że każdy z obiektów będzie posiadać kolumnę określającą podtyp. W tym przypadku jest to pole TYP.  Teraz wystarczy określić unikalne wartości dla pola TYP dla poszczególnych podtypów. Np. Budynek mieszkalny może mieć pole typ=12, a  budynek gospodarczy mieć typ=13.  Całość sporawadza się do tego, iż kolumna TYP będzie miała wartość 12 lu 13, zależnie od budynku. Teraz obiekty o polu TYP=12 będą wyświetlane na żółto, a obiekty o TYP=13 na niebiesko.

Ilość typów i zastosowanie jest zależna od potrzeb projektu.  W skrajnych przypadkach, w dużym projecie można mieć do czynienia nawet z 300 podtypami.

Podtypy są nieocenione podczas kodowania. Często z poziomu kodu, to jest właśnie najelegntsza i najłatwiejsza metoda na identyfikację obiektu i rozróżnienie funkcjonalności.

W praktyce

Uruchamiamy projekt, który utworzyliśmy w poprzednim artykule. Tworzymy pakiet Subtype jak na załączonym zrzucie poniżej. Kopiujemy klasę Budynek i umieszczamy ją w pakiecie Subtype w drzewie. Na schemacie UML poniżej można zobaczyć efekt końcowy. Za pomocą następnych zrzutów pokażę krok po kroku jak całość wykonać.

subtype

We właściwościach skopiowanej klasy Subtype::Budynek z zakładki atributes usuwamy wszystkie pola za wyjątkiem pola TYP. Dla pola TYP ustawiamy wartość domyślną (ang. Init. Value) - w tym przypadku jest to wartość 12. Od tego momentu w geobazie będzie można odwoływać się do bezpośrednio do klasy Budynek, gdzie  TYP=12. 

wartość podtypu

Osadzamy na schemacie klasę podtypu, a następnie używająć narzędzia “Association” tworzymy relację między klasą Budynek a jej podtypem. Efekt końcowy jest widoczny na pierwszym zrzucie. W właściwościach relacji ustawiamy pole Stereotype na Subtype.

relacja

Aby utworzona relacja na schemacie była wyświetlana z opisem <<Subtype>> należy z menu kontekstowego relacji wybrać opcję Shape Display Options.

display options

 Na poniższym zrzucie widać ustawienia, jakie zostały zastosowane w przykładzie. Kluczowe w tym przypadku jest zaznaczenie pola Stereotype. Proponuje poeksperymetować z ustawieniami, tak aby schemat UML był czytelny. W dalszych częściach, gdzie będę omawiać relacje ESRI wtedy będziemy używać innych ustawień wyświetlania.

display options

Po zapisaniu projektu, należy postępować tak jak w pierwszej części cyklu artykułów. W telegraficznym skrócie: należy wyeksportować projekt do XMI, następnie sprawdzić jego poprawność, po czym z poziomu ArcCatalogu zaimportować do osobistej geobazy, którą utworzyliśmy w pierwszym artykule. Następnie wyeksportować całość do pliku XML i zaimportować do docelowej geobazy w Oracle.

W efekcie we właściwościach klasy Budynek na zakładce Subtypes będzie wydoczne pole które identyfikuje podtyp, oraz predefiniowana wartość 12.

ArcCatalog

 

 

Published by Bolesław Maliszewski on 11 maja 2008

Projektowanie geobazy ESRI ArcGIS cz. 1

Wstęp

W tym artykule chciałbym przybliżyć techniki projektowania geobazy dla systemu ArcGIS. Na wstępie chciałbym zaznaczyć, iż planuję cały cykl artykułów poświęconych temu zagadnieniu. Niniejszy artykuł będzie wprowadzeniem w metodologię i przedstawi jeden ze sposobów w jaki projektowaliśmy strukturę geobazy.

Krótko o GISie

Systemy GIS w najbardziej klasycznej formie opierają się na cyfrowej mapie składającej się z obiektów, które są opisane różnymi atrybutami. Mapy te są powszechnie wykorzystywane przez zakłady energetyczne, telekomunikacyjne, gazownicze itp. do opisywania ich majątku sieciowego. Obiekty przedstawione na mapie stanowią swego rodzaju sieć. Możemy sobie wyobrazić na przykład słup energetyczny oraz przyłączony do niego przewód czy tez na przykład budynek. Każdy z tych obiektów posiada właściwości opisuje je – np. budynek posiada adres, a słup wysokość itd. Geobaza jest formą repozytorium przechowującego mapę wraz z naniesionymi na nią obiektami oraz informacje o nich. W naszym przykładzie zaprojektujemy i przygotujemy do populacji (wypełnienia danym)i geobazę zawierającą jeden obiekt - budynek.

MS Visio

Projektowanie geobazy poczynamy od zamodelowania obiektów, ich wyglądu, właściwości oraz zależności pomiędzy nimi. Naturalnie proces projektowania jest skomplikowany a model z pewnością będzie ulegać zmianom. Narzędziem za pomocą którego wykonamy model jest Microsoft Visio 2003. Model będzie przechowywany w pliku w formacie Visio i w każdej chwili będzie mógł być poddawany modyfikacjom.
W poniższej lokalizacji znajduje się rozszerzenie pakietu Visio o moduł eksportu do XMI, moduł sprawdzania poprawności modelu oraz szablon projektu.

http://support.esri.com/index.cfm?fa=knowledgebase.documentation.viewDoc&PID=43&MetaID=658

Projektowanie

Otwieramy ściągnięty plik szablonu projektu Visio i zapisujemy go pod nową nazwą. Od tej chwili w tym pliku będzie znajdować się nasz projekt.

szablon

Na zrzucie ekranu widać strukturę obiektów w systemie ESRI ArcGIS. Tworzymy nową zakładkę – w tym przypadku nazwiemy ją „obiekty”. Dobrym zwyczajem jest grupowanie definicji obiektów np. na zakładkę z obiektami punktowymi i liniowymi przyłączonymi do nich itp. Nie należy z tym jednak przesadzić - zbyt duża ilość zakładek znacznie spowolni proces otwierania i zapisu pliku projektu.

Za pomocą narzędzi z paska narzędzi „UML Static Structure” definiujemy klasę budynku dziedziczącą po klasie Feature. Każda z klas ma swoje właściwości. Proszę zwrócić uwagę na pole Shape w klasie Feature – to ono sprawia, że tworzony obiekt będzie posiadać reprezentacje graficzną (geometrię). Tym samym nie klasa budynek nie będzie zwykłą tabelą lecz obiektem graficznym. We właściwościach klasy Budynek, która dziedziczy po klasie Feature określimy jaki typ geometrii będzie przechowywać pole Shape oraz określimy inne parametry. Używając narzędzia dziedziczeni i innych podobnych proszę zwrócić uwagę, aby klasy początku i końce „strzałek” nie tylko stykały się ale również łączyły się z klasami. Dobrym pomysłem jest również pogrupowanie powstałych klas w „model explorerze” poprzez utworzenie folderów (tutaj ang. package) reprezentujących poszczególne typy klas, tabele klasy relacji, podtypy oraz datasety.

projekt

Poniżej zostały pokazane na zrzucie pola (właściwości) klasy Budynek. Naturalnie tutaj można dodać wszystkie niezbędne pola np. pola adresowe (ulica, miejscowość, kod, numer itp).

właściwości klasy

Na poniższym zrzucie widać dodatkowe ustawienia klasy Budynek. Pole GeometryType określa sposób reprezentacji graficznej. W tym przypadku jest to wielokąt (ang. polygon).

właściwości

Więcej informacji można znaleźć w dokumentacji, którą ściągnęliśmy w początkowej części artykułu („Case Tools Tutorial”).

W tym artykule skupimy się jedynie na aspektach związanych z przygotowanie geobazy. Sam projekt będzie możliwie jak najprostszy. W kolejnych artykułach postaram się bardziej przybliżyć aspekty związane ze strukturą obiektów, relacjami je łączącymi, podtypami (ang. subtype) itp.

Tak przygotowany projekt eksportujemy do formatu XMI za pomocą funkcji „ESRI XMI Export”. Instalacja tego modułu została opisana w odnośniku zamieszczonym na początku artykułu.

eksport

Zapis pliku XML w formacie XMI powinien zakończyć się poniższym komunikatem.

sukces

Tak zapisany projekt geobazy należy zweryfikować za pomocą makra „SematicsChecker”, którego instalacja została również opisana w odnośniku na początku artykułu.

SemanticsChecker

Jeśli wykonany model jest poprawny, sprawdzenie powinno się zakończyć komunikatem jak na załączonym poniżej zrzucie.

 

sukces

Nasz model jest już gotowy i może zostać zaimportowany do geobazy. Często się zdarza, że proces tworzenia geobazy wiąże się również z migracją istniejących danych. Dlatego konieczne jest rozdzielenie poszczególnych obiektów geobazy na osobne pliki (np. plik zawierający klasy, plik zawierający relacje, sieć geometryczną, plik z domenami). Wtedy będzie można bez przeszkód wykonać migrację danych do geobazy w formie wieloetapowej, gdzie osobno będą importowane dane, grafika a następnie podłączane relacje, po ty by na końcu wpiąć wszystko w sieć geometryczną. W tym celu utworzymy z poziomu ArcCatalogu lokalną bazę plikową (ang. File geodatabase) lub osobistą geobazę (ang. personal geodatabase). Zaletą tego drugiego jest to, iż dane są przechowane w jednym pliku w formacie Microsoft Access (MDB), wadą jest niestety wolniejsze działanie od bazy plikowej. W bazie plikowej dane są przechowane w podkatalogu w plikach.

nowa geobaza

Do utworzenia geobazy użyjemy narzędzia, które nie jest domyślnie dostępne na pasku zadań. Znajdziemy je używając opcji „customize” dostępnej w menu kontekstowym paska zadań, a następnie wyszykujemy pasek zadań „Case tools” oraz narzędzie „Schema Wizard”.

Mając aktywny węzeł bazy plikowej w drzewie obiektów w ArcCatalog Uruchamiamy „Schema Wizard” a następnie należy wybrać opcję przechowywania modelu w pliku XMI oraz wskazać wcześniej wygenerowany plik XML.

schema wizard

Poruszając się w kreatorze otrzymujemy podgląd importowanego schematu obiektów. To jest dobry moment, aby ustawić dodatkowe parametry, układ odniesienia i in. Możemy to wykonać za pomocą przycisku „Properties”.

podląd klas

Po zakończeniu kreatora i upewnieniu się w logach, że proces importu przebiegł poprawnie, w drzewie można zaobserwować nowe, zaimportowane obiekty jak na poniższym zrzucie ekranu.

zaimportowana geobaza

W tej chwili cały model jaki został zaprojektowany za pomocą MS Visio został przeniesiony do lokalnej bazy plikowej. W dalszej części użyjemy narzędzia Geodb Designer 2, które możemy ściągnąć ze strony:

http://arcscripts.esri.com/details.asp?dbid=13484

Po zainstalowaniu, należy uaktywnić pasek zadań o tej samej nazwie. Opcje w menu jak poniżej na zrzucie są dostępne tylko gdy aktywny jest główny węzeł geobazy. Należy również włączyć okno podglądu.

opcje GoedbDesignera

W menu są dostępne funkcje do eksportu poszczególnych elementów struktury geobazy. Jak same nazwy wskazują, można wyeksportować osobno klasy obiektów, klasy relacji, klasy sieci geometrycznej, topologii oraz domeny. W tym przypadku nie ma sensu uruchamiać innych opcji niż „Object Classes to XML”, gdyż nasza geobaza jest prosta i nie zawiera innych elementów niż klasy obiektów. Istotny jest fakt, iż po uruchomieniu każdej z funkcji, wynik jej pojawia się w oknie podglądu poniżej na zakładce „XML”. Należy uruchomić przycisk „Save as…” aby otrzymać plik XML z określonymi elementami geobazy.

Po eksporcie wszystkich elementów geobazy można przejść do tworzenia docelowej geobazy. Zazwyczaj taka baza będzie znajdować się na serwerze Oracle lub MS SQL. Teraz importując kolejno poszczególne pliki XML do docelowej bazy za pomocą można dokonać jej populacji bez przeszkód związanych z relacjami i siecią geometryczną. Innymi słowy import poszczególnych elementów geobazy będzie prawdopodobnie częścią migracji systemu do geobazy.

Import danych dokonujemy poprzez wczytanie pliku do okna podglądu XML, a następnie poprzez użycie opcji „Import From XML”.

import za pomoca GeodbDesignera

Powyższych funkcji można użyć do rozwoju geobazu i jej automatycznej rozbudowy. Przykładowo wystarczy dołożyć nową klasę w projekcie, wykonać powyższe kroki aby utworzyć pliki XML za pomoca GeodbDesignera. Następnie usunąć wpisy dotyczące już istniejących obiektów – zostawiając tylko te dotyczące nowej klasy. Tak przygotowane pliki można zaimportować do geobazy i uniknąć skomplikowanego procesu ręcznego tworzenia klas obiektów. Naturalnie pozostawienie definicji istniejących obiektów zaowocuje błędami podczas importu, ale powinno również przynieść pożądany rezultat, a nowo utworzona klasa powinna być poprawna.