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