Obracanie funkcji w ArcGIS na komputery za pomocą ArcPy? [Zamknięte]

10

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.

dklassen
źródło
To nie jest coś, co zrobiłem, ale wydaje się, że masz do czynienia z podobną kwestią do tej omawianej na gis.stackexchange.com/questions/13383/…
PolyGeo
Możesz to zrobić za pomocą ArcObjects. Czy programowe rozwiązanie byłoby dopuszczalne?
Jakub Sisak GeoGraphics
Czy Twoje obiekty mają współrzędne geograficzne lub rzutowane?
blah238,
Jakub - tak, preferowane byłoby rozwiązanie programowe. Blah238 - przewidywane współrzędne (NAD 83 UTM Zone 10)
dklassen
1
W skrypcie Python obliczenie obróconej współrzędnej Y wymaga znaku plus (dodawanie) zamiast znaku minus (odejmowanie): y_transprime = Sin (t) * x_trans + Cos (t) * y_trans

Odpowiedzi:

10

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ć.

x_trans = x - X
y_trans = y - Y
x_transprime = Cos(t) * x_trans - Sin(t) * y_trans
y_transprime = Sin(t) * x_trans + Cos(t) * y_trans
x_prime = x_transprime + X
y_prime = y_transprime + Y

To powinno być dość łatwe do przetłumaczenia na skrypt Pythona.

blord-castillo
źródło
Aby uzyskać więcej pomysłów na to, jak to zrobić, istnieje inne pytanie i odpowiedź, które mogą się przydać pod nazwą Jak obrócić wielokąt wokół punktu kotwiczenia za pomocą skryptu python? .
PolyGeo
Dzięki @ user23492 za zanotowanie nieprawidłowego znaku. Zmiany dokonane (dwa lata później)
blord-castillo
1

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.

Baltok
źródło