Dwa dni temu zadałem pytanie o wewnętrzną kolejność przechowywania wierzchołków wielokąta w plikach kształtu ESRI. Na to pytanie udzielono odpowiedzi ( Czy wielokąty są przechowywane zgodnie z ruchem wskazówek zegara, czy przeciwnie do ruchu wskazówek zegara w pliku kształtu? ), A także odpowiedziano na nie w starym poście ( Tworzenie wielokąta (obrót w prawo czy nie) )
Ale teraz moje pytanie jest bardziej ogólne i nie wiem, czy ma unikalną odpowiedź. Czy kolejność zgodna z ruchem wskazówek zegara dotyczy tylko plików kształtów ESRI lub ogólnych formatów GIS? A co z wewnętrzną reprezentacją oprogramowania GIS? Na przykład, jeśli korzystam z QGIS i czytam * .shp zawierające wielokąty, przypuszczam, że wewnętrzna reprezentacja zewnętrznej granicy jest zgodna z ruchem wskazówek zegara, jak w oryginalnym pliku kształtu, ale co ze wszystkimi formatami plików obsługiwanymi przez QGIS? A dla ArcGIS? W przypadku, gdy istnieje format pliku z wielokątami przechowywanymi w kierunku przeciwnym do ruchu wskazówek zegara, jeśli pliki te są ładowane w QGIS, ArcGIS itp., Orientacja jest zmieniana wewnętrznie, więc jeśli na przykład czytam dane za pomocą PyQGIS, wielokąty są zgodne z ruchem wskazówek zegara zamówione?
Moim celem jest napisanie wtyczki do QGIS, ale źródłem danych mogą być pliki kształtów ESRI lub inne formaty. Ponieważ muszę sprawdzić kąty między kolejnymi bokami wielokątów za pomocą ich azymutów, muszę wiedzieć, czy kolejność jest zgodna z ruchem wskazówek zegara. Jednym z rozwiązań jest obliczenie powierzchni każdego wielokąta i, jeśli dobrze pamiętam, jeśli jest dodatnie, kolejność jest zgodna z ruchem wskazówek zegara, a jeśli ujemna, kolejność jest zgodna z ruchem wskazówek zegara.
Obliczanie obszaru nie jest intensywnym zadaniem, więc nie spowolni tak bardzo mojej wtyczki. Ale w szczególnym przypadku QGIS ktoś wie, czy przechowuje wielokąty zgodnie z ruchem wskazówek zegara, czy przeciwnie do ruchu wskazówek zegara, niezależnie od kolejności w oryginalnym źródle? Do tej pory pracuję z plikami kształtów ESRI i współrzędnymi w layer.getFeatures (). Geometry (). AsPolygon () są przechowywane zgodnie z ruchem wskazówek zegara dla zewnętrznej granicy i przeciwnie do ruchu wskazówek zegara dla otworów, tj. Jak w oryginalnym * .shp.
Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)
co oznacza, że Oracle jest przeciwnie do ruchu wskazówek zegara.