Mam Shapefile (składający się z głównych europejskich dróg) z około 250 000 segmentów, które muszę uprościć w celu opracowania. Ale nie mogę znaleźć sposobu, aby zrobić to właściwie.
Tak to wygląda:
i tak powinno to wyglądać:
W jakiś sposób muszę usunąć każdy punkt linii, który jest połączony z mniej niż 3 liniami (nie będącymi przecięciem), zachowując jednocześnie topologiczne połączenia między pozostałymi punktami. Jeśli ktoś ma pomysł, byłby bardzo wdzięczny!
Z poważaniem
EDYCJA: Próbowałem wdrożyć ideę @dkastl i udało mi się uzyskać tylko niepotrzebne węzły (węzły z tylko 2 sąsiadującymi liniami) z mojej sieci za pomocą poniższego kodu (generacja sieci pochodzi z bloga podmroku http://underdark.wordpress.com / 2011/02/07 / a-beginners-guide-to-pgrouting / ):
SELECT * FROM
(SELECT tmp.id as gid, node.the_geom FROM
(SELECT id, count(*) FROM network
JOIN node
ON (start_id = id OR end_id = id) AND (end_id = id OR start_id = id)
GROUP BY id ORDER BY id) as tmp
JOIN node ON (tmp.id = node.id)
WHERE tmp.count = 2) as unn_node;
Teraz muszę tylko połączyć linie. Nie mam jednak pojęcia, jak to zrobić. Wyobrażam sobie, że musi to być pętla, która dla każdego wiersza wyniku powyższego zapytania pobiera sąsiednie linie i łączy je. Następnie całkowicie przebuduje sieć i powtórzy proces, aż powyższe zapytanie zwróci pusty wynik.
Odpowiedzi:
Z pewnością powinieneś zastosować do swoich linii filtr ramer-douglass-peucker . Jest dostępny w PostGIS jako funkcja ST_Simplify . Wersja z zachowaniem topologii może być interesująca dla twojego przypadku. Powodzenia!
źródło