У меня есть серия полигонов, которые я хочу повернуть.
Каждый многоугольник имеет угол поворота и опорную точку (координату XY), сохраненные в качестве значений поля.
Как это происходит, все точки привязки находятся на вершине многоугольника.
Каков наилучший способ сделать это, используя ArcGIS for Desktop и ArcPy?
Я знаю, что мы можем вращать их в режиме редактирования, но я не хочу делать их все вручную, поскольку они все разные.
Я бы предпочел ответ Python, чтобы я мог автоматизировать его и встроить в свой рабочий процесс.
arcpy
arcgis-10.0
dklassen
источник
источник
Ответы:
Предполагая, что вы используете проекционную систему координат ... (становится намного сложнее, если вы не)
Учитывая точку поворота (X, Y) и угол поворота t, вам нужно последовательно повернуть каждую точку в многоугольнике. Предполагая, что многоугольник построен из точек в наборе, таких что set = [(x0, y0), (x1, y1), (x2, y2) ...]
Вам необходимо повернуть каждую точку в наборе, последовательно, чтобы сформировать множество '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]
Чтобы повернуть, сначала вы должны преобразовать систему координат в начало координат, переместив точку вращения в (0,0). (x, y) - точка, которую нужно повернуть.
Это должно быть довольно просто, чтобы перевести на сценарий Python.
источник
Вот обсуждение на форумах Esri, которое может быть решением для вас. Ищите ответ Esri. Он включает в себя преобразование полигонов в растры, использование инструмента поворота растра и обратное преобразование в полигоны. Тем не менее, может возникнуть некоторая обеспокоенность по поводу того, что границы многоугольников будут испорчены при переходе назад и вперед между растром / вектором.
Хорошей новостью является то, что все это можно сделать в Python без вызова ArcObjects. И вы должны быть в состоянии использовать SearchCursor для захвата ваших углов поворота и точек привязки из таблицы атрибутов.
Во всяком случае, просто возможная альтернатива.
источник