Ротаційні функції в ArcGIS для робочого столу за допомогою ArcPy? [зачинено]


10

У мене є ряд багатокутників, які я хочу обертати.

Кожен многокутник має кут повороту та опорну точку (координату xy), що зберігаються у вигляді значень поля.

Як це відбувається, всі точки прив’язки знаходяться на вершині багатокутника.

Який найкращий спосіб зробити це за допомогою ArcGIS для Desktop та ArcPy?

Я знаю, що ми можемо обертати їх у режимі редагування, але я не хочу їх робити вручну, оскільки всі вони різні.

Я вважаю за краще відповідь Python, щоб я міг автоматизувати його і вбудувати його в робочий потік.


Це я не те, що я зробив, але, здається, ви стикаєтесь
PolyGeo

Це можна зробити за допомогою ArcObjects. Чи було б прийнятним програмне рішення?
Jakub Sisak GeoGraphics

Чи є ваші особливості в географічних чи прогнозованих координатах?
blah238

Якуб - так, програмне рішення було б кращим. Blah238 - прогнозовані координати (NAD 83 UTM Zone 10)
dklassen

1
У сценарії Python для обчислення поворотної координати Y потрібен знак плюс (додавання) замість знаку мінус (віднімання): y_transprime = Sin (t) * x_trans + Cos (t) * y_trans

Відповіді:


10

Якщо припустити, що ви використовуєте проектовану систему координат ... (стає складніше, якщо ви не є)

Враховуючи точку обертання (X, Y) і кут повороту t, потрібно обертати кожну точку в полігоні послідовно. Припустимо, що багатокутник побудований з точок у такій множині, що set = [(x0, y0), (x1, y1), (x2, y2) ...]

Вам потрібно обертати кожну точку в наборі послідовно, щоб утворити набір '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]

Для обертання спочатку потрібно перетворити систему координат на початкове місце, перемістивши точку обертання на (0,0). (x, y) - точка, яку потрібно обертати.

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

Це має бути досить простим для перекладу в сценарій python.


Для отримання додаткових ідей, як це зробити, є ще одне запитання, яке може бути корисним під назвою Як я обертаю багатокутник навколо точки прив’язки за допомогою сценарію python? .
PolyGeo

Дякуємо @ user23492, що помітив неправильний знак. Зміна зроблена (через два роки)
blord-Castillo

1

Ось дискусія з форумів Esri, яка може бути вирішенням для вас. Шукайте відповідь Есрі. Він включає перетворення полігонів у растрові, використовуючи інструмент "Поворот растрового" та перетворення назад на багатокутники. Однак може виникнути певне занепокоєння з приводу перемежування меж полігону під час перетворення вперед-назад між растровими / векторними.

Хороша новина полягає в тому, що все це можна зробити в Python без виклику ArcObjects. І ви повинні мати можливість використовувати SearchCursor, щоб захопити кути повороту та точки прив’язки з таблиці атрибутів.

У всякому разі, просто можлива альтернатива.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.