Wielokąty Voronoi, które kończą się w nieskończoność?


18

Pracowałem nad implementacją skryptu voronoi.py (tłumaczenie kodu Steve'a Fortune przez Billa Simona). Według łącza QGIS jest to zasadniczo ten sam kod, z którym pracuję, ale sposób generowania wielokątów, które mogą rozciągać się do nieskończoności, różni się między nimi. W przypadku QGIS zakładam, że jakiś prostokąt ograniczający jest generowany w pewnym stopniu poza zasięgiem punktu serwisowego. W moim przypadku generuję fałszywe punkty serwisu jako okrąg otaczający interesujące go punkty. Punkty koła mają promień dwa razy większy niż zasięg punktów miejsca. Wyniki między nimi są pokazane na załączonym rysunku, implementacja QGIS po lewej stronie i moja implementacja po prawej stronie. Przykłady Voronoi.

Jak widać, implementacja QGIS wytwarza dziwne wielokąty, które nie mają punktów serwisu (patrz serwis 473 jako przykład w obu implementacjach). To oczywiste złe, ale nie jestem pewien, czy moja implementacja jest poprawna. Ponieważ nie mam dostępu do licencji ArcInfo dla ArcMap, nie mogę porównać tego, co ArcMap generuje natywnie, i nie widzę sposobu na dołączenie pliku kształtu punktu strony do przetestowania przez kogoś. Więc jeśli ktoś ma jakiś komentarz na temat mojego użycia „koła nieskończoności” w celu wymuszenia wielokątów krawędziowych w porównaniu z „prostokątem nieskończoności”, byłbym wdzięczny. Co więcej, jeśli ktoś jest zainteresowany testowaniem danych wyjściowych na innej platformie GIS, mogę podać plik kształtów punktów, z których korzystałem.


Wydaje się, że część problemu polega na tym, że wielokąty poza punktami strony zachodzą na siebie, więc gdy są symbolizowane bez wypełnienia, pojawiają się jako odrębne wielokąty. Poniższy rysunek pokazuje, co się stanie, gdy zostanie wybrany wielokąt wokół ośrodka 473 i 415. Tak więc oryginalne pytania pozostają, ale pojawia się nowa zmarszczka.


Jest to błąd (lub „niekompletność”), poprawne wyniki w QGIS, jeśli używany jest bufor 0%. To, co nadal wymaga rozwiązania, to to, czy gęsty wzór kołowych „punktów nieskończoności” da taki sam wynik, jak prostokątne „krawędzie nieskończoności”.

wprowadź opis zdjęcia tutaj


Chciałbym wypróbować twoje dane punktowe. Moje testy nie wykazują takiego zachowania.
podmroku

Mam gotowy plik zip, skontaktuj się ze mną przez e-mail na Dan_Patterson@carleton.ca i mogę go przesłać do ciebie. Myślę, że dodałem 10% bufor podczas uruchamiania voronoi w QGIS.

Może mógłbyś przeformułować swoje aktualne pytanie (po aktualizacji 2).
podmroku

Świetna robota. Mam nadzieję, że w jakiś sposób udostępnisz swój kod społeczności.
Michalis Avraam

zobacz poniższy link w odpowiedzi, musiałem zaktualizować, ponieważ ESRI zabił oryginalne wątki

Odpowiedzi:


10

Udało mi się potwierdzić, że moja implementacja przynajmniej jest zgodna z ArcGIS (ale wymaga licencji ArcInfo). Implementacja QGIS jest błędna, jeśli używana jest odległość bufora. Dla osób korzystających z ArcGIS z licencją ArcView zestaw narzędzi dla Voronoi i / lub Delaunay można znaleźć jako Narzędzia do triangulacji .


W kodzie QGIS Voronoi było kilka błędów. W QGIS 3.2.2 zastosowano wiele poprawek. Byłoby ciekawie usłyszeć, gdyby to pomogło.
Håvard Tveite
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.