Eu tenho uma série de polígonos que quero girar.
Cada polígono possui um ângulo de rotação e um ponto de ancoragem (coordenada xy) armazenados como valores de campo.
Por acaso, todos os pontos de ancoragem estão em um vértice do polígono.
Qual é a melhor maneira de fazer isso usando o ArcGIS for Desktop e o ArcPy?
Sei que podemos rotacioná-los no modo de edição, mas não quero fazer todos manualmente, pois são todos diferentes.
Eu preferiria uma resposta Python para automatizá-la e incorporá-la ao meu fluxo de trabalho.
arcpy
arcgis-10.0
dklassen
fonte
fonte
Respostas:
Supondo que você esteja usando um sistema de coordenadas projetado ... (fica muito mais complicado se você não estiver)
Dado o ponto de rotação (X, Y) e o ângulo de rotação t, é necessário girar cada ponto no polígono em sequência. Supondo que o polígono seja construído de pontos no conjunto, de modo que conjunto = [(x0, y0), (x1, y1), (x2, y2) ...]
Você precisa girar cada ponto do conjunto, em sequência, para formar o conjunto '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]
Para girar, primeiro você precisa transformar o sistema de coordenadas em origem movendo o ponto de rotação para (0,0). (x, y) é o ponto a ser rotacionado.
Isso deve ser bastante simples de traduzir em um script python.
fonte
Aqui está uma discussão dos fóruns da Esri que pode ser uma solução para você. Procure a resposta Esri. Envolve converter os polígonos em rasters, usando a ferramenta Raster raster e converter novamente em polígonos. No entanto, pode haver alguma preocupação com os limites do polígono sendo alterados conforme você converte entre raster / vetor.
A boa notícia é que tudo pode ser feito em Python sem chamar o ArcObjects. E você deve poder usar o SearchCursor para capturar seus ângulos de rotação e pontos de ancoragem na tabela de atributos.
Enfim, apenas uma alternativa possível.
fonte