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. .
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”.
źródło
Odpowiedzi:
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 .
źródło