Uproszczenie geometrii (uogólnienie)

22

Jakie są zalecane sposoby uproszczenia geometrii? Pamiętając o rzutach i na przykład upraszczając geometrie stanu.

Słyszałem o konwersji na projekcję „w równej odległości”, która umożliwia uproszczenie bez zniekształceń, a następnie powrót do wybranej projekcji.

John Weldon
źródło
4
Nie jestem pewien, ale „uogólnienie” może być bardziej opisowym znacznikiem. Uproszczenie, przynajmniej w kontekście ArcGIS, jest metodą zapewniania poprawności topologicznej. Wikipedia twierdzi, że uproszczenie jest częścią Kartograficznej Generalizacji. en.wikipedia.org/wiki/Cartographic_generalization
Kirk Kuykendall
Świetna sugestia @Kirk
John Weldon

Odpowiedzi:

11

Jak wspomniano Glennon, standardowym algorytmem do tego jest Douglas-Peucker , który jest domyślnym algorytmem stosowanym w oprogramowaniu takim jak PostGIS (tj. GEOS) via St_Simplify, ArcGIS via Generalizei GRASS via v.generalize. Artykuł w Wikipedii zawiera również linki do implementacji języka Python .

GRASS obsługuje wiele różnych algorytmów, jak wyjaśniono na stronie pomocy dla v.generalize .

W kwestii projekcji myślę, że w tym przypadku jest to czerwony śledź, który można zignorować. Jedyne, co przychodzi mi do głowy, to potencjalnie zagęszczające linie, które zapobiegają ich nadmiernemu uproszczeniu.

scw
źródło
3

Jeśli przez „uproszczenie” rozumiesz prostą redukcję liczby punktów, użyj podstawowego algorytmu filtrowania, takiego jak filtr Peuckera Douglassa. Przydatny link do tego: http://mapshaper.org/

Jeśli przez „uproszczenie” masz na myśli uzyskanie prostszego kształtu, algorytmy filtrowania nie zawsze są odpowiednie. Należy zastosować bardziej zaawansowane algorytmy generalizacji . Niektóre dokumenty dotyczące takich algorytmów można znaleźć tutaj: http://generalization.icaci.org/ , z kilkoma przykładami wyników: http://generalisation.icaci.org/index.php/results . Tylko kilka z tych algorytmów jest zaimplementowanych we wspólnym oprogramowaniu komercyjnym GIS. Niektóre są dostępne za pomocą tego: http://webgen.geo.uzh.ch/

Julien
źródło
strony aci.ign.fr nie są dostępne. Czy wiesz, gdzie możemy znaleźć przykłady „zaawansowanego algorytmu generalizacji”, o którym wspominasz?
radouxju,
Adres URL się zmienił, sprawdź: generalisation.icaci.org
Julien
2

Jeśli upraszczasz geometrię z powodu ograniczeń mocy obliczeniowej komputera, możesz rozważyć wygenerowanie mipmap z powiązanymi maskami alfa dla każdej geometrii na różnych poziomach.

Jon Bringhurst
źródło
Bardzo interesujące, czy byłbyś gotów opracować?
John Weldon,
Cóż, aby to zrobić, musisz zrasteryzować każdą geometrię wektorową w mapę bitową dla każdego poziomu, na który pozwalasz użytkownikom powiększać i pomniejszać mapę. Następnie zamiast rysować geometrię wektorową dla każdego poziomu w kółko, po prostu renderujesz bitmapę. Tak więc obliczenia rasteryzacji geometrii (co jest drogie, jeśli masz masę wierzchołków) wykonuje się z góry zamiast za każdym razem, gdy użytkownik wykonuje akcję. Maska alfa pojawia się na obrazie podczas rysowania mapy bitowej - jest używana, więc rysowany jest tylko sam kształt.
Jon Bringhurst
1

To trudny temat, ponieważ musisz wziąć pod uwagę jakąś rozdzielczość swojego zestawu danych. Kiedy wierzchołek geometrii jest równy innemu wierzchołkowi? Nigdy nie słyszałem o konwersji i ponownej konwersji, chociaż byłby to interesujący test.

Proste geometrie są zgodne z OGC, geometriami, które się nie przecinają, aw przypadku wielokątów, geometriami, które są odpowiednio zorientowane, dla zewnętrznej powłoki (powłok) i wewnętrznej powłoki (powłok), a następnie.

George Silva
źródło