Recursos rotativos no ArcGIS for Desktop usando o ArcPy? [fechadas]

10

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.

dklassen
fonte
Isso não é algo que eu fiz, mas você parece estar enfrentando um problema semelhante ao discutido em gis.stackexchange.com/questions/13383/…
PolyGeo
Você pode fazer isso com o ArcObjects. A solução programática seria aceitável?
Jakub Sisak GeoGraphics
Seus recursos estão em coordenadas geográficas ou projetadas?
blah238
Jakub - sim, uma solução programática seria preferida. Blah238 - coordenadas projetadas (NAD 83 UTM Zone 10)
dklassen
1
No script Python o cálculo do girado Y coordenar as necessidades de um mais sinal (adição) em vez do menos sinal (subtração): y_transprime = sin (t) * x_trans + Cos (t) * y_trans

Respostas:

10

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.

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

Isso deve ser bastante simples de traduzir em um script python.

blord-castillo
fonte
Para obter mais idéias sobre como fazer isso, há outra sessão de perguntas e respostas que pode ser útil chamada Como rotacionar o polígono sobre um ponto de ancoragem usando o script python? .
PolyGeo
Obrigado @ user23492 por observar o sinal incorreto. As alterações efectuadas (dois anos depois)
blord-castillo
1

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.

Baltok
fonte