Mam serię wielokątów, które chcę obrócić.
Każdy wielokąt ma kąt obrotu i punkt kotwiczenia (współrzędna xy) zapisany jako wartości pola.
Tak się składa, że wszystkie punkty kontrolne znajdują się na wierzchołku wielokąta.
Jak najlepiej to zrobić za pomocą ArcGIS na komputery stacjonarne i ArcPy?
Wiem, że możemy je obracać w trybie edycji, ale nie chcę robić ich wszystkich ręcznie, ponieważ wszystkie są różne.
Wolałbym odpowiedź w języku Python, abym mógł ją zautomatyzować i wbudować w przepływ pracy.
arcpy
arcgis-10.0
dklassen
źródło
źródło
Odpowiedzi:
Zakładając, że używasz rzutowanego układu współrzędnych ... (staje się znacznie bardziej skomplikowany, jeśli tak nie jest)
Biorąc pod uwagę punkt obrotu (X, Y) i kąt obrotu t, należy kolejno obracać każdy punkt wielokąta. Zakładając, że wielokąt jest zbudowany z punktów w zestawie, tak że set = [(x0, y0), (x1, y1), (x2, y2) ...]
Musisz obrócić każdy punkt w zestawie, aby utworzyć zestaw '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]
Aby obrócić, najpierw musisz przekształcić układ współrzędnych na początek, przesuwając punkt obrotu do (0,0). (x, y) to punkt, który należy obrócić.
To powinno być dość łatwe do przetłumaczenia na skrypt Pythona.
źródło
Oto dyskusja z forów Esri, która może być dla Ciebie rozwiązaniem. Poszukaj odpowiedzi Esri. Polega ona na konwertowaniu wielokątów na rastry, za pomocą narzędzia Obróć raster i konwersji z powrotem na wielokąty. Jednak mogą pojawić się pewne obawy, że granice wielokątów zostaną pomieszane podczas konwersji tam iz powrotem między rastrem / wektorem.
Dobrą wiadomością jest to, że można to wszystko zrobić w Pythonie bez wywoływania ArcObjects. I powinieneś być w stanie używać SearchCursor do chwytania kątów obrotu i punktów kontrolnych z tabeli atrybutów.
Tak czy inaczej, tylko możliwa alternatywa.
źródło