Suite

ModelBuilder - Itérer dans les tableaux pour joindre et exporter et conserver les noms de champ d'origine

ModelBuilder - Itérer dans les tableaux pour joindre et exporter et conserver les noms de champ d'origine


J'essaie de parcourir un fichier Excel avec plus de 200 feuilles et de joindre chacune à une couche de code postal. Je dois ensuite symboliser chacune de ces trois manières différentes et l'enregistrer dans un fichier de couche. Pour ce faire, j'ai besoin que le modèle conserve les noms de champ d'origine afin que la symbologie puisse être effectuée pour tous. Voici à quoi ressemble mon modèle

J'ai essayé plusieurs routes pour conserver les noms de champs. En utilisant la variable d'informations de champ de Make Feature Layer, je peux faire en sorte que les champs de la couche à laquelle je me joins (ZIP 2014) conservent leurs noms d'origine, mais les champs de la table utilisent toujours la convention "Sheet__fieldname" et les champs de la table sont ce sur quoi je dois fonder la symbolisation. J'ai décoché conserver les noms de champs complets pour les propriétés du modèle ainsi que pour les outils individuels, et cela ne fonctionne pas.

Ma seule solution de contournement a été d'exporter tout le modèle tel quel, puis de créer un autre modèle et d'utiliser une classe d'entités en classe d'entités pour modifier les noms de champ. Je crois vraiment qu'il doit y avoir un moyen de faire tout cela d'un seul coup.

J'utilise ArcMap 10.2.2


J'ai finalement réussi à le faire fonctionner en faisant de "Maintenir les noms pleinement qualifiés" une variable de l'environnement. Je l'ai fait à la fois pour la création de la couche d'entités et pour la copie d'entités au cas où. J'ai également créé une autre variable pour les informations de champ, mais je ne suis pas sûr que cela ait quelque chose à voir avec son fonctionnement. C'est vraiment frustrant que la modification des paramètres de l'environnement ne fonctionne pas à elle seule. Avant, je jure que le simple fait de modifier les paramètres des champs d'environnement fonctionnait, mais peut-être que je n'ai pas recréé exactement les paramètres que j'ai modifiés. Quoi qu'il en soit, créer une variable pour cela a fonctionné ! J'ai également pu créer des couches correctement pour toutes les classes d'entités.


Juste une idée, mais si votre sortie était une classe d'entités GeoDatabase plutôt qu'un fichier de formes, vous pourriez utiliser l'outil Modifier le champ pour la renommer dans le cadre du flux de travail du modèle ?


Vous devriez pouvoir utiliser cette option : http://resources.arcgis.com/en/help/main/10.1/index.html#//001w00000008000000

Je suis sûr que vous pouvez y arriver avec des mappages de champs si cela ne fonctionne pas, mais ce serait probablement beaucoup plus de lignes de code que ce à quoi vous vous attendiez.

https://geonet.esri.com/thread/30539


je ne sais pas si vous avez obtenu cette réponse. je ne suis pas très bon avec le modéliste, mais la base de votre problème semblait similaire à celle que j'avais

quand je faisais des couches pour chaque valeur unique dans un champ. J'utilisais la valeur pour la requête de désinfation et le nom. Mais j'ai rencontré des problèmes car la valeur pourrait être john/ street. Ainsi, lorsqu'il était utilisé dans la requête de définition, cela fonctionnait, mais lorsque j'essayais de l'utiliser pour le nom de fichier, il ne serait pas sauvegardé à cause du caractère /. La solution était essentiellement d'avoir deux listes séparées avec lesquelles je travaillais. Un qui serait le contenu original et serait utilisé dans la définition et un qui serait utilisé dans le.

Est-ce qu'il y avait peut-être que vous pourriez créer une liste de vos noms de champs d'origine dans le générateur de modèles qui peut être transformé en un dictionnaire. Je ne sais pas si cela est possible dans le constructeur de modèles. Mais si c'est

si vous aviez les champs suivants , Feild_A , Feild_B , Feild_c , Field_D.

vous pourriez faire une liste qui vous donnerait un sheet_feild_A , sheet_feild_B,sheet_feild_C,sheet_feild_D.

Ensuite, vous pourriez peut-être combiner vos deux listes dans un dictionnaire où la clé est le nom du champ d'origine et votre valeur est votre nouveau nom de champ. Feild_A = feuille_feild_A