français

Procédure : convertir un champ de type chaîne en champ numérique

Résumé

Dans de nombreux cas, il est nécessaire de convertir un champ de valeurs de chaîne d’une table attributaire en valeurs numériques, généralement parce que le type de données d’origine n’est pas défini ou reconnu, afin de faire en sorte que les données puissent être correctement analysées. Dans un souci de conservation de l’intégrité des données (surtout dans le cas d’un partage ou d’une importation de données à partir de sources externes), la méthode de conversion des champs en d’autres types consiste à copier les données dans un nouveau champ du type souhaité.

Trois solutions sont décrites ci-dessous : la première solution concerne ArcGIS for Desktop versions 10.1 à 10.4.1, la deuxième solution s’applique à ArcGIS Pro 1.x et la troisième solution aux logiciels plus anciens (comme ArcView GIS 3.x.)

Procédure

ArcGIS Desktop versions 10.1 à 10.4.1

  1. Ouvrez ArcMap, puis ouvrez la table attributaire de la couche ou de la géodatabase fichier.
  2. Dans ArcMap, vous pouvez vérifier le type de données du champ en cliquant avec le bouton droit de la souris sur l’en-tête Field et en sélectionnant Properties (Propriétés). Dans cet exemple, un champ de type String (Chaîne) est converti en Double.
    A picture of the Field Properties window.
  3. En haut à gauche de la fenêtre Table, cliquez sur le bouton de liste déroulante Table Options (Options de la table) User-added image et sélectionnez Add Field (Ajouter un champ).
    1. Créez un champ de type Double.
    2. Indiquez un nom.
    3. Définissez une valeur dans les champs Precision (Précision) et Scale (Echelle) si vous le souhaitez.
    4. Cliquez sur OK.
  4. Cliquez avec le bouton droit sur l’en-tête du champ que vous venez de créer, puis cliquez sur Field Calculator (Calculatrice de valeurs de champs).
  5. Si le champ de type chaîne ne contient que des valeurs numériques, vous obtiendrez le résultat souhaité en procédant de la manière suivante :
    1. Entrez [Nom du champ de type chaîne] dans la fenêtre de l’expression.
    2. Cliquez sur OK.
  6. Toutefois, si le champ de type chaîne contient un mélange de caractères alphanumériques et de valeurs numériques, vous devez adopter une approche plus détaillée :
    1. Avec l’option Parser (Analyseur) définie sur VB Script et la case Show Codeblock (Afficher le bloc de code) cochée, copiez-collez le code ci-dessous dans la fenêtre de texte Pre-Logic Script Code (Code de script Pre-Logic) et remplacez String field name ci-dessous par le nom du champ à convertir. Conservez les parenthèses ouvrantes et fermantes :
    2. Dim String, Check
      String = [String field name]
      Check = IsNumeric(String)
      If Check = True then
      Output = CDbl(String)
      else
      Output = null
      End if
      Dans la fenêtre de l’expression (dans cet exemple, "DoubleV ="), entrez :
      Sortie
      
    3. La fenêtre Field Calculator (Calculatrice de valeurs de champs) ressemble à ce qui suit :
      A picture of the code entered into the Field Calculator window.
    4. Cliquez sur OK.
  7. Une fois le script terminé, le champ Double contient les valeurs issues du champ String (Chaîne).
Remarque :
Si un champ String (Chaîne) contient des valeurs comportant des caractères non numériques ou des symboles, la valeur de cette cellule reste zéro par défaut lors de la conversion vers le champ Double.

ArcGIS Pro 1.x

  1. Ouvrez un projet ArcGIS Pro. Ajoutez les données / la table applicables au projet.
  2. Cliquez avec le bouton droit sur les données / la table et sélectionnez Attribute Table (Table attributaire).
  3. Cliquez sur le bouton New (Nouveau) User-added image pour créer un nouveau champ. Dans la vue de listeFields (Champs), attribuez un nom au champ, définissez l’option Data Type (Type de données) sur Double et assurez-vous que l’option Number Format (Format de nombre) est définie sur Numeric (Numérique) (puis ajustez les paramètres souhaités). Si nécessaire, définissez les valeurs du domaine, de la valeur par défaut et de la longueur.
  4. Dans le ruban supérieur, utilisez l’option Save (Enregistrer) pour enregistrer les mises à jour apportées à la table et fermez l’onglet Fields (Champs).
  5. Cliquez avec le bouton droit sur l’en-tête du champ Double que vous venez de créer et sélectionnez Calculate Field (Calculer un champ). La boîte de dialogue de l’outil de géotraitement Calculate Field (Calculer un champ) s’ouvre.
  6. Si des valeurs (vides) figurent dans le champ String (Chaîne), sélectionnez un sous-ensemble ne les contenant pas avant d’effectuer le calcul et saisissez ce qui suit dans la zone de texte Expression :
    !!
    Vérifiez l’expression et exécutez l’outil.
Remarque :
L’exécution de l’outil est susceptible d’échouer si des valeurs Null (vides) figurent dans le champ String (Chaîne). Pour plus d’informations, reportez-vous au document de l’aide Web d’ArcGIS Pro, Créer un champ et appliquer un domaine et une valeur par défaut.

ArcView 3.x

Pour convertir un champ de type chaîne en un champ numérique, créez un champ numérique et copiez les valeurs depuis le champ d’origine vers le nouveau champ.
  1. Ajoutez un champ numérique à la table.
    1. Ouvrez la table et sélectionnez Start Editing (Ouvrir une session de mise à jour) dans le menu Table .
    2. Sélectionnez Add Field (Ajouter un champ) dans le menu Edit (Mettre à jour).
    3. Dans la boîte de dialogue Field Definition (Définitions de champs) :
      1. Indiquez un nom approprié pour Name (Nom), par exemple « surface ».
      2. Définissez Type sur Number (Nombre).
      3. Définissez Width (Largeur) sur un nombre approprié, par exemple, 32.
      4. Définissez Decimal Places (Décimales) sur le nombre souhaité, par exemple, 6.
      5. Cliquez sur OK.
    4. Sélectionnez Stop Editing (Fermer la session de mise à jour) dans le menu Table et enregistrez les mises à jour.
  2. Utilisez Field Calculator (Calculatrice de valeurs de champs) pour copier les valeurs vers le nouveau champ et les convertir en nombre.
    1. Ouvrez la table et commencez la mise à jour via l’optionStart Editing (Ouvrir une session de mise à jour), si nécessaire.
    2. Sélectionnez le champ Number (Nombre).
    3. Sélectionnez Calculate (Calculer) dans le menu Field (Champ).
    4. Cliquez deux fois sur le champ de type chaîne dans la liste Fields (Champs).
    5. Définissez Type sur String (Chaîne).
    6. Faites défiler la liste Requests (Requêtes) et cliquez deux fois sur AsNumber.
L’expression finale doit ressembler à ce qui suit :
	[Strng_fld].AsNumber
  1. Cliquez sur OK.
  2. Sélectionnez Stop Editing (Fermer la session de mise à jour) dans le menu Table et enregistrez les mises à jour.

Informations associées