J'ai un certain nombre de couches CAD non géoréférencées (voir cette question ) qui ont des fonctionnalités d'annotation de texte. J'ai créé un modèle pour convertir le texte en points, mais après avoir converti l'annotation en une classe de points, je constate que les points d'ancrage du texte CAD ne coïncident pas avec le centre du texte CAD (qui est l'endroit où les points appartiennent).
Par conséquent, je voudrais programmer (en utilisant ArcPy ou ModelBuilder) [déplacer] une entité par rapport à son emplacement actuel (delta x, y) en utilisant une valeur X, Y mesurée que je fournirai.
Cela me permettrait de ramener les points SIG à leur place, au lieu du point d'ancrage CAD décalé.
Comment puis-je accomplir cette tâche?
@PolyGeo a donné une excellente réponse en utilisant SHAPE @ XY IN 10.1, mais actuellement j'utilise 10.0. Des idées 10,0?
la source
Je remercie @ artwork21 de m'avoir conduit à ma solution finale. En fait, j'ai trouvé un script presque complet dans l'article d'aide en ligne d'ArcGIS 10.0 intitulé « Exemples de calcul de champ », répertorié sous la sous-catégorie « Échantillons de code - géométrie » et « Pour une classe d'entités points, déplacez la coordonnée x de chaque point de 100 »
Le script final que j'ai utilisé dans l'outil "Calculer le champ" de ModelBuilder était:
Expression:
où ShiftX et ShiftY sont des variables (en tant que paramètres) définies sur le canevas ModelBuilder.
Type d'expression:
Bloc de code:
Étant donné que tous les modèles fonctionnent sur un ensemble sélectionné, vous devriez également pouvoir le créer en tant qu'outil générique qui fonctionnera en conjonction avec d'autres modèles / outils dans d'autres sessions de création de modèles. Le modèle très simple que j'ai créé (en tant que "plugin" vers d'autres modèles pour décaler les valeurs de coordonnées) ressemble à ceci. De cette façon, je peux contrôler le décalage sur une base d'ensemble de sélection (comme défini dans d'autres modèles):
Cela a fonctionné comme un charme, merci à tous pour votre contribution!
la source
Vous pouvez également utiliser ce script de calculatrice de champ pour déplacer les emplacements d'entités:
XYsetVALUE (! SHAPE !,! X_COORD !,! Y_COORD!)
Vous pouvez inclure une méthode de calcul de champ supplémentaire dans votre modèle à l'aide de la fonction ci-dessus.
la source
J'ai adapté la solution pour déplacer / décaler des points dans une certaine direction (angle) et une distance donnée.
Ressemble à:
et être appelé comme shiftXYCoordinates (! SHAPE !,! Angle!, 5000), si vous avez un "angle" de champ pour vos entités ponctuelles (ou avec une constante bien sûr). L'angle doit être donné en degrés décimaux. 0 se déplacera "vers le haut", 90 "vers la droite", etc.
Assurez-vous également de sélectionner le nom du champ «Forme» avant de lancer :)
(Solution testée dans ArcMap 10.0 SP5)
la source
Comme vous pouvez le voir, c'est beaucoup plus facile dans 10.1 lorsque vous avez accès aux jetons de curseur.
la source
Cela fonctionne pour 10.0:
la source