Tengo una serie de polígonos que quiero rotar.
Cada polígono tiene un ángulo de rotación y un punto de anclaje (coordenada xy) almacenados como valores de campo.
Como sucede, todos los puntos de anclaje están en un vértice del polígono.
¿Cuál es la mejor manera de hacer esto usando ArcGIS for Desktop y ArcPy?
Sé que podemos rotarlos en el modo de edición, pero no quiero hacerlos todos manualmente, ya que son diferentes.
Preferiría una respuesta de Python para poder automatizarla e incorporarla a mi flujo de trabajo.
arcpy
arcgis-10.0
dklassen
fuente
fuente
Respuestas:
Asumiendo que está utilizando un sistema de coordenadas proyectadas ... (se vuelve mucho más complicado si no lo está)
Dado el punto de rotación (X, Y) y el ángulo de rotación t, debe rotar cada punto en el polígono en secuencia. Suponiendo que el polígono está formado por puntos en el conjunto, de modo que el conjunto = [(x0, y0), (x1, y1), (x2, y2) ...]
Debe rotar cada punto del conjunto, en secuencia, para formar el conjunto '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]
Para rotar, primero debe transformar el sistema de coordenadas en origen moviendo el punto de rotación a (0,0). (x, y) es el punto a rotar.
Esto debería ser bastante sencillo de traducir a un script de Python.
fuente
Aquí hay una discusión de los foros de Esri que puede ser una solución para usted. Busque la respuesta de Esri. Implica convertir los polígonos en rásteres, usar la herramienta Rotar ráster y volver a convertirlos en polígonos. Sin embargo, puede haber cierta preocupación acerca de que los límites del polígono se desordenen al convertir de un lado a otro entre ráster / vector.
La buena noticia es que todo se puede hacer en Python sin llamar a ArcObjects. Y debería poder usar SearchCursor para tomar sus ángulos de rotación y puntos de anclaje de la tabla de atributos.
De todos modos, solo una posible alternativa.
fuente