Le blog francophone consacré
aux technologies Esri

Conseils & Astuces ArcGIS Online - N°27

N° 27 - Modifier le schéma d'un service d'entités hébergé sur ArcGIS Online

Une des fonctionnalités clé de la plateforme ArcGIS Online est de permettre aux utilisateurs de publier leur tables et leur couches SIG en tant que services hébergés sur la plateforme de Cloud d'Esri.  Lorsque vous avez publié un tel service d'entités (feature service), il peut arriver que vous ayez besoin de modifier certaines caractéristique du schéma de ces couches ou des ces tables comme par exemple: ajouter/modifier/supprimer un champ, un nom d'alias, une valeur par défaut, un domaine de valeurs, un modèle d'entité... Une solution consiste à supprimer le service puis à republier le service d'entité, mais il y a plus simple et plus rapide. Je vous propose de voir la démarche à suivre.

Accéder à la page d'administration de votre service d'entités

Pour pouvoir modifier le schéma d'une couche ou d'une table d'un service d'entités, il faut tout d'abord accéder à la page d'administration de votre service. Celle-ci n'est accessible qu'à 2 conditions:
- vous devez vous authentifier avec le compte ArcGIS Online qui est propriétaire de ce service,
- votre service d'entités ne doit pas être public (tout au moins le temps de faire les modifications)

  1. Commencez par vous connecter à votre portail ArcGIS Online (en cochant l'option "Rester Connecté").
     

        
  2. Après vous être connecté, identifiez dans vos contenus le service d'entités à modifier puis affichez les détails de l'élément.
       

        
  3. Cliquez ensuite sur la couche ou la table à modifier puis sur la commande "URL du service"
     

       
  4. Dans l'URL du service, ajoutez "/admin/" entre "/rest/" et "/services/" pour basculer dans l'interface d'administration.
     

    La page est quasiment identique, mais elle propose désormais l'accès à des opérations d'administration et en particulier l'opération "Update Definition".
      
Modifier la définition des champs de votre couche (ou table)

  1. Cliquez sur la commande "Update Definition" se trouvant en bas de la page.
     
    La description JSON de la couche s'affiche alors dans une zone de texte que vous allez pouvoir modifier. Il est recommandé de faire une copie de ce contenu (vers un fichier texte par exemple) pour la ré-appliquer en cas d'erreur.
   
 

Exemple 1: Modifier l'alias d'un champ

  1. Admettons que vous souhaitiez modifier le nom d'alias du champ "DATE_INSPECTION" pour mettre le libellé "DATE D'INSPECTION". Identifiez la définition de ce champ puis modifiez la propriété "alias" comme ceci:
     

       
  2. Avant de valider vos modifications, il vous faudra également modifier la valeur de la propriété "lastEditDate" en mettant la valeur "null" comme ceci:
     

        
Cliquez maintenant sur le bouton "Update Layer Definition" pour valider vos modifications. La description de la couche doit maintenant refléter ce nouveau nom d'alias.
 

Exemple 2: Ajouter un domaine de valeur sur un champ

  1. Admettons que pour cette couche, je souhaite associé un domaine avec 3 valeurs pour le champ "POSITION".
     

      
  2. En procédant de la même manière que précédemment, à l'aide de la chaîne JSON suivante, je peux définir la propriété "Domain" de mon champ "POSITION".
     

     
    Vous remarquerez également que l'on a spécifié une valeur par défaut pour le champ en spécifiant une valeur pour la propriété "defaultValue".
  3. Avant de valider vos modifications, vous n'oublierez pas de modifier la valeur de la propriété "lastEditDate" en mettant la valeur "null".
      
  4. Dorénavant, après validation de mes modifications, les utilisateurs de la couche disposeront d'une liste de 3 valeurs (et 3 libellés) pour ce champ dans toutes les applications permettant la consultation ou la mise à jour de ces données.
     


Exemple 3: Ajouter un nouveau champ

  1. Admettons maintenant que vous souhaitiez ajouter un nouveau champ dans votre couche.
      
  2. Il suffira de procéder de la même manière que précédemment en identifiant la zone de texte décrivant les champs de la couche puis en ajoutant la description JSON d'un champ comme dans l'exemple ci-dessous:
     

     
    Nous rajoutons ici un champ "ETAT_EQUIPEMENT" en précisant son nom, son alias, son type, sa longueur, sa valeur par défaut...
     
  3. Avant de valider vos modifications, vous n'oublierez pas de modifier la valeur de la propriété "lastEditDate" en mettant la valeur "null". 


Remarque:

Pour supprimer un champ, il suffira de retirer la partie de la chaîne JSON qui décrit ce champ. Vous noterez toutefois que les champs réservés (comme "OBJECTID" par exemple), ne peuvent être supprimés.



Bonne route sur ArcGIS Online !

Pour retrouver l'ensemble des Conseils & Astuces ArcGIS Online, cliquez sur ce lien

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article:

7 comments :

Anonyme a dit…

Bonjour,

Merci pour cet article.
J'avais une question concernant l'ajout de domaines via le code fourni.
Est-il possible d'inclure plusieurs domaines et si oui, comment écrire la syntaxe ?

Merci,

Bonne journée

Gaëtan Lavenu a dit…

Bonjour,

Un champ ne peut être associé qu'à un seul domaine. C'est en ajoutant la description en JSON de ce domaine dans la propriété "domain" que vous pouvez associer un domaine à un champ (comme décrit dans l'article). En revanche, différents champs de la table peuvent être associés à différents domaines, toujours en suivant la syntaxe indiqué dans l'article.

Laet a dit…

Bonjour

est ce que la propriété "nullable" (autoriser les valeurs nulles) peut etre modifier dans la definition?? j aimerais passer de "true" à "false" pour plusieurs champs
merci

fab a dit…
Ce commentaire a été supprimé par l'auteur.
fab a dit…

Bonjour,

Je détère un vieux post à propos d'une fonction que je n'arrive pas à appliquer sur mes données AGOL

Je souhaite attribuer des valeurs par défaut à certain de mes champs

Par ex sur cette exemple je souhaiterai afficher "Linéaire" par défaut" quand j'enregistre (bien mis "null" dans Lastedit), la valeur "defaultValue" : null revient automatiquement (cf ex ci dessous).

Y a t'il un codage spécifique pour prendre en compte les valeurs par défaut, ou autre chose à modifier plus haut dans le code?

Merci beaucoup



"name" : "Type_des",
"type" : "esriFieldTypeString",
"alias" : "Type_desordre",
"sqlType" : "sqlTypeOther",
"length" : 50,
"nullable" : true,
"editable" : true,
"visible" : true,
"domain" :
{
"type" : "codedValue",
"name" : "ponct_lin",
"codedValues" : [
{
"name" : "Ponctuel",
"code" : "Ponctuel"
},
{
"name" : "Linéaire",
"code" : "Linéaire"
}
]
},
"defaultValue" : null

Gaëtan Lavenu a dit…

Bonjour,

Cela devrait marcher, à moins que ce champ soit le champ utilisé comme "template" lors de la création de vos entités. Aujourd'hui, si il s'agit d'un service hébergé sur votre portail, il y a un moyen plus simple pour modifier les domaines ou les valeurs par défaut d'un champ. En effet, en passant par l'interface du portail (description de votre élément puis onglet "données" puis en cliquant sur le bouton "Champs") vous pourrez faire l'équivalent de ce que je décris dans cet article effectivement un peu ancien maintenant.

N'hésitez pas à contacter le support technique d'Esri France si toutefois vous ne parveniez pas à modifier cette valeur par défaut par une méthode ou par l'autre.

Cordialement,

Gaëtan Lavenu

Gaëtan Lavenu a dit…

Bonjour,

Oui, il y a eu des évolutions sur les règles de sécurité dans les navigateurs web récents concernant la conservation de l'authentification lors de l'ouverture d'un nouvel onglet. Désormais, il fait fournir un token dans les paramètres de l'URL pour accéder à l'interface d'administration Rest sur votre service. Cette méthode est toujours possible mais il faut obtenir prélablement un token via l'API Rest à l'aide de l'opération GenerateToken ce qui n'est pas pratique. Le plus simple aujourd'hui c'est d'ajouter ou de supprimer des champs directement depuis l'interface du portail en allant sur l'onglet "Données" puis "Champs" de votre élément de contenu.