Poszukujesz strategii uogólnienia do tworzenia konturów w PostGIS?
22
Mam zestaw danych o budowaniu śladów wektorowych z zestawu danych rastrowych. Zestaw danych jest obecnie tylko wektorową reprezentacją danych rastrowych. Chciałbym, aby zbiór danych wielokątów zawierał tylko wierzchołki w rogach budynku. Próbowałem użyć polecenia Uprość w PostGIS z ograniczonym powodzeniem.
Istnieje wiele algorytmów poświęconych uproszczeniom budynków. Możesz zajrzeć na tę stronę w celu zapoznania się z nią. Zobacz także to pytanie . Możesz użyć:
Uproszczenie konturu budynku: polega na rekurencyjnym usuwaniu zbyt krótkich krawędzi konturu i wydłużaniu sąsiednich krawędzi. Przykład:
Algorytm najmniejszego otaczającego prostokąta: polega on na zastąpieniu geometrii budynku najmniejszym otaczającym prostokątem. Ten prostokąt można również przeskalować do początkowego obszaru budynku. Przykład:
Algorytm kwadratu: polega na zastosowaniu lekkiego obrotu krawędzi, aby rogi były idealnie wyrównane. Przykład:
Te transformacje mogą wystarczyć dla Twoich potrzeb. Ich połączenie może być interesujące.
Jestem prawie w 100% pewien, że żaden z tych algorytmów nie jest zaimplementowany w PostGIS. Niektóre są implementowane w rozwijanej przeze mnie bibliotece Java Opencarto . Daj mi znać, jeśli chcesz to przetestować!
Czy możesz krótko wyjaśnić, do jakich algorytmów się odwołujesz w Opencarto dla wspomnianego „Uproszczenia obrysu budynku”. Nie mogłem znaleźć bezpośrednich informacji na wiki lub w kodzie w Opencarto.
„Jeśli zbuforujemy dużą ilość, a następnie odwrócimy bufor o tę samą ilość, otrzymamy coś, co ma podobny kształt do oryginału, ale bez marszczących się kawałków”.
to ciekawe podejście i wydaje się stosunkowo skuteczne. Dzięki za wskaźnik, będę mógł go użyć. Twoja odpowiedź byłaby lepsza, gdyby zawierała proste zdanie zawierające odniesienie do podstawowej idei i nie było tylko linkiem.
Uniknie tworzenia pochodnych geometrii (w szczególności wielokątów), które są nieprawidłowe http://www.postgis.org/documentation/manual-1.5SVN/ST_SimplifyPreserveTopology.html
powinien być lepszym wyjściem niż Uproszczenie
najpierw sprawdź swoją geometrię
ST_IsSimple(geometry geomA);
źródło
Coś takiego może załatwić sprawę:
http://blog.opengeo.org/2010/11/22/removing-complexities/
źródło