Suite

Comment modifier/modifier facilement le type de données de champ existant dans les fichiers de formes ?

Comment modifier/modifier facilement le type de données de champ existant dans les fichiers de formes ?


J'édite les tables attributaires de plusieurs fichiers de formes pour un futur projet. J'ai besoin que les types de données de champ soient très spécifiques et uniformes parmi tous les fichiers de formes. Je rencontre le problème que la majorité des tables attributaires de ces fichiers de formes sont toutes différentes en termes de nom de champ et de type de données de champ.

J'ai ajouté un nouveau champ, puis j'ai utilisé la calculatrice de champ pour copier les données de l'ancienne colonne de champ dans la nouvelle. Cependant, un champ (StationID) m'a posé problème car la copie de l'identifiant de la station avec des lettres et des chiffres (exemple 113a) ne sera pas copiée dans un flottant dans le nouveau champ ajouté. Et c'est bien, je peux corriger cela manuellement et inclure les informations dans une colonne Notes séparée, mais pas lorsqu'il y a plus de 1 000 entrées dans lesquelles cela se produit.

Existe-t-il une commande, un outil ou une fonction qui pourrait "facilement" changer le type de données du champ de chaîne/texte en flottant ?


Pour ArcGIS :

Je ne connais aucune méthode pour modifier une définition ou une longueur de champ en place. J'envisagerais probablement d'intégrer les fichiers de formes dans une base de données géographique personnelle, puis de modifier les définitions de champ avec MS Access. Attention cependant, le piratage avec Access n'est absolument pas pris en charge par Esri (mais reste très efficace lorsqu'il est utilisé correctement).

Pour le problème StationID, vous ne pourrez jamais convertir une chaîne alphanumérique comme113adans un flotteur, parce que leunerend la valeur illégale (dans n'importe quelle base de données et pour n'importe quel logiciel).

Vous pouvez plonger dans une expression python de pré-traitement en utilisant chaîne.translate() et dépouillez les lettres, vous laissant avec113. Le lien Comment supprimer la virgule des champs combinés qui devraient être nuls? aidera à construire l'expression.

>>> importer la chaîne >>> s = '1123h34523j' >>> s.translate(Aucun, string.letters) '112334523'

Sources:

  • Supprimer les lettres de la chaîne
  • chaîne.lettres
  • Réorganiser en permanence les champs dans les données (shp, gdb)

Voir la vidéo: Langage C: cour 9 structures et accès au fichier