Suite

Utilisation des mappages de champs pour ne pas reporter les champs

Utilisation des mappages de champs pour ne pas reporter les champs


J'ai essayé plusieurs fois de comprendre les mappages de champs et je continue d'être plutôt déconcerté. Je suppose qu'il peut être utilisé pour effectuer un géotraitement (dans mon cas, ce sera une jointure spatiale) et limiter les champs dans la classe d'entités en sortie. J'aimerais que la sortie ne contienne que les champs générés par la jointure spatiale (Join_Count, etc). J'ai essayé de créer des objets de mappage de champs vides et de les utiliser, mais ce n'est pas bon. Je préfère ne pas faire l'étape supplémentaire pour supprimer tous les champs, car dans un ensemble de données volumineux, cela prendra un certain temps.

Quelqu'un peut-il fournir de l'aide?


Pour répondre à la question sur le retour d'une sortie sans champs supplémentaires. Dans la boîte de dialogue, vous pouvez simplement tout supprimer du paramètre de carte de champ. Depuis Python, ne rien donner (Aucun, "", "#") à l'argument field_mapping suppose que vous voulez tout. Vous pouvez faire semblant un peu, avec quelque chose comme ça cependant :

arcpy.SpatialJoin_analysis(fc1, fc2, output_fc, 'JOIN_ONE_TO_ONE', 'KEEP_ALL', 'dummy_field', 'INTERSECT')

Ce qui n'ajoutera qu'un seul champ (mieux que tout), puis vous pourrez supprimer ce seul champ.

arcpy.DeleteField_management(output_fc, 'dummy_field')

Pour vous familiariser avec ce que vous faites avec les mappages de champs, je vous recommande d'effectuer une jointure spatiale ou une opération de fusion dans ArcMap. Visitez également la fenêtre Résultats du géotraitement. Cela vous aidera vraiment si vous pouvez d'abord simuler manuellement la jointure que vous souhaitez effectuer par programme.

Ils peuvent être difficiles à travailler mais en valent la peine. Comme vous l'avez supposé, la suppression manuelle de champs peut prendre du temps. J'ai écrit une fonction en Python qui supprime tous les champs sauf ceux que vous spécifiez et cela prend un certain temps à s'exécuter lorsqu'il y a beaucoup de champs dans une grande table (Je pourrais partager ça si ça peut aider). Je pense que la cartographie des champs est vraiment la voie à suivre car elle s'exécutera plus rapidement (quand il est temps de générer la sortie, elle ignore simplement les champs qui ne sont pas utilisés).

La jointure spatiale peut être délicate lorsque les deux couches ont le même champ et que le champ de l'une est plus restrictif (disons 50 caractères par rapport à un autre de 250 caractères), vous aurez donc peut-être besoin d'une partie de cette gestion juste pour éviter les collisions.

Voici quelques liens qui devraient vous aider à démarrer :

  • Un article du forum Geonet
  • Utiliser ArcPy FieldMappings pour la jointure spatiale ? (à partir de GIS ce site)
  • Jointure spatiale
  • Mappages de champs (général)
  • Mappages de champs (arcpy)
  • Article de blog

Voir la vidéo: Fs19 osa 2 pelto töitä