Published by Bolesław Maliszewski on 11 maja 2008 at 09:32 po południu
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.

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.

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).

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).

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.

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

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.

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

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.

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.

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”.

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.

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.

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”.

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.
Bukmacher on 28 października 2008 at 8:17 po południu #
Ciekawy post, dodalem twoj blog do ulubionych, bede tu teraz wpadal czesciej, pozdrawiam