J'écris un script python pour ArcGIS 10.3. Je connais Scale tool
dans l'interface ArcGIS mais je ne trouve pas une telle commande arcpy. Ça existe?
Comme vous pouvez le voir sur l'image, les Scale tool
travaux sont différents de Buffer tool
- cela change la forme du polygone d'origine. La question est donc:
Puis-je utiliser Scale tool
(disponible à partir de l'interface ArcGIS) en utilisant arcpy?
arcgis-desktop
arcpy
polygon
M. Che
la source
la source
Réponses:
Je ne suis au courant de rien dans l'API arcpy qui fera la mise à l'échelle pour vous, mais écrire une fonction pour le faire serait relativement simple.
Le code ci-dessous effectue la mise à l'échelle des entités 2D et ne prend pas en compte les valeurs M ou Z:
Vous pouvez l'appeler avec un objet géométrique, un facteur d'échelle (1 = même taille, 0,5 = demi-taille, 5 = 5 fois plus grand, etc.) et un point de référence facultatif:
Utilisez-le conjointement avec des curseurs pour mettre à l'échelle une classe d'entités entière, en supposant que la classe d'entités de destination existe déjà:
edit: voici un exemple utilisant une approximation de votre géométrie de test, pour 0,5 et 5 fois:
Également testé avec des polygones multi-anneaux (trous)!
Une explication, comme demandé:
scale_geom
prend un seul polygone et boucle à travers chaque sommet, mesurant la distance de celui-ci à un point de référence (par défaut, le centroïde du polygone).Cette distance est ensuite mise à l'échelle par l'échelle donnée pour créer le nouveau sommet «mis à l'échelle».
La mise à l'échelle se fait en traçant essentiellement une ligne à la longueur mise à l'échelle du point de référence à travers le sommet d'origine, la fin de la ligne devenant le sommet mis à l'échelle.
L'angle et la rotation sont là parce qu'il est plus simple de calculer la position de la fin de la ligne le long d'un seul axe, puis de la faire pivoter «en place».
la source
bdist = refgeom.distanceTo(apnt)
. Pouvez-vous tester et corriger cela?