Próbuję użyć QGIS 2.14 do przyciągnięcia sieci drogowej do sześciokątnej siatki, ale otrzymuję dziwne artefakty.
Utworzyłem siatkę heksadecymalną z MMQGIS , komórki mają około 20 x 23 m. Buforowałem sieć dróg o 1 m i zagęszcziłem ją, aby węzeł pojawiał się co kilka metrów. Poniżej możesz zobaczyć, co próbuję osiągnąć. Jak widać, w niektórych przypadkach mogę go uruchomić: -
- niebieski to zagęszczona droga (linia buforowana)
- czerwony to wersja „szesnastkowa” - to właśnie chcę znaleźć
- szary to siatka heksadecymalna
Następnie użyłem nowej funkcji Snap geometrii, aby przyciągnąć węzły do najbliższego rogu sześciokąta. Wyniki są obiecujące, ale wydaje się, że istnieją przypadki, w których linia rozszerza się, wypełniając sześciokąt (lub jego część):
Powodem tego bufora jest to, że przyciąganie geometrii nie pozwala na przyciąganie do warstwy, której geometria jest inna. Na przykład nie można przyciągać węzłów na warstwie LINE do punktów na warstwie POINT). Najszczęśliwsze wydaje się przyciąganie POLYGONA do POLYGONA.
Podejrzewam, że drogi rozszerzają się, gdy jedna strona buforowanej linii drogi przeskakuje na jedną stronę komórki heksadecymalnej, a druga strona przeskakuje na drugą stronę komórki heksadecymalnej. W moim przykładzie najgorsze wydają się drogi, które przecinają zachód-wschód pod ostrym kątem.
Rzeczy, których próbowałem, bez powodzenia: -
- buforując sieć dróg o niewielką ilość, więc pozostaje wielokątem, ale jest bardzo cienki.
- zagęszczanie komórek szesnastkowych (więc na krawędziach znajdują się węzły, nie tylko w rogach)
- zmienianie maksymalnej odległości przyciągania (ma to największy efekt, ale nie wydaje mi się, aby znaleźć idealną wartość)
- używając warstw LINE, a nie POLYGONÓW
Uważam, że jeśli przejdę na używanie tylko warstw LINE, to działa przez chwilę, a następnie ulega awarii. Wydaje się, że zapisuje swoją pracę na bieżąco - niektóre linie zostały częściowo przetworzone.
Czy ktoś zna inny sposób przyciągania punktów na linii do najbliższego punktu na innej warstwie linii / wielokąta, idealnie bez potrzeby korzystania z postgres / postgis (chociaż rozwiązanie z postgis również byłoby mile widziane)?
EDYTOWAĆ
Dla każdego, kto chciałby spróbować, umieściłem tutaj na Dropbox startowy projekt QGIS . Obejmuje to warstwę siatki heksadecymalnej i warstwy linii zagęszczonych. (Sieć drogowa pochodzi z OSM, więc można ją pobrać za pomocą QuickOSM, np. Jeśli potrzebujesz uzyskać oryginał, aby nie zagęścić dróg).
Pamiętaj, że jest to OSGB (epsg: 27700), który jest zlokalizowanym UTM dla Wielkiej Brytanii, z jednostkami w metrach.