Suite

Convertir une annotation en une entité linéaire ?


Cela peut sembler une question étrange, mais le résultat final sera un fichier GPX qui doit être utilisé pour délimiter des zones dans un Mapathon, dans lequel l'éditeur n'utilise que des fichiers GPX.

Ma question est:

Est-ce que quelqu'un sait comment convertir mon couche d'annotations représenter les noms de grille à l'intérieur des polygones à une classe d'entités, représenter le texte sous forme de lignes ? Sens; le texte doit être "écrit" avec des lignes contenant des informations spatiales réelles. Mon espoir est de créer une classe d'entités contenant les lignes représentant le texte, telles qu'elles apparaîtraient dans ma couche d'annotations, mais constituées de lignes avec des coordonnées. L'image ci-dessous ne montre que les annotations dans mes cellules de grille.

J'utilise ArcMAP, mais Qgis et d'autres logiciels potentiels pourraient être inclus. N'hésitez pas à demander si vous voulez que je développe davantage l'énoncé du problème.


Solution pour licence avancée uniquement :

Annotations :

Outil:

Résultat:

Convertir les polygones de sortie en polylignes/points si nécessaire


Comme je suis un débutant en matière d'arcpy, j'ai essayé une autre solution de contournement qui, bien qu'elle soit un peu moche, m'a conduit à une solution raisonnable. Je suis passé par ces étapes.

  1. J'ai créé la grille et affiché les étiquettes à la bonne échelle que je voulais.

  2. Exporté la carte sous forme d'image, un tiff de bonne résolution.

  3. Ajout de l'image à la carte et géoréférencé en fonction de l'emplacement de la grille déjà chargée dans la TOC.
  4. Après le géoréférencement, j'ai utilisé le Con outil. Ici, j'ai sélectionné l'image géoréférencée comme Raster conditionnel en entrée. Comme l'expression j'ai dit queValeur = 0doit être sélectionné et multiplié par une valeur constante de 1. J'ai sélectionné leValeur = 0puisque c'était la valeur de la police noire. Cela signifiait que j'avais maintenant une image raster uniquement avec les écritures d'étiquette.
  5. Ensuite, je suis allé de l'avant et j'ai utilisé raster en ligne, puis raster en polygone, puis raster en ligne.
  6. Maintenant que toutes mes étiquettes et les cellules de la grille ont été vectorisées, j'ai exporté le calque vers un fichier GPX. Voila…

Je ne connais pas de moyen prêt à l'emploi pour le faire, mais vous pouvez le faire en python en procédant comme suit :

  1. Convertir l'annotation de classe d'entités en classe d'entités points (fc)
  2. À l'aide de deux curseurs imbriqués, utilisez le curseur de recherche pour parcourir chaque point fc et obtenir les coordonnées x/y, puis imbriquez le curseur d'insertion pour créer de nouveaux points x distance à l'est et à l'ouest du premier point jusqu'à ce que vous atteigniez la distance maximale à la grille bord
  3. Définissez l'ID commun pour chaque ensemble de points à l'étape 2 et mettez à jour un champ IDOrder pour définir la direction de la ligne (par exemple, e->w ou w->e). Cela pourrait utiliser un curseur de mise à jour. Vous pourriez probablement définir le point central à l'avant avec le centre IDOrder = 3 que les deux points au w pourraient être 2 et 1 (allant e à w) et les deux points au e de IDOrder 3 pourraient être 4 et 5 (allant w à e).
  4. Enfin, sur chaque ensemble de points de grille, utilisez la méthode python Points to Lines pour connecter les points


Voir la vidéo: QuickDemo: Converting Labels to Annotation and Changing Them (Octobre 2021).