Mamy funkcje z danych ankietowych, które zawierają częściowe informacje 3d.
Najczęstszym przykładem jest 2D LineString reprezentujący drogę, która zawiera informacje o wysokości w niektórych punktach, w których była badana. Inne przykłady obejmują kształty dachu - MultiLineString, w którym niektóre kluczowe punkty mają przypisane rzędne z rzutu budynku, ale nie wszystkie.
Korzystając z PostGIS, który model danych zaleciłby Pan do przechowywania tego rodzaju informacji, aby był jak najbardziej dostępny, bez utraty lub generowania interpolowanych informacji?
Odpowiedzi:
Możesz zapisać niezmierzone wartości Z jako
'nan'::float8
. Na przykład:Może to jednak sprawić kłopoty, ponieważ wartości NaN nie zawsze są testowane lub obsługiwane przez twórców oprogramowania. Np. PostGIS nie może przeanalizować powyższej wersji WKT
źródło
Utwórz kolumnę geometrii wtórnej z trzema wymiarami, aby utrzymać wierzchołki linii, która ma wartości trzech rzędnych (potrójnych). Aby ten schemat działał, przyjmuje się następujące założenia:
Geometria, która jest poprawna, powinna wystarczyć, aby nie dopuścić do powielania punktów w liniach liniowych i braku przecięcia. Tak więc każda współrzędna będzie zachowywać się jak klucz pierwotny w celu identyfikacji wierzchołka w geometrii źródłowej.
Jest to również poprawne z modelu relacyjnego:
W przypadku multilinestringu sprawy mogą być nieco trudniejsze, ponieważ teraz musi istnieć dodatkowy stół z kompozytowym kluczem podstawowym:
Klucz podstawowy powyżej zapobiegnie wstawianiu zduplikowanych indeksów geometrii dla danej geometrii. Wyzwalanie / sprawdzanie zapobiegnie nieprawidłowym indeksom. Również wiersze tutaj muszą pochodzić z danych źródłowych, biorąc pod uwagę klucz obcy. Obowiązują wszystkie poprzednie zasady.
Uproszczenie polegałoby na zastosowaniu dodatkowej kolumny, ale nie o dobrej geometrii, ale o tym samym typie wartości Z zadeklarowanej jako tablica.
źródło