Korzyści z funkcji Multipart?

28

Wieloczęściowe punkty, linie i wielokąty są implementowane w prawie każdym systemie GIS, ale jakie korzyści, jeśli w ogóle, zapewniają?

W relacyjnej bazie danych atrybuty współdzielone przez różne funkcje mogą być przechowywane raz, a identyfikatory używane do łączenia ich z oddzielnymi rekordami geometrii. Czy zatem funkcje wieloczęściowe są dziedzictwem płaskiego przechowywania danych?

alternatywny tekst

geografia
źródło

Odpowiedzi:

35

Jeśli twoje oprogramowanie nie obsługuje funkcji wieloczęściowych, być może będziesz musiał podjąć niezwykłe i skomplikowane działania, aby wykonać operacje przestrzenne. Na przykład przecięcie dwóch wielokątów może ogólnie mieć więcej niż jeden połączony komponent. Zarówno algorytmicznie, jak i koncepcyjnie wygodnie jest założyć, że takie przecięcie zwraca pojedynczy obiekt (wieloczęściowy wielokąt), a nie dowolną liczbę wielokątów. (Z tych samych powodów pomocne jest wspieranie różnych form cech zerowych i zdegenerowanych - na przykład wielokątów o zasięgu ale zerowym polu, a nawet wielokątów z lokalizacjami, ale ani zasięgu ani obszaru. Te rzeczy mogą wynikać z operacji geometrycznych; wspieranie ich eliminuje wiele skomplikowanych post-case-post-processingu i może zapobiec zniknięciu użytecznych informacji).

Z punktu widzenia relacyjnej bazy danych funkcje wieloczęściowe umożliwiają normalizację: gdy atrybut jest nierozerwalnie związany z kolekcją wielokątów, chcesz reprezentować tę kolekcję jako pojedynczy obiekt. Dobrym przykładem byłaby funkcja przedstawiająca prawie każdy kraj na świecie posiadający linię brzegową, ponieważ kraj ten prawdopodobnie obejmuje niektóre wyspy. Czy naprawdę chcesz zmusić RDBMS do stworzenia jednej kopii atrybutów kraju dla każdej małej wyspy? Najprawdopodobniej nie. Nie chcesz nawet (lub potrzebujesz) utrzymywać wielu kopii wskaźnika do atrybutów.

W jaki sposób reprezentowałbyś sieć lub rozgałęzione drzewo, gdyby nie skoordynowana wielolilinia?

Z punktu widzenia matematyki lub algorytmicznych struktur danych dopuszczenie funkcji wieloczęściowej jest uproszczeniem, a nie komplikacją. Aby obsługiwać wielokrotnie połączone wielokąty (pierścienie i wielokąty z „dziurami”), potrzebujesz już aparatu do reprezentowania wielokątów wieloczęściowych.

Wreszcie obiekty „wektorowe” i ich typowe „przedstawienie spaghetti” mają swoje źródło w teorii prostych kompleksów . (Dopiero poprzez to nieco wątłe powiązanie z teorią topologii termin „topologia” przekształcił się w GIS, który w przeciwnym razie zasadniczo nie korzysta z niczego z tej teorii.) Teoria ta wymaga cech wieloczęściowych i korzysta z nich. W rzeczywistości posiadanie tylko jednego komponentu nie jest częścią definicji prostego kompleksu, ale okazuje się być specjalną właściwością, z której korzystają niektóre z nich (na podstawie rangi zerowej grupy homologii). Jako taki, „pojedyncza część” nie jest właściwością definiującą, ale jest po prostu cechą topologiczną w tym samym sensie, że posiadanie pierścienia lub „dziury” w wielokącie jest cechą topologiczną (związaną z rangą pierwszej grupy homologii) .

Whuber
źródło
1
Bardzo miła odpowiedź. Nie jestem w 100% przekonany o używaniu funkcji wieloczęściowych do normalizacji bazy danych - każdy wielokąt nadal ma unikalne właściwości, takie jak powierzchnia i długość, a pytanie, takie jak „ile powierzchni Grecji składa się z wysp”, staje się trudne bez odpowiedzi podając atrybuty każdego wielokąta.
geographika
2
@geographika Wasz jest dobrym przykładem tego, dlaczego potrzebujemy elastyczności w reprezentowaniu bytów (przestrzennych lub nie) w bazach danych. Aby jeszcze bardziej ją rozciągnąć, można również argumentować, że poszczególne wielokąty należy „eksplodować” w ich pierścienie zewnętrzne i wewnętrzne, aby odpowiedzieć na pytania typu „ile powierzchni Grecji składa się z jezior?”. Każda struktura bazy danych sprawi, że niektóre zapytania będą łatwiejsze, a inne trudniejsze; część dobrego projektu bazy danych musi zatem obejmować rozważenie zamierzonego zastosowania bazy danych. Dobry (przestrzenny) DBMS zapewni mechanizmy konwersji między różnymi strukturami.
whuber
2
+1 Świetna odpowiedź. Warto jednak omówić wady wydajności funkcji wieloczęściowych. Weź klasę obiektów z polilinią na amerykańskich autostradach, w których cechy autostrad są podzielone na granicach stanu. Utwórz drugą klasę obiektów, rozpuszczając nazwę autostrady, dzięki czemu I-10 obejmie cały kontynent. Teraz porównaj wydajność narzędzia Identyfikuj. O ile strategia indeksowania przestrzennego ESRI nie ulegnie zmianie, będzie wolniejsza w wieloczęściowej klasie funkcji, ponieważ istnieje wiele innych MBR, które nakładają się na siebie. Badana jest każda współrzędna każdej cechy, której MBR pokrywa się z punktem.
Kirk Kuykendall
@Kirk Dobra uwaga. Twoje przykłady wskazują jednak na braki w technologii ESRI bardziej niż na problemy. Identyfikacja cechy za pomocą racjonalnie wydajnej, ale prostej struktury danych przestrzennych, takiej jak cztero-drzewo, powinna mieć wydajność O (log (N)) (po wstępnym buforowaniu przechowywanej struktury danych). Podział każdej z N cech (przypuszczalnie dużych) na średnią z K kawałków (przypuszczalnie umiarkowanych lub małych w porównaniu do N) zwiększa log (N) do log (N) + log (K), co - przy założeniu - jest praktycznie niezauważalny.
whuber
1
@Dandy Dziękujemy za podkreślenie różnicy między geometrią wieloczęściową a zwykłą kolekcją elementów. Nie sądzę, aby wszystkie typy elementów wieloczęściowych koniecznie „ograniczały” ich komponenty; jest to prawdopodobnie zależne od implementacji - co wskazuje, że pojęcie „wieloczęściowe” zawiera pewne subtelne odmiany.
whuber
12

Wyobraź sobie, że łączysz dane populacji z tabelą jednoczęściowych wielokątów reprezentujących kraje. W zależności od tego, jak wykonasz połączenie, albo każda wyspa uzyska pełną populację tego kraju, albo tylko jeden wielokąt zestawu uzyska pełną populację. Nie reprezentując kraju jako wieloczęściowego wielokąta, musisz albo podzielić populację (niepotrzebnie złożoną i niedokładną), albo zebrać razem wielokąty przed dołączeniem, w którym to przypadku zasadniczo znów otrzymujesz wieloczęściowy wielokąt.

Sean
źródło