J'ai une série de polygones que je veux faire pivoter.
Chaque polygone a un angle de rotation et un point d'ancrage (coordonnée xy) stockés en tant que valeurs de champ.
En l'occurrence, tous les points d'ancrage se trouvent sur un sommet du polygone.
Quelle est la meilleure façon de procéder à l'aide d'ArcGIS for Desktop et d'ArcPy?
Je sais que nous pouvons les faire pivoter en mode édition, mais je ne veux pas les faire tous manuellement car ils sont tous différents.
Je préférerais une réponse Python pour pouvoir l'automatiser et l'intégrer à mon flux de travail.
arcpy
arcgis-10.0
dklassen
la source
la source
Réponses:
En supposant que vous utilisez un système de coordonnées projeté ... (devient beaucoup plus compliqué si vous ne l'êtes pas)
Étant donné le point de rotation (X, Y) et l'angle de rotation t, vous devez faire pivoter chaque point du polygone en séquence. En supposant que le polygone est construit à partir de points dans l'ensemble tels que ensemble = [(x0, y0), (x1, y1), (x2, y2) ...]
Vous devez faire pivoter chaque point de l'ensemble, en séquence, pour former l'ensemble '= [(x0', y0 '), (x1', y1 '), (x2', y2 ') ...]
Pour faire pivoter, vous devez d'abord transformer le système de coordonnées à l'origine en déplaçant le point de rotation sur (0,0). (x, y) est le point à faire pivoter.
Cela devrait être assez simple à traduire en un script python.
la source
Voici une discussion sur les forums Esri qui peut être une solution pour vous. Recherchez la réponse d'Esri. Cela implique la conversion des polygones en rasters, à l'aide de l'outil Rotation du raster et la reconversion en polygones. Cependant, il peut y avoir une certaine inquiétude quant aux limites des polygones qui sont gâchées lors de la conversion entre raster / vecteur.
La bonne nouvelle est que tout cela peut être fait en Python sans appeler ArcObjects. Et vous devriez pouvoir utiliser SearchCursor pour saisir vos angles de rotation et points d'ancrage dans la table attributaire.
Quoi qu'il en soit, juste une alternative possible.
la source